PDA

Просмотр полной версии : Клад для ZX с оригинальными уровнями, как в Rise Out



Гаррий
29.03.2021, 13:02
Друзья, существует ли игра Клад для ZX Spectrum, в которой уровни повторяют оригинал этой игры - Rise Out с компьютера MSX?

Точно знаю, что такие варианты игры есть для Корвета, БК и некоторых других компов, но все аналоги для ZX, которые я смог найти, имеют другой дизайн уровней.

Речь про такие уровни, повторяющие оригинальные уровни Rise Out:
https://telegra.ph/file/c92f1c0fd13f8286b57bd.jpg
https://i.ytimg.com/vi/o-S2bIvKn84/hqdefault.jpg
https://im0-tub-ru.yandex.net/i?id=ca0aeb6cb44778d0931f5971b928ea9c&n=13
и др.

PS. Поиск по форуму, как обычно, помочь не смог.

Black Cat / Era CG
29.03.2021, 13:42
Не такой? https://youtu.be/oJdUpMOLRNg

Гаррий
29.03.2021, 14:24
нет, увы. Другие уровни.

Bedazzle
29.03.2021, 15:26
По количеству ячеек 32х22 + инфострока хорошо вписывается в спековский экран.
Если действительно никто раньше не портировал, то странно.

https://i.imgur.com/au9QEZy.png

Гаррий
29.03.2021, 17:18
По количеству ячеек 32х22 + инфострока хорошо вписывается в спековский экран.
Если действительно никто раньше не портировал, то странно.


Да, и порты есть. Но, почему-то, все с другими уровнями.

Stl75
29.03.2021, 18:59
Привет всем...

Возможно, что-то из этого...
Три игры - в стиле Lode Runner...

Скорее всего -
Rise out from Dungeons...

https://vtrd.in/release.php?r=2afa5b6a61067e30ae03ea42cee8658a
https://vtrd.in/release.php?r=cb43a284dd1a4e97d51138934c9dc547
https://vtrd.in/release.php?r=021b173270fa2e42658115e17846bbcb

OMu4
29.03.2021, 19:18
Таковская ещё была:

75083

https://vtrd.in/release.php?r=5223085fcb66e1939218d1419c3d4da8

Гаррий
29.03.2021, 20:25
Нет, этих всех я видел, не то. У некоторых правильная механика, но тех самых уровней нет. Зачем-то все собственных уровней понаделали.

Bedazzle
29.03.2021, 23:51
Нет, этих всех я видел, не то. У некоторых правильная механика, но тех самых уровней нет. Зачем-то все собственных уровней понаделали.

Так может попробовать заменить уровни на правильные?
Где хорошая механика?

Гаррий
30.03.2021, 00:10
Тоже об этом подумываю. Выбрать порт с самой правильной механикой и заменить уровни. Пока с этой точки зрения не тестировал их.

Или самому написать))

hobot
30.03.2021, 03:12
Выбрать порт с самой правильной механикой и заменить уровни.
Только вот почему надо (совершенно не понятно) сравнивать игру с названием Rise Out с серией игр с названием КЛАД??? Это заведомо - какая то притянутая за уши " не сбыточная" хотелка... Вы либо порт Rise Out с MSX для спектрума делайте с уровнями и механикой 1 в 1, либо Клад(ы) ... и тогда (о чудо!) нет никаких проблем и \ или претензий, ага?

БКашные КЛАДЫ можно пощупать тут > http://hobot.pdp-11.ru/gamgal.htm <
Для УК-НЦ так же есть несколько вариантов игры.
https://r-games.net/uknc/g_uknc/31565-klad.html
https://r-games.net/uknc/g_uknc/31567-klad-baranov-dg.html

Это я к тому написал, что ИМХО: серия игрушек КЛАД и прародитель (возможно) Rise Out - это сильно разные игрушки от совершенно разных и независимых разработчиков, как-то так.

Гаррий
30.03.2021, 10:21
Вы Rise Out с Msx посмотрите, начиная с третьего уровня, а потом Клад с Корвета с первого уровня. Наример. И поймёте (о, чудо!), о чем я.

jerri
30.03.2021, 13:28
Только вот почему надо (совершенно не понятно) сравнивать игру с названием Rise Out с серией игр с названием КЛАД??? Это заведомо - какая то притянутая за уши " не сбыточная" хотелка... Вы либо порт Rise Out с MSX для спектрума делайте с уровнями и механикой 1 в 1, либо Клад(ы) ... и тогда (о чудо!) нет никаких проблем и \ или претензий, ага?

БКашные КЛАДЫ можно пощупать тут > http://hobot.pdp-11.ru/gamgal.htm <
Для УК-НЦ так же есть несколько вариантов игры.
https://r-games.net/uknc/g_uknc/31565-klad.html
https://r-games.net/uknc/g_uknc/31567-klad-baranov-dg.html

Это я к тому написал, что ИМХО: серия игрушек КЛАД и прародитель (возможно) Rise Out - это сильно разные игрушки от совершенно разных и независимых разработчиков, как-то так.Чем отличается Райс аут от клада?
Кроме специфичного бк управления

Sayman
30.03.2021, 13:51
ещё есть вот такой Кладр:
http://sprinter8.net/games/klad

Гаррий
30.03.2021, 14:05
Sayman, спасибо, посмотрел. Судя по скриншотам, здесь тоже явно пытались делать уровни по мотивам, но все равно не скопировали оригинальные.

Вот не могу понять, почему многие авторы неплохих портов игры делали в них ПОХОЖИЕ на оригинал уровни вместо копирования оригинальных.... Ну что может быть проще копирования? Тем более, что в спековский экран оригинальные уровни прекрасно помещаются по знакоместам.

Я в своем порте Булдера первое, что сделал - скопировал уровни из оригинального, и потом уже писал и отлаживал игру именно на них.

- - - Добавлено - - -

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

jerri
30.03.2021, 21:27
Тоже об этом подумываю. Выбрать порт с самой правильной механикой и заменить уровни. Пока с этой точки зрения не тестировал их.

Или самому написать))

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

goodboy
30.03.2021, 23:54
надо просто ром дизасемблить и собрать под спек.
я как-то мельком его посмотрел - там вся работа с железом через стандартные точки bios (вроде нет отсебятины с портами)
наверно эмулировать экран не очень сложно (можно посмотреть как сделано в том-же Eric and Floaters)

Bedazzle
31.03.2021, 00:15
наверно эмулировать экран не очень сложно (можно посмотреть как сделано в том-же Eric and Floaters)

Тут? :)
https://github.com/Bedazzle/EATF

goodboy
31.03.2021, 10:44
ну а теперь сравни с оригиналом http://www.emu-land.net/computers/msx1/roms?act=showonly&id=3966
(rom похоже располагается с #4000)
MSX biosCall http://map.grauw.nl/resources/msxbios.php

Гаррий
31.03.2021, 11:57
непонятно, но очень здорово ))))

goodboy
31.03.2021, 12:02
`правильные` игры на msx для работы с устройствами ввода/вывода используют стандартные подпрограммы из ПЗУ.
поэтому некоторые игры достаточно легко портировать на спек (вся игровая логика при этом останется неизменной)
.............
если я правильно понял rom RiseOut размещается с #8000
~8Kb code, ~8Kb data
то есть полный дизасм вообще не требуется, достаточно заменить CallBios на вызовы в свои процедуры и всё

jerri
31.03.2021, 12:30
Нет, этих всех я видел, не то. У некоторых правильная механика, но тех самых уровней нет. Зачем-то все собственных уровней понаделали.


https://www.youtube.com/watch?v=oJdUpMOLRNg
Чем тебе уровни не понравились. по моему 1:1


https://www.youtube.com/watch?v=BzSDosoTRgw&t=318s

Гаррий
31.03.2021, 13:08
jerri, натупил! да, уровни те.

- - - Добавлено - - -


`правильные` игры на msx для работы с устройствами ввода/вывода используют стандартные подпрограммы из ПЗУ.
поэтому некоторые игры достаточно легко портировать на спек (вся игровая логика при этом останется неизменной)
.............
если я правильно понял rom RiseOut размещается с #8000
~8Kb code, ~8Kb data
то есть полный дизасм вообще не требуется, достаточно заменить CallBios на вызовы в свои процедуры и всё

звучит очень обнадеживающе!!

Гаррий
31.03.2021, 17:00
jerri, меня запутало, что я сравнивал с корветовской версией Клада, которую помню с детства. А там, почему-то, уровни от оригинального Rise Out идут не с первого, а с третьего (или четвертого). Поэтому пару тройку первых уровней я и не узнавал.

Мой косяк. Щас заново перелопачу все варианты, любезно опубликованные в этой теме. По итогам изысканий отпишусь.

- - - Добавлено - - -


Не такой? https://youtu.be/oJdUpMOLRNg
Rise Out From Dungeons (ZX Spectrum)
https://zxart.ee/rus/soft/game/arcade/platform/rise-out-from-dungeons/rise-out-from-dungeons/
Похоже, это таки самая точная копия оригинала с MSX. Правда, не знаю, как было в оригинале, но на Корвете были отдельные клавиши для выстрелов в разные стороны, а тут одна клавиша и игрок всегда стреляет в ту сторону, в которую бежал перед выстрелом.

- - - Добавлено - - -

Клад. Часть 1.
https://vtrd.in/release.php?r=cb43a284dd1a4e97d51138934c9dc547
Графика лучше, но уровни самобытные. Управление как было на привычной мне версии с Корвета - можно стрелять в обе стороны, вне зависимости от того, куда бежит или смотрит игрок.

- - - Добавлено - - -

остальные опубликованные здесь варианты не то.

- - - Добавлено - - -

В общем, я теперь понял, что мне в идеале надо )))) порт игры Клад с Корвета ))) Его не существует, к сожалению, и вряд ли появится.

Прошу прощения за путаницу.

Гаррий
31.03.2021, 22:26
`правильные` игры на msx для работы с устройствами ввода/вывода используют стандартные подпрограммы из ПЗУ.
поэтому некоторые игры достаточно легко портировать на спек (вся игровая логика при этом останется неизменной)
.............
если я правильно понял rom RiseOut размещается с #8000
~8Kb code, ~8Kb data
то есть полный дизасм вообще не требуется, достаточно заменить CallBios на вызовы в свои процедуры и всё
А я правильно понимаю, что софт с Корвета тоже достаточно просто перенести на Спектрум, ибо система команд их процессоров совместима? Переписать придётся только ввод вывод и адресацию памяти, так?

jerri
31.03.2021, 22:30
А я правильно понимаю, что софт с Корвета тоже достаточно просто перенести на Спектрум, ибо система команд их процессоров совместима? Переписать придётся только ввод вывод и адресацию памяти, так?

чтото вроде.

Гаррий
31.03.2021, 22:38
Интересно, есть ли специалисты, способные сделать точный порт клада с Корвета на Спектрум, и сколько такой заказ мог бы стоить)

jerri
31.03.2021, 22:44
Интересно, есть ли специалисты, способные сделать точный порт клада с Корвета на Спектрум, и сколько такой заказ мог бы стоить)

Ну выложи сюда оригинал с корвета может кто и нарисует

Гаррий
31.03.2021, 22:55
Архив с эмулятором Корвета и образом диска с играми games1.kdi, среди которых есть KLAD1. Я не знаю пока, как отдельно вынуть и выложить сюда только эту игру.

https://yadi.sk/d/ANadsttGKKPcMg

Гаррий
02.04.2021, 14:06
никто еще не разобрался, как выковырять из kdi образа дискеты файл КЛАД1 отдельный нужный вам файл для анализа и дизасма?

Black Cat / Era CG
02.04.2021, 14:13
Сейчас достану.

- - - Добавлено - - -

https://drive.google.com/open?id=1UPtero2ydUDR5lFMZxV9E2yx8ubToka2

Гаррий
02.04.2021, 14:20
спасибо!

Black Cat / Era CG
02.04.2021, 14:28
Да не за что. Есть по крайней мере две утилиты, которыми можно доставать файлы из образов, а еще плагин к Тотал Коммандеру.

Гаррий
02.04.2021, 16:31
Black Cat / Era CG,
Может и дизассемблер подходящий посоветуете? Нашел какую-то IDA Freeware, но там нет i8080, да и в принципе я пока не знаю, с чего начать. Для начала бы понять формат COM файла, чтобы хоть точку входа определить для дизасма..

Oleg N. Cher
02.04.2021, 17:55
Гаррий, судя по моему опыту, никто тебе не сделает в точности того, чего ты хочешь. Надо самому.
Поэтому уже начинай свой собственный проект!

Для начала советую добыть из игры все уровни и разобраться как они кодируются.

Дальше вытащить всю графику и адаптировать для Спектрума.

Посмотреть сколько вообще в игре кода. Может его там не так и много.

Если захочешь писать свой порт на Обероне, я помогу.

Вдруг кто сомневается, что эту игру можно разработать на ЯВУ: Raydac и его команда ещё в бородатом году сделали Lode Runner'подобную игру на своём 75109. А кодогенерация у этого Micro C похуже, чем у SDCC.

Для работы с графикой там применяется адаптированная библиотека из Laser Basic.

https://github.com/raydac/old-stuff

Гаррий
02.04.2021, 18:08
Oleg N. Cher, потому и ищу дизассемблер ) впервые в жизни попробую.

jerri
02.04.2021, 19:41
Oleg N. Cher, потому и ищу дизассемблер ) впервые в жизни попробую.

Ида же.

Oleg N. Cher
02.04.2021, 20:10
Да. IDA Pro лучший, его и юзай. Пусть мнемоники будут Z80-ые, не страшно.

Гаррий
02.04.2021, 20:17
Ида же.
Ida freeware не имеет ни 8080, ни z80. Попробую найти про.

- - - Добавлено - - -

А точку входа как узнать у корветовского com файла?

jerri
02.04.2021, 20:22
Ida freeware не имеет ни 8080, ни z80. Попробую найти про.


https://rutracker.org/forum/viewtopic.php?t=5985661



А точку входа как узнать у корветовского com файла?

загрузка на $100 и исполнение вроде оттуда же

там же CP/M

Гаррий
03.04.2021, 16:48
никак не могу заставить IDA считать точкой входа 0x100 ( сама она ее не определяет, почему-то. Хотя мне казалось, что в исполняемом файле по-любому должна быть информация о точке входа.

- - - Добавлено - - -

В коде встречается фраза "Leo Sandy Update 2/27/88". Интересно, кто такой Leo Sandy и какое отношение он имел к Корвету. И имел ли.

jerri
03.04.2021, 20:28
никак не могу заставить IDA считать точкой входа 0x100 ( сама она ее не определяет, почему-то. Хотя мне казалось, что в исполняемом файле по-любому должна быть информация о точке входа.

- - - Добавлено - - -

В коде встречается фраза "Leo Sandy Update 2/27/88". Интересно, кто такой Leo Sandy и какое отношение он имел к Корвету. И имел ли.

наводишь на точку и нажимаешь С
главное с правильного адреса СОМ загрузить

Гаррий
03.04.2021, 20:46
Так он в окне дизасма адреса нормальные не показывает. Сегменты какие-то и смещения, которые могут не меняться строчек 10. А в окне hex просмотра показывает нормальные адреса, но там не работают хоткеи типа C и другие. Кроме того, в основном окне он не везде соглашается на С переключаться, остаётся в db. Но это может быть от того, что я, за неимением в демо IDA Z80 и i8080 выбираю там i8086. Пока ищу, где взять IDA pro без торрентов.

jerri
03.04.2021, 21:44
Так он в окне дизасма адреса нормальные не показывает. Сегменты какие-то и смещения, которые могут не меняться строчек 10. А в окне hex просмотра показывает нормальные адреса, но там не работают хоткеи типа C и другие. Кроме того, в основном окне он не везде соглашается на С переключаться, остаётся в db. Но это может быть от того, что я, за неимением в демо IDA Z80 и i8080 выбираю там i8086. Пока ищу, где взять IDA pro без торрентов.

Изнутри - компилированный ЯВУ. Ужос

Гаррий
03.04.2021, 22:42
Изнутри - компилированный ЯВУ. Ужос

Это вы уже пробовали дизасмить? Какие признаки выдают в дизасме компилированный ЯВУ? Мне на будущее...

- - - Добавлено - - -

спасибо за ссылку! другое дело теперь!

jerri
03.04.2021, 23:18
Это вы уже пробовали дизасмить? Какие признаки выдают в дизасме компилированный ЯВУ? Мне на будущее...


Активные запихивания переменных под стек.
а потом вытягивание их из под стека в подпрограммах.
Лучше наверное Гидрой пройтись - она сразу все в С переводит.

Oleg N. Cher
04.04.2021, 03:14
Изнутри - компилированный ЯВУ. Ужос

Вот жеж! И какой такой ЯВУ мог быть для 8080? Ведь не PL/M же. Продолжайте исследования, интересно!

Гаррий, для соблюдения оригинального подхода игру надо обратно в ЯВУ декомпилировать.

Кстати, я как-то декомпилировал руками тетрис после MCoder'а обратно на Бейсик, и весьма хорошо получалось. И добился обратной компиляции в такой же бинарик. Так что всё вполне реализуемо.

Теперь мне этот проект даже вдвойне интереснее.


Лучше наверное Гидрой пройтись - она сразу все в С переводит.А возьмёт ли Гидра код Z80? Она вроде даже 16-битный код для DOS/x86 не умеет.

Меня терзают смутные сомнения, что нет, только руками.

Впрочем, кода в игре может быть не так и много, я это подозреваю.

Sayman
04.04.2021, 06:02
Вот жеж! И какой такой ЯВУ мог быть для 8080? Ведь не PL/M же.
Зачем так сразу PL/M? 88й год вроде? Так там гора всяких яву было. включая Си с пяток вариаций и Паскаль.

jerri
04.04.2021, 08:16
Вот жеж! И какой такой ЯВУ мог быть для 8080? Ведь не PL/M же. Продолжайте исследования, интересно!

А возьмёт ли Гидра код Z80? Она вроде даже 16-битный код для DOS/x86 не умеет.

Меня терзают смутные сомнентя, что нет, только руками.

Впрочем, кода в игре может быть не так и много, я это подозреваю.
https://habrastorage.org/r/w780/webt/y9/mf/ig/y9mfigkkbrxcyza2tgg2ltbimea.png

Гаррий
04.04.2021, 12:30
Теперь мне этот проект даже вдвойне интереснее.
Какая ответственность! ))) Спешу предупредить, что я программизмом более менее серьезно занимался лет 20 назад, когда писал вариант Булдер Даша под винду. Дилетант, можно сказать. Так что успешность проекта под вопросом )) но мне самому очень бы хотелось получить Корветовский Клад на Спектруме. Раз такового пока не существует, буду пытаться сделать сам.

- - - Добавлено - - -

Черт ногу сломит в этой гидре...


Import - Uncaught Exception: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer
java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer
at generic.continues.ContinuesFactory.create(Continue sFactory.java:61)
at ghidra.app.util.bin.format.macho.MachHeader.create MachHeader(MachHeader.java:73)
at ghidra.app.util.bin.format.macho.MachHeader.create MachHeader(MachHeader.java:61)
at ghidra.app.util.opinion.MachoPrelinkUtils.parsePre linkXml(MachoPrelinkUtils.java:56)
at ghidra.file.formats.ios.prelink.PrelinkFileSystem. isValid(PrelinkFileSystem.java:79)
at ghidra.formats.gfilesystem.factory.GFileSystemBase Factory.probe(GFileSystemBaseFactory.java:66)
at ghidra.formats.gfilesystem.factory.FileSystemFacto ryMgr.test(FileSystemFactoryMgr.java:233)
at ghidra.formats.gfilesystem.FileSystemService.isFil eFilesystemContainer(FileSystemService.java:553)
at ghidra.plugin.importer.ImporterUtilities.showImpor tDialog(ImporterUtilities.java:172)
at ghidra.plugin.importer.ImporterUtilities.lambda$sh owImportDialog$0(ImporterUtilities.java:138)
at ghidra.util.task.TaskLauncher$2.run(TaskLauncher.j ava:119)
at ghidra.util.task.Task.monitoredRun(Task.java:126)
at ghidra.util.task.TaskRunner.lambda$startTaskThread $1(TaskRunner.java:94)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer
at generic.continues.ContinuesFactory.create(Continue sFactory.java:45)
... 15 more

---------------------------------------------------
Build Date: 2020-Feb-12 1149 EST
Ghidra Version: 9.1.2
Java Home: C:\Program Files\Java\jdk-16
JVM Version: Oracle Corporation 16
OS: Windows 10 10.0 amd64

Oleg N. Cher
04.04.2021, 16:59
Зачем так сразу PL/M? 88й год вроде? Так там гора всяких яву было. включая Си с пяток вариаций и Паскаль.Ну не знаю. Всё-таки Корвет. Хотя да, CP/M жеж.

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

Гаррий
04.04.2021, 18:57
Oleg N. Cher, в тексте встречаются фразы:

'Batch Not Found$'
'Format$'
'Leo Sandy Update 2/27/88(\b'

Первые две, вероятно, от компилятора ЯВУ.

Третья, вероятно, от автора исходного кода.

Кому-нибудь что-нибудь говорят эти фразы?

- - - Добавлено - - -

Чую, уперся я в свой дилетантский предел. С IDA так и не получается внятный дизасм получить, Ghidra вообще даже файл не открывает (ошибку выше публиковал).

Без помощи специалиста по IDA и/или Ghidra дальше не продвинемся. :(

jerri
04.04.2021, 20:24
Oleg N. Cher, в тексте встречаются фразы:

'Batch Not Found$'
'Format$'
'Leo Sandy Update 2/27/88(\b'

Первые две, вероятно, от компилятора ЯВУ.

Третья, вероятно, от автора исходного кода.

Кому-нибудь что-нибудь говорят эти фразы?

- - - Добавлено - - -

Чую, уперся я в свой дилетантский предел. С IDA так и не получается внятный дизасм получить, Ghidra вообще даже файл не открывает (ошибку выше публиковал).

Без помощи специалиста по IDA и/или Ghidra дальше не продвинемся. :(

https://habr.com/ru/post/447450/
вот тут посмотри

Bedazzle
04.04.2021, 20:36
А возьмёт ли Гидра код Z80?

Я половину Эрика в гидре делал.

jerri
04.04.2021, 20:58
Я половину Эрика в гидре делал.

скачал последнюю гидру - чтото сплошные эксцепшены выбрасывает.

Гаррий
04.04.2021, 22:31
скачал последнюю гидру - чтото сплошные эксцепшены выбрасывает.

вот и у меня.

- - - Добавлено - - -

Пока выковыриваю из дампа уровни.

Oleg N. Cher
04.04.2021, 22:36
Oleg N. Cher, в тексте встречаются фразы:

'Batch Not Found$'
'Format$'
'Leo Sandy Update 2/27/88(\b'Leo Sandy замечен в авторстве ассемблера X-M-80, MSX,CP/M(M-80).

https://www.msx.org/forum/development/msx-development/which-assembler-can-compile-code

Вероятно, он занимался разработкой под CP/M в 80х-90х.

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

Гаррий
04.04.2021, 22:56
шпаргалка для себя по дампу уровней:
0 - пусто
1 - клад
2 - Дверь без ключа
3 - Дверь на следующий уровень
4 - поверхность воды
5 - толща воды
6 - лестница
7 - мостик
8 - кирпич
9 - бетон

Oleg N. Cher
04.04.2021, 23:21
Как кодируются уровни? Просто числа байтами без всякой упаковки? Или закодированы полубайтами?

Гаррий
05.04.2021, 00:21
Как кодируются уровни? Просто числа байтами без всякой упаковки? Или закодированы полубайтами?

Каждые два знакоместа лабиринта - это байт (одно знакоместо - полубайт), в памяти они расположены последовательно, сверху вниз слева направо. Но в каждом байте половинки поменяны местами зачем-то. То есть так будет соответствовать кусок условного лабиринта 4*8 карте в памяти:

90000609
90613609
90688889
99444499

09 00 60 90
09 16 63 90
09 86 88 98
99 44 44 99


- - - Добавлено - - -

Щас выкушу все уровни, и попробую разобраться в разделяющей их в памяти строке из 15 байт. Предполагаю, там закодированы точки респауна игрока и чертей и, возможно, закон расположения ключей и жизней в кладах.

Oleg N. Cher
05.04.2021, 03:00
Именно для каждого уровня эта строка занимает 15 байт? А кол-во чертей на каждом уровне может быть разным?

Клетки респауна чертей и начального появления игрока могут быть закодированы какими-то кодами прямо в карте уровня. Или в уровнях точно нет знакомест с кодом > 9 ?

Гаррий
05.04.2021, 03:39
Именно для каждого уровня эта строка занимает 15 байт?
Да, перед каждым уровнем идет некий заголовок длиной 15 байт. Пока не разгадал его содержание.

А кол-во чертей на каждом уровне может быть разным?
Да, разное на разных уровнях.

Клетки респауна чертей и начального появления игрока могут быть закодированы какими-то кодами прямо в карте уровня. Или в уровнях точно нет знакомест с кодом > 9 ?
Точно нет. Внутри уровней нет никаких отклонений, всё чётко по полубайтам от 0 до 9.

jerri
05.04.2021, 11:06
Гаррий, вот тебе база idb
но тут версия с MSX - оригинал так сказать

75145

Sandro
05.04.2021, 11:51
Первые две фразы, увы, не очень говорящие. Даже непонятно, Си это или что-то другое. Хотя вдумчивый анализ несомненно может дать больше ответов.

Строки вида 'Something$' -- это же для функции печати в CP/M (BDOS function 9 "C_WRITESTR" - Output string). Для неё доллар является признаком конца строки.

jerri
05.04.2021, 12:09
вот и у меня.

- - - Добавлено - - -

Пока выковыриваю из дампа уровни.

короче разобрался
чтобы Гидра нормально работала
используй 11 JDK
вот отсюда (https://www.openlogic.com/openjdk-downloads?field_java_parent_version_target_id=406&field_operating_system_target_id=All&field_architecture_target_id=All&field_java_package_target_id=396)

все заработало - никаких эксцепшенов

Гаррий
05.04.2021, 14:38
jerri, спасибо. закончу расшифровывать заголовки уровней, попробую декомпилить. Хотя все больше склоняюсь к написанию механики заново, выдрав из дампа только ресурсы.

jerri
05.04.2021, 15:10
jerri, спасибо. закончу расшифровывать заголовки уровней, попробую декомпилить. Хотя все больше склоняюсь к написанию механики заново, выдрав из дампа только ресурсы.Так там вон версия с мсх можно просто разобраться и код брать.

Гаррий
05.04.2021, 16:24
jerri, расследование в этой теме показало мне, что я действительно ошибался, и механика оригинальной игры MSX сильно отличается от ее клона на Корвете ) а реализовать на спеке мне хочется именно ту, Корветовскую механику. Ибо с детства в нее влюблен ) Чтобы можно было стрелять в две стороны, например, вне зависимости от направления бега.

Тем не менее за исходники Rise Out огромное спасибо! Они 100% пригодятся для разбора уровней и, возможно, реализации новых. Но механику я буду срисовывать с Корветовского Клада. Или дизасмом/декомпилом, если моего мозга хватит (в чем уже сомневаюсь), или написанием заново по образу и подобию.

Oleg N. Cher
05.04.2021, 18:32
Да, перед каждым уровнем идет некий заголовок длиной 15 байт. Пока не разгадал его содержание.Понятно. Меня знаешь что удивило. Если кол-во чертей разное, то и длина заголовка, хранящего их координаты, тоже по идее должна быть разная. Но может там есть несколько типовых схем расклада чертей, и хранится просто номер схемы.

jerri
05.04.2021, 21:09
jerri, расследование в этой теме показало мне, что я действительно ошибался, и механика оригинальной игры MSX сильно отличается от ее клона на Корвете ) а реализовать на спеке мне хочется именно ту, Корветовскую механику. Ибо с детства в нее влюблен ) Чтобы можно было стрелять в две стороны, например, вне зависимости от направления бега.

Тем не менее за исходники Rise Out огромное спасибо! Они 100% пригодятся для разбора уровней и, возможно, реализации новых. Но механику я буду срисовывать с Корветовского Клада. Или дизасмом/декомпилом, если моего мозга хватит (в чем уже сомневаюсь), или написанием заново по образу и подобию.

Кстати герой в РайсАут задается элементом карты
а сами карты пакованные.

Чем кстати отличаются? в общем то одно и тоже.

Гаррий
05.04.2021, 21:23
Oleg N. Cher,
Чертей в 90% случаев двое. И только в двух-трех уровнях из 25-ти по одному. Так что, думаю, в этом 15-байтном заголовке просто у второго чёрта поля координат игнорируются, если на уровне работает только один чёрт.

Нужны добровольцы! :) нужно поиграть в корветовский Клад1, выложенный здесь вместе с эмулятором несколькими сообщениями выше. И записать, на каких уровнях и под каким примерно по счету кладом вы найдете дополнительную жизнь. Так быстрее расшифруем заголовки уровней, чем дизасмом...

- - - Добавлено - - -


Кстати герой в РайсАут задается элементом карты
а сами карты пакованные.

Чем кстати отличаются? в общем то одно и тоже.

Тут герой на карте точно не отображается, и черти тоже. Думаю, их координаты в заголовке зашифрованы. Карты, к счастью, не пакованые, иначе я бы и их не выковырял ))))) Я смотрю из меня тот еще дизасмщик получился ))))

Отличаются чем, я говорил уже - двусторонний огонь. И, как мне кажется, более четкое перемещение/управление. Это если вкусовщину не учитывать, а то еще накидал бы пару важных лично для меня моментов.

jerri
05.04.2021, 21:59
Нашел как делаются враги.
в оригинале они задаются через элементы карты
- не более 2х на уровень.

Гаррий
05.04.2021, 23:30
Нашел как делаются враги.
в оригинале они задаются через элементы карты
- не более 2х на уровень.

Это в Rise Out?

А кто-нибудь вообще проходил когда-нибудь все 25 уровней Клада на корвете? :) Это только у меня так?
https://pic.maxiol.com/thumbs2/1617654509.3579288044..png (https://pic.maxiol.com/?v=1617654509.3579288044..png&dp=2)

Oleg N. Cher
05.04.2021, 23:38
Может оказаться, что после 25-го уровня идёт мусорный уровень, т.к. не предусмотрено, что сюда дойдут.
Тут два варианта: либо так, либо у тебя какая-то коцанная версия игры. Ты в те времена её проходил?

Гаррий, а сколько в игре по твоим прикидкам машинного кода? Именно исполняемого кода, а не данных? Дай плиз хотя бы краткую карту памяти.

На чём планируешь воссоздать игру для Спектрума? Насколько я понял, не не асме?

rasmer
06.04.2021, 00:18
Ну йопамать... Взять мсх версею - задизасмить и перепилить вывод под спековый экран. Я так с алоном уже делал(правда переделывали под пентеву)

Гаррий
06.04.2021, 01:05
Ну йопамать... Взять мсх версею - задизасмить и перепилить вывод под спековый экран. Я так с алоном уже делал(правда переделывали под пентеву)

нужна корветовская, не MSXная

- - - Добавлено - - -


Может оказаться, что после 25-го уровня идёт мусорный уровень, т.к. не предусмотрено, что сюда дойдут.
Тут два варианта: либо так, либо у тебя какая-то коцанная версия игры. Ты в те времена её проходил?
так далеко - нет. в памяти только 25 уровней, дальше действительно или мусор, или код.

- - - Добавлено - - -


Гаррий, а сколько в игре по твоим прикидкам машинного кода? Именно исполняемого кода, а не данных? Дай плиз хотя бы краткую карту памяти.
пока не дошли руки до этого. планирую. Еще спрайты надо выловить там.

- - - Добавлено - - -


На чём планируешь воссоздать игру для Спектрума? Насколько я понял, не не асме?
Открытый вопрос пока. Я вообще не уверен, что осилю. Пока просто хочу по максимуму препарировать корветовскую версию, выдрать все ресурсы, локализовать код, понять что где. И насколько там вообще объемный код. Дальше будет видно.

- - - Добавлено - - -

Кто-нибудь может проверить, на 14 и 16 уровнях выдается дополнительная жизнь?

Oleg N. Cher
06.04.2021, 02:09
Ну йопамать... Взять мсх версею - задизасмить и перепилить вывод под спековый экран. Я так с алоном уже делал(правда переделывали под пентеву)

rasmer, ну так Гаррий говорит, что в MSX-версии игры физика отличается, выстрелов в обе стороны нет. Не, пусть чел утоляет ностальгию по полной - изучит, задокументирует. А потом на Оберон всё перепишем ;-) Тогда и другие платформы можно покрыть.

Гаррий, всё документируй по максимуму, чтобы понял сторонний человек. В IDA Pro можно и метки называть по-своему и комменты писать. Не исключено, что я в какой-то момент присоединюсь к проекту.

Мне сама игра не очень, интересен движ по её переносу на ЯВУ. С асм-подпрограммами конечно, куда ж без них.

Bedazzle
06.04.2021, 02:10
скачал последнюю гидру - чтото сплошные эксцепшены выбрасывает.

Тады ой. Пользовалась последняя, но года полтора назад. :\

Oleg N. Cher
06.04.2021, 02:13
Гаррий, тебе попадались другие версии этой игры для Корвета? (предположительно, с окончанием, без мусора на 26-м уровне. Хотя может версии с окончанием и не было. Даже скорее всего. Тогда появляется соблазн это самое окончание запилить и воссоздать игру сразу для двух платформ - и для ZX, и для опять Корвета, но уже с окончанием).

Bedazzle
06.04.2021, 02:14
чтобы Гидра нормально работала
используй 11 JDK

Вот и славно.

Гаррий
06.04.2021, 16:41
Гаррий, тебе попадались другие версии этой игры для Корвета? (предположительно, с окончанием, без мусора на 26-м уровне.
От Корвета в сети не так много ПО. Это единственная версия, которую я нашел. В детстве я в эту игру играл только в школьном классе информатики, и доходил максимум уровня до 15-го. Щас тоже дальше не дошел бы, если бы не сохранение в эмуляторе. ) последние 2-3 уровня там прям трэш трэш трэш. Возможно, разработчики на то и рассчитывали, что мало какая птица долетит до середины Днепра )))

- - - Добавлено - - -

Oleg N. Cher, почитал про Оберон, про которого ты так часто упоминаешь в этой теме. Интересная штука, но информации мне не хватило. Поделишься? Возможно, на нем буду писать.

- - - Добавлено - - -


Кто-нибудь может проверить, на 14 и 16 уровнях выдается дополнительная жизнь?

Друзья, очень пригодилась бы помощь добровольцев! ==^

- - - Добавлено - - -


Кто-нибудь может проверить, на 14 и 16 уровнях выдается дополнительная жизнь?
Поправка! 11 и 13 уровни под вопросом. Судя по предположительному содержанию заголовков уровней, там должны были дать доп.жизнь, но мне не дали. Пройду еще раз. Если кто-нибудь сделает это тоже - будет круто.

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

- - - Добавлено - - -

По результатам разбора 15-байтного заголовка уровней.

Excel таблица со статистикой по уровням и ее сопоставлению с заголовком (https://yadi.sk/i/wTrz9b_lOesuYw).

Скриншот таблицы для тех, кому не нужен оригинал в экселе:
https://pic.maxiol.com/thumbs2/1617716555.3579288044..png (https://pic.maxiol.com/?v=1617716555.3579288044..png&dp=2)

Байты - предположительное значение:
1 - неизвестно
2 - всегда 0, предполагаю, для отладки что-то было. возможно, читы.
3 и 4 - стартовые координаты игрока, пока непонятным образом зашифрованные в 2 байта, из которых у второго используется только половина. Фактически, координаты зашифрованы в 3 полубайта.
5 и 6 - стартовые координаты первого чёрта, зашифрованные тем же способом
7 и 8 - стартовые координаты второго черта, зашифрованные тем же способом (если второго чёрта на уровне нет - там нули)
9 - выдается ли дополнительная жизнь за один из кладов на уровне (0 - нет, 1 - ВЕРОЯТНО, да). Мне из десяти отмеченных единицей уровней на двух жизнь не выдали. Надо понять - это нечеткая логика, или я ошибся, и в этом байте не про доп.жизнь.
10-15 - неизвестно.

Среди неизвестных байтов (1, 10-15), могу предположить, кодируется следующая информация:
1) В каком кладе случайным образом прячется ключ. Пояснения:
а) Ключ при каждой попытке пройти уровень каждый раз прячется под новым кладом.
б) Есть как минимум один уровень, где 3 последних клада спрятаны ЗА дверью, то есть уровень был бы непроходим, если бы ключ оказался в одном из трех последних кладов.
в) Если проходить уровень, начиная его с "сохранёнки" образа памяти эмулятора на момент только что начавшегося уровня, клад всегда остается под одним и тем же кладом (остается под тем же кладом даже при ином порядке сбора кладов). То есть положение ключа задается при старте уровня.
2) В каком кладе данного уровня случайным образом прячется жизнь. Но это под большим вопросом. Механизм получения доп.жизней еще недостаточно исследован. Пояснения.
а) Жизнь уровень дает только при первой попытке его пройти.
б) Жизнь всегда под разными кладами прячется, если проходить уровень с "сохранёнки" эмулятора на момент конца предыдущего уровня.
в) Если верить тому, что в девятом байте заголовка уровня хранится признак про дополнительные жизни, то работает он "нечетко". При нуле жизни точно не даются, при единице - даются, но не всегда.

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

Любые гипотезы по расшифровке заголовка будут приняты с нечеловеческой благодарностью! Сам я пока отложу это дело и полезу искать спрайты в дампе.

Bedazzle
06.04.2021, 17:11
Архив с эмулятором Корвета и образом диска с играми games1.kdi, среди которых есть KLAD1.

А что с управлением? Нашёл беготню курсором, продублировано на цифровых клавишах.
Нашёл стрельбу вправо на левом ALT. Влево не получается найти стрельбу. :(

P.S.
Кто в первый раз запускает - осторожней со звуком, капец громко орёт.

P.P.S.
Разобрался похоже. Нужно задать своё управление. Причём, курсором нельзя зайти из менюшки в выбор. Нужно именно на цифровых клавишах нажав 2 перейти вниз по пунктам меню.
Кнопка Pause - рестарт уровня с потерей жизни.

Гаррий
06.04.2021, 17:59
Нашёл стрельбу вправо на левом ALT. Влево не получается найти стрельбу.
влево CAPS, вправо левый Alt.

Про управление я имел в виду плавность бега, перемещений, понятность срабатывания при "двояких" ситуациях, типа когда ты или чёрт резко меняет направление движения, не закончив предыдущего перемещения на целое знакоместо. Эти ситуации на корветовском варианте отрабатываются элегантнее и красивее с точки зрения графики, чем на оригинале. Мне так показалось.

- - - Добавлено - - -

как же в этом эмуляторе не хватает нормального отладчика или хотя бы просмотра памяти! (

Oleg N. Cher
06.04.2021, 18:07
Господа, кто знает где почитать про разработку под Корвет на низком уровне? Как включить графический режим, вывести точку и т.п. Вообще про технические характеристики Корвета. Если есть, то какие-то примеры кода. В идеале - исходники простой игры или графическй программы. Это для расширения кругозора по Корвету. Гаррий, может ты что-то подскажешь.


От Корвета в сети не так много ПО. Это единственная версия, которую я нашел.Понятно. А где-то в сети вообще есть сборник игр для Корвета?

Кстати, попробуй пошаговую отладку в эмуле, если она там есть. Хотя бы поймёшь что делают те или иные подпрограммы.


почитал про Оберон, про которого ты так часто упоминаешь в этой теме. Интересная штука, но информации мне не хватило. Поделишься? Возможно, на нем буду писать.Я конечно поделюсь. Для начала статья в Downgrade #34 (http://dgmag.in) про портирование на Радио-86РК игры "Охота на лис" (тот же проц, что и у Корвета), потом статья «Тонкости при разработке на Обероне в среде ZXDev» в InfoGuide #11 (http://alonecoder.nedopc.com/zx/books/IG11.ZIP), потом смотреть примеры готовых игр и примеры к среде. Я к тому, что можно на Обероне писать сразу и для Корвета, и для ZX Spectrum. А если покумекать, то и ещё для каких-то платформ. Я открыт для общения, добавляйся в друзья в соцсетях и в контакты в Телеграме (https://zx.oberon.org/send.htm). Ссылка на форум по Оберону у меня в подписи. Там можно тоже прочесть про ретро-разработку.

Но! Если углубляться в разработку такой игры для Корвета, то надо будет конечно все низкоуровневые подпрограммы для работы с графикой. Для разработки под Корвет нужно делать свою подсистему. Это всё вполне реально и возможно. Можно начать с K580Dev, там уже вся схема вызова zcc отработана и расписана, только надо будет дополнить библиотеками для работы с графикой и железом Корвета.

Гаррий
06.04.2021, 21:47
Кто-нибудь знает, как в IDA добавить кодировку KOI-8 R? В настройках в списке только W1251 и UTF-8. Хэлп не помог. Там сказано только, что можно добавить новые кодировки, но как - не описано.

- - - Добавлено - - -

Разобрался.

Если кому интересно: В настройках IDA перейти на вкладку Strings, открыть список восьмибитных кодировок и нажать Search, в окне ввести 20866 - это номер кодовой страницы КОИ8-Р, присвоенный ей в продуктах microsoft. По имени кодировки не добавляет, только по этому номеру. Наконец-то я вижу в дампе русскоязычные строки!

jerri
06.04.2021, 21:56
Гаррий, вот тебе дизасм клада1
не весь. нО некоторые моменты я разобрал
75170

Гаррий
06.04.2021, 22:18
jerri, спасибо!

PS. У меня 7.5, кстати. Ннада?

Oleg N. Cher
06.04.2021, 22:22
jerri, к сожалению тот IDA Pro, что у меня, не хавает твою базу.

http://i.piccy_.info/i9/7f63d1ef02ec365ce03406877ea6c8c1/1617736270/101246/1320134/94695IPApro.png

- - - Добавлено - - -

А так, да. Реально это выглядит как компиленный на ЯВУ код. Предположительно Си, судя по модели вызова функций - параметры снимает со стека вызывающий код (__cdecl]).

jerri
06.04.2021, 22:50
jerri, спасибо!

PS. У меня 7.5, кстати. Ннада?

у меня слишком много перебрано старой версией.
чем 7.5 лучше?

- - - Добавлено - - -


jerri,
А так, да. Реально это выглядит как компиленный на ЯВУ код. Предположительно Си, судя по модели вызова функций - параметры снимает со стека вызывающий код (__cdecl]).

Может и С, но Гидра такой С не очень знает.

Гаррий
06.04.2021, 22:57
Гаррий, вот тебе дизасм клада1
не весь. нО некоторые моменты я разобрал
75170

Очень круто. То немногое, что я успел наделать сам до этого момента, оказалось проще перенести в твой проект, чем наоборот.

- - - Добавлено - - -


чем 7.5 лучше?
Понятия не имею. Скачал последнюю.

Andrew771
06.04.2021, 23:32
Можь, лучше пилить, как Олег предлагает, на ЯВУ, своё. Будет проще и управляемо. Сделать похоже на Корвет (я тоже на нем играл в свое время в этот корветовский Клад на оригинале, он и БК-шный - суперские, Lode Runner на Спектруме - пародия).

Гаррий
06.04.2021, 23:45
Можь, лучше пилить, как Олег предлагает, на ЯВУ, своё. Будет проще и управляемо. Сделать похоже на Корвет
Всё больше к этому склоняюсь, если рассчитывать только на свои силы. Но ресурсы вынуть все из этого дампа - уже вопрос принципа )



корветовский Клад на оригинале, он и БК-шный - суперские, Lode Runner на Спектруме - пародия).
+100500

Гаррий
07.04.2021, 02:25
Гаррий, вот тебе дизасм клада1
не весь. нО некоторые моменты я разобрал
75170

А можешь для чайника пояснить, что в твоем дизасме за Undefined кусок, забитый знаками вопроса в конце, с адреса 7900 до FFFF?

Его начало в HEX просмотре выглядит так:

78F0 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ
7900 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7910 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7920 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7930 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7940 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7950 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????

Этот кусок можно считать пустым, можно удалять?

- - - Добавлено - - -

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

Делал в 7.5, вероятно, у тебя уже не откроется...

https://yadi.sk/d/pTVsLiqFqkgzUQ

Oleg N. Cher
07.04.2021, 04:30
Можь, лучше пилить, как Олег предлагает, на ЯВУ, своё. Будет проще и управляемо.Абсолютно здравая идея. У нас сейчас даже zcc переплюнет по оптимальности то средство разработки, на котором этот Клад делался изначально. Я кое-что начал набрасывать, взгляните. 75171
http://i.piccy_.info/i9/a9ba54f77b9aa3bfa429986173aba2f4/1617758395/192769/1320134/Klad.png
Так что тебе, Гаррий, и карты в руки.

P.S. 15 байт заголовка уровня не изучал, просто пропускаю.

Black Cat / Era CG
07.04.2021, 10:08
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5Байтом E5 в CP/M часто заполняется неиспользуемое пространство, если мне память не изменяет.

jerri
07.04.2021, 11:53
А можешь для чайника пояснить, что в твоем дизасме за Undefined кусок, забитый знаками вопроса в конце, с адреса 7900 до FFFF?

Его начало в HEX просмотре выглядит так:

78F0 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ
7900 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7910 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7920 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7930 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7940 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
7950 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????????????????

Этот кусок можно считать пустым, можно удалять?

- - - Добавлено - - -

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

Делал в 7.5, вероятно, у тебя уже не откроется...

https://yadi.sk/d/pTVsLiqFqkgzUQС 7900 это неиспользованное место я просто файл загрузил без обвязки ср/м

Гаррий
07.04.2021, 15:33
Абсолютно здравая идея. У нас сейчас даже zcc переплюнет по оптимальности то средство разработки, на котором этот Клад делался изначально. Я кое-что начал набрасывать, взгляните. 75171
http://i.piccy_.info/i9/a9ba54f77b9aa3bfa429986173aba2f4/1617758395/192769/1320134/Klad.png
Так что тебе, Гаррий, и карты в руки.

P.S. 15 байт заголовка уровня не изучал, просто пропускаю.

Чума! Класс!! Оберон?

Спрайты откуда-то, или сам набросал?

- - - Добавлено - - -


конечно поделюсь. Для начала статья в Downgrade #34 про портирование на Радио-86РК игры "Охота на лис"
Почитал статью. Буду разбираться с Обероном. Жаль нет такой же статьи под ZX Spectrum ) Но, думаю, по аналогии смогу построиться.

- - - Добавлено - - -


А кто-нибудь вообще проходил когда-нибудь все 25 уровней Клада на корвете? :) Это только у меня так?
https://pic.maxiol.com/thumbs2/1617654509.3579288044..png (https://pic.maxiol.com/?v=1617654509.3579288044..png&dp=2)

В дизасме есть текстовое сообщение для успешно прошедших все 25 уровней. Так что это точно глюк или эмулятора, или данного конкретного файла игры.

Oleg N. Cher
07.04.2021, 16:34
Чума! Класс!! Оберон?Само собой. Давай, осваивайся :)


Спрайты откуда-то, или сам набросал?Лестничку и бетон сам (по аналогии), кирпич и клад перерисовал с какого-то из скриншотов в этой теме :) Клад не очень похож. С водой вообще проблемы - кромка воды в оригинале трёхцветная.

- - - Добавлено - - -


Жаль нет такой же статьи под ZX Spectrum ) Но, думаю, по аналогии смогу построиться.Да там всё очень похоже. Две базовых вещи: смотреть интерфейсы библиотек (выделить мышкой имя модуля и в меню XDev -> Show Definition) и настройки проекта: XDev -> ZXDev Project Setup. Настройки делаются даже проще, чем в K580Dev - через графическое окошко.
http://i.piccy_.info/i9/32dcd956c2025da7b8bf78a12e243ebe/1617801897/151222/1320134/28817ZXDevSettings.png

Гаррий
07.04.2021, 19:10
С водой вообще проблемы - кромка воды в оригинале трёхцветная.
Спрайты перерисуем, это не проблема. И двухцветная вода лично меня полностью устроит.

Oleg N. Cher
07.04.2021, 19:14
Ага. Я вот думаю: давай сделаем толщу воды синей, а волны циановым, всё на BRIGHT 1. А поверхность воды сине-чёрной. Или ещё можно циано-чёрную или циано-синюю. Но волны в любом случае надо нарисовать.

Bedazzle
07.04.2021, 21:49
С водой вообще проблемы - кромка воды в оригинале трёхцветная.

А если мультиколор заюзать? Я начинал делать порт лабиринта из "Десантника" с БК, в мультике нормуль получалось.

Dexus
07.04.2021, 22:33
ИМХО мультиколор здесь не нужен. Плюс ограничение определенными моделями ни к чему.

Гаррий
07.04.2021, 22:47
Сделать бы в натуральной цветности) о мультиколоре уж точно думать рано. Да и лично у меня цель - максимально скопировать, насколько это позволит Спектрум.

- - - Добавлено - - -

Нашёл отладчик Корвета) и кончился больничный, а вместе с ним и свободное время ((

Dexus
07.04.2021, 23:51
Правда, думаю, можно двухфреймовый гигаскрин попробовать
https://volutar.myds.me/lranim.gif

Oleg N. Cher
08.04.2021, 02:54
Мультиколор теоретически можно. Версии движков Nirvana+ и Bifrost есть для Boriel's ZX Basic. Можно конечно и для ZXDev адаптировать. Но начать всё-таки лучше с самой обычной цветности, плюшки уже потом.

Гигаскрин смотрится красиво, да и программировать его будет полегче наверное, но мерцание... на любителя :)

Dexus
08.04.2021, 09:50
Мультиколор не избавит от клешинга, и не будет работать на клонах или других моделях под которые не затачивался. Гигаскрин для бегунов легкоосуществим, применим на всех моделях, и может быть опциональным, если кому-то не нравится мерцание (которое в таких малых количествах не очень раздражает, плюс дополнительно привлекает внимание к врагам).

Lethargeek
08.04.2021, 10:27
Правда, думаю, можно двухфреймовый гигаскрин попробовать
https://volutar.myds.me/lranim.gif
гигаскрин с клэшингом - это ж надо было додуматься! не надо так :D

цвета в двух кадрах нужно по возможности складывать, например:
кадр 1: циановый человечек на циановой лестнице
кадр 2: красный человечек на пустом фоне
...даёт белого человечка на циановой лестнице с меньшим мерцанием

к тому же так можно наложить друг на друга и на лестницу красного и белого человечков (или красного и белую пульку)

- - - Добавлено - - -

еще можно лестницу без наложений рисовать пониженной яркостью, а под спрайтом уже повышенной

Dexus
08.04.2021, 13:19
гигаскрин с клэшингом - это ж надо было додуматься! не надо так
...
кадр 1: циановый человечек на циановой лестнице
кадр 2: красный человечек на пустом фоне
...даёт белого человечка на циановой лестнице с меньшим мерцанием

Ну да. Мигающая черно-циановая лестница (а то и весь уровень) - это, конечно, "меньше мерцания".

Я предложил вариант когда никакого мерцания уровня нет вообще. Только двигающихся объектов (героя и врагов). Можно, наверное, и пули.
Есть 3 варианта.
1. Полный клешинг и ничего не мерцает.
2. Половинчатый клешинг (полупрозрачный), и мерцают только человечки.
3. Отсутствие клешинга, и мерцает весь уровень.

Вариант, когда мерцают только те объекты, на которые могут накладываться человечки я не стал даже перечислять, потому что по геймплею человечки могут и в стену вмонтироваться, и один фиг получится 3.

ЗЫ: Гифка такая дерганная потому что в гифках нет возможности делать паузу длительностью в 1/60сек.

Гаррий
08.04.2021, 13:34
не до украшательств пока, имхо ) когда механика игры заработает хотя бы с обычным клешингом - можно будет рассмотреть.

Lethargeek
08.04.2021, 17:23
Ну да. Мигающая черно-циановая лестница (а то и весь уровень) - это, конечно, "меньше мерцания".
:v2_dizzy_facepalm: весь-то почему? только несколько кусочков под спрайтами


ЗЫ: Гифка такая дерганная потому что в гифках нет возможности делать паузу длительностью в 1/60сек.
так проблема в клэшинге, а не в равномерности гифки (причём с равномерной клэшинг был бы еще заметнее)

в гигаскрине с клэшингом нету смысла, так как ничего фактически не улучшено

Dexus
09.04.2021, 15:31
весь-то почему? только несколько кусочков под спрайтами
Выглядеть это мерцание ПОД человечками довольно скверно. Точнее, оно будет ровно таким же мерцанием под человечком, но ЧЁРНЫМ цветом.
В том варианте который я показал только человечки мерцают, и "освещение" вокруг (полу-клэшинг).
https://volutar.myds.me/lranim2.gif


в гигаскрине с клэшингом нету смысла, так как ничего фактически не улучшено
Улучшено. Отличимость самих контуров человечков от фона. В статичной картинке с клэшингом, без разницы - человечков вообще не распознаешь никак - будет просто непонятное месиво из пикселей, что с or, что с xor.

Lethargeek
09.04.2021, 16:42
Выглядеть это мерцание ПОД человечками довольно скверно. Точнее, оно будет ровно таким же мерцанием под человечком, но ЧЁРНЫМ цветом.
потому что ты неправильно его сделал

повторяю:

цвета в двух кадрах нужно по возможности складывать, например:
кадр 1: циановый человечек на циановой лестнице
кадр 2: красный человечек на пустом фоне
...даёт белого человечка на циановой лестнице с меньшим мерцанием

у тебя же:


кадр 1: чёрный силуэт на циановой лестнице
кадр 2: белый человечек на пустом фоне


- - - Добавлено - - -


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

jerri
09.04.2021, 19:35
А человечка обязательно цветным рисовать?
запилите человечка цвета фона с маской и не парьтесь.

Dexus
09.04.2021, 20:13
Lethargeek, какая разница какого цвета человечек, если кусок лестницы мерцает черный-циановым?? Ну то есть факт мерцания куска лестницы тут настолько ярок, что уже пофиг как там человечек выглядит. Тут не человечка надо сделать «не мерцанием», а фон. Человечек пускай мерцает. Он маленький, и должен привлекать внимание. А мерцание лестницы - это зашквар.

jerri, Да, есть человечек- ГГ, а есть враги. Должны быть разными цветами, потому как по форме их невозможно отличать - сильно мелкие. Цвет обязателен.

В lode runner полноценный клешинг (лестница становится фиолетовой), а сами спрайты по xor рисуются, превращая человечков в месиво из рандомных пикселей. Сделать более-менее качественную лабиринтку на zx с lode runner-alike механикой - это целый challenge.

Lethargeek
09.04.2021, 20:32
какая разница какого цвета человечек, если кусок лестницы мерцает черный-циановым??
угу, а твой красно-циановый, значит, норм? когда плюс еще цвета искажаются


Ну то есть факт мерцания куска лестницы тут настолько ярок,
именно что "тут" ярко, с тормозной гифкой, а в реале на элт или даже медленном жк при 50гц куда лучше
тем более, что лестница состоит из одинарных линий, а человечки толще, будут мерцать заметнее

еще лучше сделать лестницы зелёными, вторым цветом красный или мадженту
третий цвет получится жёлтый или белый, и всё в среднем будет меньше мерцать

Oleg N. Cher
10.04.2021, 01:23
Видосик про игру Lode Runner - для вдохновления :)

https://www.youtube.com/watch?v=gTx30U2gyXI

jerri
10.04.2021, 22:39
[b]jerri, Да, есть человечек- ГГ, а есть враги. Должны быть разными цветами, потому как по форме их невозможно отличать - сильно мелкие. Цвет обязателен.

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

а наложеный сверху цвет не всегда выглядит красиво.
про гигаскрины - хорошо выглядит когда цвета используются близкие

например 4/5 5/6 6/7

так что я бы подумал о смене палитры раз уж хотите цветов.

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

этот момент кстати неплохо смотрелся в БК версии игры Lode Runner
https://r-games.net/uploads/posts/2011-02/thumbs/1297544853_2.jpg

там прекрасно перерисовали врагов так что они отличались.
и если добавить нормальную маску то видно будет очень хорошо.

Dexus
10.04.2021, 23:52
не стоит забывать что спек машинка черно белая по своей сути
Вот вообще не согласен. Цвета есть, и пренебрегать ими - неправильно. Хотя в спеке игроделы этим часто грешат.

Варианты безусловно есть, и тот самый, что используется в оригинальном loderunner’е я бы поставил на предпоследнее место, даже повыше полностью черно-белой.
Потому как такой полный монохром - самый натуральный инвалид и лишенец на фоне эталонной версии.


этот момент кстати неплохо смотрелся в БК версии игры Lode Runner у которого разрешение в 2 раза выше по горизонтали. Не очень-то корректный пример. Попробуй на 256х192 сделать отличимых человечков в 8х8 пикселей, а не 16х10 как на БК.

jerri
11.04.2021, 10:17
Вот вообще не согласен. Цвета есть, и пренебрегать ими - неправильно. Хотя в спеке игроделы этим часто грешат.

Варианты безусловно есть, и тот самый, что используется в оригинальном loderunner’е я бы поставил на предпоследнее место, даже повыше полностью черно-белой.
Потому как такой полный монохром - самый натуральный инвалид и лишенец на фоне эталонной версии.

у которого разрешение в 2 раза выше по горизонтали. Не очень-то корректный пример. Попробуй на 256х192 сделать отличимых человечков в 8х8 пикселей, а не 16х10 как на БК.Цвета есть, но они хорошо смотрятся на заставках или для крупных объектов перемещающихся познакоместно.

А вот с мелкой графикой надо как в леммингах.

jerri
11.04.2021, 19:20
Dexus,вот тебе человечки
8*8 и разные вполне
75206

Гаррий
14.04.2021, 02:37
Просто пожаловаться зашел.

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

Ну, вот свежайший пример: код в одном месте осуществляет вызов подпрограммы (call), которая сложнейшими долгими вычислениями, с применением специально записанной в коде программы константы 0 (да, константа со значением ноль, прямо в середине кода, в виде двух нопов - код эту константу использует в качестве одного из слагаемых), вычисляет адрес возврата из этой подпрограммы, а затем торжественно осуществляет безусловный переход по этому адресу.
И я бы сказал, что проще было бы взять адрес возврата из стека, куда он автоматически помещается при вызове подпрограммы. И что его можно было бы и вообще не брать из стека вручную, ибо команда возврата (ret) сама его оттуда возьмет. Но самое чудовищное, что эти несколько подпрограмм БОЛЬШЕ НИЧЕГО БЛИН НЕ ДЕЛАЮТ, КРОМЕ ВЫЧИСЛЕНИЯ ЭТОГО ЧЕРТОВА АДРЕСА ВОЗВРАТА И ВЫПОЛНЕНИЯ ПЕРЕХОДА ПО НЕМУ!

На разбор этой цепочки кода я потратил не менее часа. И еще час я не мог поверить и перепроверял свои выводы в отладчике, чтобы убедиться, что я всё правильно понял, и что этот нехилый кусок кода можно просто безболезненно выбросить.

Я понимаю, что это компилированный ЯВУ. Но я не ожидал, что это был такой ТАЛАНТЛИВЫЙ компилятор!

- - - Добавлено - - -

И это я еще до игровой механики не дошел.

Oleg N. Cher
14.04.2021, 04:53
Похоже, что это указатель на процедуру и идёт косвенный вызов? А что код чудовищный, так да. Тогдашние компиляторы не радовали. Как, впрочем, и теперешние. Особенно для такого проца, как 8080.

Интересно было бы увидеть откомментированный тобой код. Или не практикуешь такое?)

- - - Добавлено - - -

Гаррий, там на образе дискеты есть KLAD2. Но тебя ностальгия замучила, насколько я понимаю, только по первому Кладу?)

Гаррий
14.04.2021, 14:11
Похоже, что это указатель на процедуру и идёт косвенный вызов?
Если изменить эту константу 0, то, действительно, процедура может начать вычислять другие адреса. Но я нигде больше не нашел ни ссылок на вызов этого кода из других мест, ни обращений к этой константе, ни на запись, ни на чтение. Может плохо искал, конечно.



Интересно было бы увидеть откомментированный тобой код. Или не практикуешь такое?)
Да в целом пока рано смотреть. ) Это первый дизасм в моей жизни. Методику себе взял такую:
- взять из отладчика интересную точку кода на интересном моменте, далее параллельно открыть участок кода в отладчике и в дизасме
- сначала в дизасме построчно вычитать код и откомментить тупо покомандно, пока не пытаясь въехать в функционал кода в целом
- потом прочитать по написанным комментариям - иногда уже на этом этапе начинаешь понимать смысл кода - правлю коменты уже с точки зрения алгоритма, помогая себе пошаговым проходом по коду в отладчике
- если удается ухватить смысл действий, переименовываю функции, переменные, метки и т.п. осмысленными названиями, текстом описываю кратко содержания кусков кода. Если не уверен, что понял правильно, отмечаю написанное/переименованное примечанием "??" на будущее, чтобы, когда вернусь в этот код из других мест, еще раз перепроверить себя
- от более менее понятого участка кода расхожусь веером по вызовам и повторяю все сначала для новых участков кода.

Вот пример. На мой взгляд, неплохо получилось разобрать код вывода главного экрана (форум режет пробелы и табуляции, поэтому для большей наглядности выкладываю код скриншотом):

- - - Добавлено - - -

https://pic.maxiol.com/thumbs2/1618397673.3579290387..png (https://pic.maxiol.com/?v=1618397673.3579290387..png&dp=2)

- - - Добавлено - - -

выложил картинку с кодом, вчитался и сразу уже сам нашел несколько ошибок, исправил, хотя до сих пор считал, что этот участок кода неплохо разобран ) Так что эта картинка уже не совсем актуальная )))) Вот поэтому весь дизасм и рано пока выкладывать ))))

- - - Добавлено - - -


Гаррий, там на образе дискеты есть KLAD2. Но тебя ностальгия замучила, насколько я понимаю, только по первому Кладу?)
Видел. У меня и KLAD3 есть ) Думаю, они отличаются только уровнями, но это не точно. Скорее всего, все уровни просто в память не влезли, они же не упакованными хранятся в коде. Вот авторы и разделили на 3 части. Когда закончу с KLAD1, гляну и решу что с ними делать. Как минимум, выдерну уровни из остальных частей.

Точно могу сказать, что на момент компиляции KLAD1, авторы уже как минимум планировали KLAD2, или даже выпустили их одновременно. потому что в коде KLAD1 есть текст:
'Поздравляем!!!',0
'Теперь Вы смело можете',0
'приступать ко второй части',0
'нашей игры.',0
'Желаем успеха!',0

Видимо, этот текст должен выводиться на экран по завершении 25-го уровня первой части. Но у меня не вывелся, кстати. Я выкладывал картинку - в эмуляторе у меня игра вывела на экран мусор вместо уровня 26, съела по одной все накопленные жизни и повисла.

- - - Добавлено - - -

Найти бы авторов. Имена известны (они в таблице рекордов полным именем и фамилией себя записали), но в сети я не нашел о них ни одного упоминания вне этой игры. Наверняка, нашу задачу они могли бы помочь решить на порядок быстрее. При их желании, конечно.

- - - Добавлено - - -

Дмитрий Иванов и Андрей Шаталов. Называли они себя, видимо, группой "Woodman".

vlad
14.04.2021, 14:15
Это первый дизасм в моей жизни. Методику себе взял такую:
не совсем так, вот пример (http://zx-pk.ru/showpost.php?p=422404&postcount=65)

Гаррий
14.04.2021, 15:25
не совсем так, вот пример (http://zx-pk.ru/showpost.php?p=422404&postcount=65)

не понял ваше сообщение, нужны пояснения.

Oleg N. Cher
14.04.2021, 16:43
Гаррий, да, всё отлично. Много чего можно понять. У меня такое пожелание: пусть комментарии не дублируют то, что делает команда ассемблера. К примеру, коммент "pop af ; извлечь из стека AF" ничего не даёт для понимания логики программы. Лучше больше писать о том, что именно хранится в AF.

Этот код, насколько я понял, вывод спрайта? А зачем там в конце A сравнивается с #80?

Гаррий
14.04.2021, 19:05
пожелание: пусть комментарии не дублируют то, что делает команда ассемблера. К примеру, коммент "pop af ; извлечь из стека AF" ничего не даёт для понимания логики программы. Лучше больше писать о том, что именно хранится в AF.
это остатки от самой первой итерации. удалить можно, но лень. не буду, сорри.

- - - Добавлено - - -



Этот код, насколько я понял, вывод спрайта? А зачем там в конце A сравнивается с #80?
вывод последовательности спрайтов по заранее заданному набору. сравнение - поиск конца набора выводимых спрайтов.

Гаррий
01.06.2021, 14:38
Ваще времени свободного не стало :( Воз и ныне там, к сожалению.

beliy
19.08.2021, 12:18
Это в Rise Out?

А кто-нибудь вообще проходил когда-нибудь все 25 уровней Клада на корвете? :) Это только у меня так?
https://pic.maxiol.com/thumbs2/1617654509.3579288044..png (https://pic.maxiol.com/?v=1617654509.3579288044..png&dp=2)
Много раз доходил. Всегда так. Проходил на эмуляторе https://sites.google.com/site/wadimspc/spc-emulator-for-linux
Там даже в инструкции написанно что уровней 25 и по сути это баг концовки.


Кто-нибудь может проверить, на 14 и 16 уровнях выдается дополнительная жизнь?
насколько понял, дополнительная жизнь дается за количество кладов с небольшим рандомом. Условно первая жизнь дается при получении 100 кладов с разбросом +- 5 возможно 10 кладов. И дальше аналогично, только следующие пороги через 50 или 100 кладов с похожим небольшим рандомом. По крайней мере эта логика работает если проходить без смертей и собирать все клады.
Вероятно на 14 и 16 уровнях попадает на порог в 100 кладов, что больше количества кладов на уровне.
Чуть позже также хотел более подробно разобрать, правда практическим способом, т.к. начал делать аналог на godot, но пока не дошел до этого этапа. Этот движок наверное 1 из лучших для 2Д игр + кроссплатформенный, что мне как линуксоиду не менее важно. Также он достаточно лояльный к новичкам, т.к. много вещей получилось сделать достаточно быстро не имея опыта ни в данной программе ни в разработке игр. Если найдутся желающие совместно продолжить - буду только рад. Также если получистя раздебажить точную логику добавления жизней, то это также сильно поможет.

Гаррий
19.08.2021, 12:39
насколько понял, дополнительная жизнь дается за количество кладов с небольшим рандомом.
Возможно! Мой вопрос был вызван желанием разобраться в содержании заголовка уровня в памяти. Мне там не все удалось расшифровать. Было предположение, что в каких-то байтах именно этот флажок был - выдача жизни на уровне.


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

beliy
19.08.2021, 13:23
Я готов, но со свободным временем совсем плохо сейчас, поэтому тема для меня заморозилась пока. Да и опыт близкий к нулевому. Но если вдруг чем пригожусь - буду рад.
Как писал ранее - сам с нуля разбираюсь во всем. Там по сути большие задачи разбиваешь на мелкие и смотришь как тоже самое делают другие и стараешься применить в своем случае.
Из того что уже сделал:
1) Есть базовое стартовое меню (без шейдера типа звездного неба на фоне и части второстепенных пунктов)
2) отрисовал основные тайлы идентичные оригинальным но в высоком разрешении (с расчетом на fullHD)
3) реализовна механика движения и падения персонажа
4) сделана большая часть анимаций персонажа
5) возможность быстрого и наглядного создания уровней
6) реализованна механика собирания и учета кладов
7) реализована механика смерти при попадании в воду (пока без отнимания жизни и начала уровня заново)

Пока есть шероховатости с перемещениями по лестнице (нету выравнивание по центру тайла когда лезем по лестнице и ) и с механикой мостиков (при падении на них отключать коллизию что б пролетать их дальше) ну и нужно сделать остальные механики (понимание как делать есть, но главный ресурс - время, которого также не сильно много)
Есть телеграм, что б мог скинуть то что уже есть и объяснить непонятные моменты, если действительно есть желание ввязаться в эту авантюру?;)

Гаррий
19.08.2021, 14:03
вот вот, со временем беда )

Ваш проект меня интересует исключительно с целью потом портировать это всё на ZX. Как станет посвободнее со временем (мелкая подрастет, например )))), подключусь.