PDA

Просмотр полной версии : Портирование Desolate на Вектор-06Ц



nzeemin
27.11.2020, 17:00
Всем доброго дня.
Есть несколько вопросов по разработке под Вектор в 2020 году.

1. Ассемблер.
В примерах исходников что я нашёл везде используется tasm - есть ли версия tasm совместимая с Windows 10? или исходники чтобы её собрать?
Какой ещё ассемблер можно использовать?

2. Эмулятор.
Какие эмуляторы есть, есть ли эмулятор с отладчиком?

3. Перенос программ с процессора Z80.
Есть какое-то руководство?
Есть ли модификация Вектора с Z80 процессором? видимо, Вектор Турбо+ ? есть ли поддержка этого в эмуляторах?
Видел упоминания PROGRAM RECOMPILE SYSTEM - где почитать, посмотреть?

4. Загрузочные форматы.
Результат компиляции для загрузки - что это должно быть? где почитать про это?

marinovsoft
27.11.2020, 17:06
1. Ассемблер.... есть ли версия tasm совместимая с Windows 10?
http://old-dos.ru/dl.php?id=1926


Видел упоминания PROGRAM RECOMPILE SYSTEM - где почитать, посмотреть?
https://zx-pk.ru/threads/15302-korvet-igry.html?p=916878&viewfull=1#post916878


Результат компиляции для загрузки
ROM-файл, загрузка с адреса 100h.

ivagor
27.11.2020, 17:22
Какой ещё ассемблер можно использовать?
Еще есть прекрасный ассемблер svofski и он даже где-то выкладывал оффлайн версию, ссылки лучше он сам приведет


Какие эмуляторы есть, есть ли эмулятор с отладчиком?
Emu (http://www.sensi.org/scalar/ware/550/) (b2m) - ссылка на краткое описание, там ссылка на страницу b2ma
Virtual Vector (http://www.sensi.org/scalar/ware/552/) (Ramiros)
Emu80 (https://zx-pk.ru/threads/27488-emu80-v-4.html) (Pyk)
Во всех перечисленных есть gui и отладчики, мне больше нравится отладчик emu, но и в других есть свои фишки, например профайлинг в VV.
Еще есть v06x svofski, правильную ссылку лучше даст он сам. Там тоже есть фишки, например непревзойденное качество эмуляции ШИМа


Есть ли модификация Вектора с Z80 процессором?
Вектор турбо+ вероятно был в одном экземпляре и он не поддерживается в эмуляторах. Три основные варианта установки z80: Кишинев (http://www.sensi.org/scalar/ware/571/) (с элементами эмуляции спека), Омск (http://www.sensi.org/scalar/ware/569/), Владимир (http://www.sensi.org/scalar/ware/570/). Про кишиневский еще есть тема (https://zx-pk.ru/threads/18798-emulyator-quot-zx-spectrum-48-quot-na-quot-vektore-06ts-quot.html) и он поддерживается в emu. В остальных можно сказать Омск/Владимир.

nzeemin
27.11.2020, 17:37
У меня есть желание перенести игру Desolate на Вектор-06Ц - я уже практически закончил перенос на ZX Spectrum.

https://zx-pk.ru/threads/32431-desolate-port-s-ti-83-plus.html
https://github.com/nzeemin/spectrum-desolate
Кода 7КБ, остальное это строки 5902 байт, шрифт 869 байт, описания комнат 7К, переменные + тайлы/спрайты 16300 байт, теневой экран 3312 байт, итого ~40515 байт под всё.
Текущий код компилируется под pasmo и sjasmplus.

Какой стратегии конвертации лучше придерживаться?
Предполагаю сначала скомпилировать как есть тем же pasmo, затем переделка вывода на экран, переделка ввода с клавиатуры, затем видимо перевод под мнемонику КР580ВМ80А и компиляция в tasm, переделка на код для этого процессора.

svofski
27.11.2020, 17:50
Еще есть прекрасный ассемблер svofski
Онлайн он прекрасен, хоть и не идеален. Но в оффлайновой форме прекрасм вряд ли может соперничать с TASM-ом, не стоит заморачиваться.
https://svofski.github.io/pretty-8080-assembler/

Для создания вавов:
https://github.com/svofski/bin2wav/

Мой эмулятор. В нем нет ни гуя, ни отладчика (хотя он может быть gdb сервером для gdb-z80). Зато он запускается из командной строки, скриптуется и все такое.
https://github.com/svofski/vector06sdl

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


перевод под мнемонику КР580ВМ80А
Многие предпочитают писать под 8080 в мнемониках Z80, ничего страшного (несмотря на сотни страниц брани на форуме о том, какие мнемоники единственно верные). Может быть лучше потратить эти силы на что-то более осязаемое. У Вектора будет с чем повозиться.

nzeemin
28.11.2020, 15:00
Порадую первым скриншотом.
Компилирую часть через tasm: код инициализации, прерывания итп., остальное через pasmo с опцией --w8080 - она даёт варнинги на команды недоступные для i8080.
Пока ещё не всё перелопатил под i8080, самая мякотка осталась.
Репозиторий кода: https://github.com/nzeemin/vector06c-desolate

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

Есть пара вопросов:

1. Эффективный способ развернуть биты одного байта в обратную сторону? пока вижу только вариант все сдвиги делать через аккумулятор, обмениваясь с парой регистров, громоздкий код.

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

ivagor
28.11.2020, 15:11
1. Эффективный способ развернуть биты одного байта в обратную сторону? пока вижу только вариант все сдвиги делать через аккумулятор, обмениваясь с парой регистров, громоздкий код.
Смотря насколько быстро нужно разворачивать.
Если максимально быстро, то по таблице на 256 байт.
Если достаточно умеренной скорости (или нужно сгенерить вышеупомянутую таблицу) - исходный байт в H, сдвигаем во флаг переноса по dad h, задвигаем в аккумулятор по rar (и так 8 раз)


2. Нужен генератор случайных чисел, достаточно даже 8-битного. Для Спектрума использовал вариант с регистром R, тут его очевидно нет.
Если устроит lfsr, то пример есть здесь (https://zx-pk.ru/threads/21907-demo-effekty-dlya-vektora.html?p=930543&viewfull=1#post930543). Если нужен именно 8 битный, то можно легко переделать, полиномы например здесь (https://users.ece.cmu.edu/~koopman/lfsr/8.txt) (а для 16 брал тут (https://users.ece.cmu.edu/~koopman/lfsr/16.txt))

nzeemin
28.11.2020, 16:54
ivagor, прекрасный ответ, исчёрпывающе. спасибо огромное! вообще, эта часть форума мне всё больше нравится :-)

А между тем, я получил скрин игрового экрана (над палитрой ещё буду работать конечно):

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

tnt23
28.11.2020, 22:46
Эффективный способ развернуть биты одного байта в обратную сторону

таблицей перекодировки (теряем 256 байт)

nzeemin
28.11.2020, 23:21
По поводу клавиатуры - какие клавиши лучше использовать?
Думаю сделать примерно так:
- Движение в четырёх направлениях - очевидно стрелки.
- Look/shoot - Пробел
- Переключатель Look/Shoot - ТАБ
- Инвентарь - 'I' / 'M'
- Закрыть диалог (Escape) - ??
- Выход в меню - 'P' / 'R'
Нужны ли ещё дублёры для этих клавиш?

svofski
29.11.2020, 00:22
Я бы пробел оставил в покое. УС/Ctrl лучше. ESC как всегда АР2. Хорошо бы предусмотреть возможность добавить дублирование на джойстиках.

Опрос клавиатуры + джойстиков из Рива рейда:
https://github.com/svofski/incursiondelrio/blob/master/input.inc

KTSerg
29.11.2020, 06:17
По поводу клавиатуры - какие клавиши лучше использовать?
...
- Look/shoot - Пробел
- Переключатель Look/Shoot - ТАБ
...
А обязательно нужен "Переключатель" ?
Может просто на разные кнопки назначить ?
Что-то из: "УС", "СС", "Рус/Lat".

nzeemin
29.11.2020, 15:13
Ещё у меня вопрос - можно ли проверить бит регистра, не меняя его?
То есть конкретно на Z80 это: bit 7,a / jp nz


А обязательно нужен "Переключатель" ?
Может просто на разные кнопки назначить ?
Что-то из: "УС", "СС", "Рус/Lat".

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

ivagor
29.11.2020, 15:16
То есть конкретно на Z80 это: bit 7,a / jp nz
В этом конкретном случае (старший бит аккумулятора) да. ora a или ana a, по результату изменится флаг знака и дальше соответствующий переход.

nzeemin
29.11.2020, 16:04
В аттаче положил первую драфт-версию.

https://pic.maxiol.com/thumbs2/1606655171.1845257576.202011292.png (https://pic.maxiol.com/?v=1606655171.1845257576.202011292.png&dp=2) https://pic.maxiol.com/thumbs2/1606655390.1845257576.202011293.png (https://pic.maxiol.com/?v=1606655390.1845257576.202011293.png&dp=2) https://pic.maxiol.com/thumbs2/1606655485.1845257576.202011294.png (https://pic.maxiol.com/?v=1606655485.1845257576.202011294.png&dp=2) https://pic.maxiol.com/thumbs2/1606655569.1845257576.202011295.png (https://pic.maxiol.com/?v=1606655569.1845257576.202011295.png&dp=2)

Текущий маппинг клавиатуры Вектора:
- Движение в четырёх направлениях - стрелки.
- Look/shoot - Пробел
- Переключатель Look/Shoot - ТАБ
- Инвентарь - 'I' / 'M'
- Закрыть диалог (Escape) - ПС / ЗБ
- Выход в меню - 'P' / 'R'

Собираюсь ещё доделать:
- Генератор случайных чисел
- Применение "тёмной темы" в режиме когда на экране печатается часть истории
- Исправления ошибок
- Может быть, какая-то оптимизация

nzeemin
30.11.2020, 23:52
Ребят, а можно ещё пример кода чтобы простейший пук на динамик выдать? хочу повесить на look/shoot, как и в ZX версии.
Только пожалуйста, ничего сложного, просто цикл или вызов в ROM.

А чем тут принято упаковывать результат? какой-нибудь консольный упаковщик + код распаковки?
(сорри туплю, вспомнил про LZSA - https://gitlab.com/ivagor/lzsa8080

KTSerg
01.12.2020, 05:45
Ребят, а можно ещё пример кода чтобы простейший пук на динамик выдать? хочу повесить на look/shoot, как и в ZX версии.
Только пожалуйста, ничего сложного, просто цикл или вызов в ROM.
...
Не знаю, можно-ли сделать компактный вывод "пук" через ВИ53.
Мне кажется можно попробовать вывести в динамик код самой программы. ;)
Прослушать всю программу, возможно кусок с какой-то картинкой может быть похож на "пук". :)
Это чтоб звук специально не хранить, место экономить... взять кусок того, что уже есть...

ivagor
01.12.2020, 06:50
nzeemin, вопрос в том, как в принципе издать звук или в том как издать конкретный звук? Возможно есть пример такого звука для другого компа.

KTSerg
01.12.2020, 07:04
nzeemin, вопрос в том, как в принципе издать звук или в том как издать конкретный звук? Возможно есть пример такого звука для другого компа.
Думаю, нужна подпрограмма (для Вектора), вывода звука вообще, и образец конкретного звука в частности.

Improver
01.12.2020, 12:27
Если надо издать звук через ВИ53, то вот небольшой код, выдрал из теста техпрогона:

; Режим 3 - генератор прямоугольных сигналов
LXI H, 005DCh ; Значение делителя частоты
MVI A, 036h ; 0011 0110 -- [канал 0][чт/зп слова][режим 3][двоичный]
OUT 008h ; РУС м/с ВИ53
MOV A, L
OUT 00Bh ; Канал 0
MOV A, H
OUT 00Bh ; Канал 0

LXI H, 002EEh ; Значение делителя частоты
MVI A, 076h ; 0111 0110 -- [канал 1][чт/зп слова][режим 3][двоичный]
OUT 008h ; РУС м/с ВИ53
MOV A, L
OUT 00Ah ; Канал 1
MOV A, H
OUT 00Ah ; Канал 1

LXI H, 001F4h ; Значение делителя частоты
MVI A, 0B6h ; 1011 0110 -- [канал 2][чт/зп слова][режим 3][двоичный]
OUT 008h ; РУС м/с ВИ53
MOV A, L
OUT 009h ; Канал 2
MOV A, H
OUT 009h ; Канал 2

; выключение звука
; Режим 0 - выдача сигнала прерывания по конечному числу
MVI A, 030h ; 0011 0000 -- [канал 0][чт/зп слова][режим 0][двоичный]
OUT 008h ; РУС м/с ВИ53
MVI A, 070h ; 0111 0000 -- [канал 1][чт/зп слова][режим 0][двоичный]
OUT 008h ; РУС м/с ВИ53
MVI A, 0B0h ; 1011 0000 -- [канал 2][чт/зп слова][режим 0][двоичный]
OUT 008h ; РУС м/с ВИ53

Если не ошибаюсь в значениях, то там через канал 0 выдаётся частота 1кГц, канал 1 -- 2кГц и канал 2 -- 3кГц.

svofski
01.12.2020, 13:14
Самый простой пук наверное можно изобразить битом 0 порта 1. Что проще всего делать в режиме 8255 BSR (https://en.wikipedia.org/wiki/Intel_8255#Bit_Set/Reset_(BSR)_mode). Если я ничего не путаю, это будет примерно так:
Порт 0: Бит 7 = 0, биты 3:1 - номер бита, бит 0 = значение. То есть


mvi a, 1
out 0 ; 8255 CSR
; <какое-то время>
mvi a, 0
out 0
; <какое-то время>

Improver
01.12.2020, 15:08
Ну если нужен не просто щелчёк динамиком, а типа как звук нажатия клавиш в МДОСе, то там используется такой код (из МДОС Т-72):

; звук нажатия клавиши
L_F6F6: MVI H, 030h ; Счётчик 1
XRA A
L_F6F9: MVI L, 040h ; Счётчик 2
L_F6FB: DCR L
JNZ L_F6FB ; Задержка 40h циклов
XRI 001h ; А=0000 000х, режим оперирования битами, инверсия бита 0
OUT 000h
DCR H
JNZ L_F6F9 ; Цикл, повтор 30h раз

KTSerg
01.12.2020, 15:48
Ну если нужен не просто щелчёк динамиком, а типа как звук нажатия клавиш в МДОСе, то там используется такой код (из МДОС Т-72):

; звук нажатия клавиши
L_F6F6: MVI H, 030h ; Счётчик 1
XRA A
L_F6F9: MVI L, 040h ; Счётчик 2
L_F6FB: DCR L
JNZ L_F6FB ; Задержка 40h циклов
XRI 001h ; А=0000 000х, режим оперирования битами, инверсия бита 0
OUT 000h
DCR H
JNZ L_F6F9 ; Цикл, повтор 30h раз

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

nzeemin
02.12.2020, 00:58
Если устроит lfsr, то пример есть здесь (https://zx-pk.ru/threads/21907-demo-effekty-dlya-vektora.html?p=930543&viewfull=1#post930543). Если нужен именно 8 битный, то можно легко переделать, полиномы например здесь (https://users.ece.cmu.edu/~koopman/lfsr/8.txt) (а для 16 брал тут (https://users.ece.cmu.edu/~koopman/lfsr/16.txt))

Опробовал этот вариант. Не сказать что прям блестяще, но использовать вполне можно.




rnd16:
lxi h,65535
dad h
shld rnd16+1
rnc
mvi a,00000001b ; flipped 80h - 10000000b
xra l
mov l,a
mvi a,01101000b ; flipped 16h - 00010110b
xra h
mov h,a
shld rnd16+1
ret



ld hl,$C000
ld bc,$1000
Start_A:
push bc
push hl
call rnd16
ex de,hl
pop hl
ld a,e
ld (hl),a
inc hl
ld a,d
ld (hl),a
inc hl
pop bc
dec bc
ld a,b
or c
jp nz,Start_A



https://pic.maxiol.com/images2/1606856686.1845257576.202012011.png

- - - Updated - - -

Но вот этот вариант выглядит получше: https://wikiti.brandonw.net/index.php?title=Z80_Routines:Math:Random#Combined_ LFSR.2FLCG.2C_16-bit_seeds



Random16:
ld hl,(seed1)
ld b,h
ld c,l
add hl,hl
add hl,hl
inc l
add hl,bc
ld (seed1),hl
ld hl,(seed2)
add hl,hl
sbc a,a
and %00101101
xor l
ld l,a
ld (seed2),hl
add hl,bc
ret
seed1: dw 12345
seed2: dw 54321



https://pic.maxiol.com/images2/1606857290.1845257576.202012012.png

- - - Updated - - -

В аттаче второй драфт.

Улучшения:
- Применять светлую/тёмную тему в зависимости от ситуации
- Уменьшить задержки на 25-30%
- Улучшить маппинг клавиш: АР2 escape
- Генерация случайного числа

Что ещё собираюсь сделать:
- Улучшить маппинг клавиш: задублировать Look/Shoot
- Моргать бордюром когда игрок получает урон
- Звук "тык" при look/shoot
- Сжатие основной части через LZSA1, распаковка

ivagor
02.12.2020, 07:11
Не сказать что прям блестяще
Поэтому я и написал "если устроит lfsr". Как написано по ссылке "On their own, LCGs and LFSRs don't produce great results and are generally very cyclical". В качестве rnd общего назначения lfsr не так хорош, но в некоторых случаях именно то, что нужно.

KTSerg
02.12.2020, 20:35
nzeemin, а это "фишка" такая, что лабиринт "не сходится" ?
Типа комнаты находятся на разных этажах, и некоторые двери являются переходом на другой этаж?

nzeemin
02.12.2020, 20:44
nzeemin, а это "фишка" такая, что лабиринт "не сходится" ?
Типа комнаты находятся на разных этажах, и некоторые двери являются переходом на другой этаж?

Хороший вопрос. нет, он вполне себе "сходится", т.е. укладывается на плоскость.
Просто некоторые переходы - длинные, длинной в целую комнату.

zx_
03.12.2020, 09:46
nzeemin, может и под Специалист сделаете порт Desolate?
игрушка прикольная

nzeemin
03.12.2020, 12:38
nzeemin, может и под Специалист сделаете порт Desolate?
игрушка прикольная

Надо сначала доделать порты под Спектрум и Вектор, а там видно будет. У меня ещё много работы.

Посмотрел, экран Специалиста неудобный для этой игрушки, игровая часть экрана будет уже слишком маленькая. Так что скорее нет.

nzeemin
04.12.2020, 18:23
Драфт 3 в аттаче.

Что нового:
- Сжатие основной части через LZSA1, распаковка - спасибо ivagor за распаковщик!
- Звук "тык" при look/shoot - использовал код который дал Improver
- Моргать бордюром когда игрок получает урон
- Улучшить маппинг клавиш: задублировать Look/Shoot

Маппинг клавиш теперь такой (если я всё сделал правильно конечно):
- Движение в четырёх направлениях - стрелки.
- Look/shoot - УС, Пробел
- Переключатель Look/Shoot - ТАБ, РУС/ЛАТ
- Инвентарь - 'I', 'M'
- Закрыть диалог (Escape) - АР2, ЗБ, ПС
- Выход в меню - 'P', 'R'

Что ещё собираюсь сделать:
- Багфиксы и возможно ещё какие-то мелочи

В целом состояние - "почти готово".

KTSerg
05.12.2020, 07:27
Драфт 3 в аттаче.
...
Мне кажется звук "тык" как-то запаздывает что-ли. И по не понятному пока принципу то один "тык", то два в подряд.
И видимо нужно знать оригинальную игру, что-бы понять: почему всё-же вместо комнат есть "скачки", и что делать с некоторыми предметами (например кубиком). (Где-то пропустил 13-ый картридж).
И здоровье тут не восстановить?

CityAceE
05.12.2020, 12:53
Посмотрел, экран Специалиста неудобный для этой игрушки, игровая часть экрана будет уже слишком маленькая. Так что скорее нет.
Однако это никак не мешает адаптировать на Специалист игры со Спектрума (https://zx-pk.ru/threads/29991-exolon-dlya-pk-spetsialist.html).

ivagor
05.12.2020, 14:20
На мой взгляд в портировании Desolate на специалист мешает только некоторая нехватка памяти. На MX должно быть без проблем

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

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

nzeemin
05.12.2020, 15:26
Мне кажется звук "тык" как-то запаздывает что-ли. И по не понятному пока принципу то один "тык", то два в подряд.
И видимо нужно знать оригинальную игру, что-бы понять: почему всё-же вместо комнат есть "скачки", и что делать с некоторыми предметами (например кубиком). (Где-то пропустил 13-ый картридж).
И здоровье тут не восстановить?

Два и больше "тык" подряд бывает когда для действия ничего не обнаружено - следующий "тык" идёт на следующем шаге игрового цикла.
Знать оригинальную игру не нужно, моя задача была просто перенести один-к-одному, считаю что справился ;-)
То что вместо комнат на карте кое-где есть пропуски - это особенность редактора, который себе сделал автор оригинальной игры, просто он использовал не все "слоты" под комнаты.
Некоторые предметы (например, кубик) бесполезны.
Здоровье не восстанавливается.

- - - Updated - - -


Однако это никак не мешает адаптировать на Специалист игры со Спектрума (https://zx-pk.ru/threads/29991-exolon-dlya-pk-spetsialist.html).

На спеке картинка 256x192, это нормально смотрится на экране 384x256.
Здесь исходная картинка 96 x 64 пикселов, x2 будет 192 x 128 - на Специалисте это уже будет только половина экрана.
Конечно, это можно как-то порешать - делать тайлы/спрайты ещё больше, или масштабировать на лету.
Но в целом в эту сторону мне портировать не очень интересно, сорри.

Если кто-то хочет портировать дальше - без проблем - исходный код весь открыт, и достаточно хорошо комментирован чтобы разобраться за несколько дней. Конвертер тайлов/спрайтов написан на C#, тоже можно допилить под конкретную машину.

nzeemin
06.12.2020, 17:33
Драфт 4 в аттаче, и в принципе, это уже "release candidate" - если всё нормально, то считаем это релизом.

Из нового только одна фича:
Когда стучимся в дверь и там ввод кода на уровень который уже был введён - выполняется автоматический ввод цифр, нужно только нажать Fire.

KTSerg
06.12.2020, 17:52
Драфт 4 в аттаче, и в принципе, это уже "release candidate" - если всё нормально, то считаем это релизом.

Из нового только одна фича:
Когда стучимся в дверь и там ввод кода на уровень который уже был введён - выполняется автоматический ввод цифр, нужно только нажать Fire.
Мне кажется это излишнее упрощение.
Портирование на Вектор принципиально полностью совпадает с оригиналом?
Типа перенос "авторской идеи" ?
Просто мне кажется, что если будут некие "фишки" возможно это добавит интерес и тех, кто эту игру знал в оригинале.
Хотя я не игроман, и не знаю, что игрокам интереснее, увидеть полную копию, или знакомую игру с новыми "фишками".
Но наличие дверей со скачками по коридору наводит на мысль, что могла быть комната с дверью, которая открывает проход не в одну конкретную, а в 3-4 комнаты лабиринта, выбираемые случайным образом при каждом проходе через эту дверь. Это дополнительная интрига, местоположения в лабиринте.
;)
В предыдущих версиях, клавиши курсора не приятно обрабатываются, вроде долго держал, а в результате персонаж так и не сдвинулся с места. Особенно заметно на большом враге (не знаю как его назвать).

nzeemin
06.12.2020, 18:10
При портировании я ставил себе целью принести на Спектрум интересную игру - интересную прежде всего сюжетом конечно.
Плюс возникла мысль ещё портирования на Вектор - я увидел, что это относительно легко сделать, так что занялся и этим тоже.
Аудитории исходного девайса и Спектрума/Вектора (я думаю) пересекаются слабо, да и времени с выпуска оригинала прошло довольно много.
Обычно при портировании я делаю всё один-к-одному, заменяя только то что необходимо - вывод на экран, обработку нажатий.
Но конкретно на эту штуку (с постоянным вводом одних и тех же кодов) жаловались ещё пользователи оригиналной игры, ну и в ветке про портирование на Спектрум про это тоже сказали - так что решил это реализовать, и я считаю что это действительно улучшает геймплей.
Про двери со скачками - так а какая разница, тут связи между комнатами вообще-то могут быть заданы произвольно, но в целом лабиринт сделан относительно простым. Никаких сложных механик типа случайных переходов тут нет.
Про обработку клавиш - да, неидеально, но вряд ли уже буду переделывать.

nzeemin
02.02.2021, 11:06
Извиняюсь за задержку, приболел.
В аттаче слегка поправленная версия, но без каких-либо принципиальных изменений.
Давайте считать это релизом.

Скачать: https://github.com/nzeemin/vector06c-desolate/releases/download/release-20210202/vector06c-desolate-release.zip

nzeemin
04.02.2021, 12:36
Вопрос, а что нужно сделать чтобы игра легла в каталог? http://sensi.org/scalar/categories/recent20/

svofski
04.02.2021, 16:43
Просто попросить. Такой красоте в картотеке всегда рады =)

http://sensi.org/scalar/ware/912

Я ничего не выдумывал, просто скопипастил с пор\\\гитхаба. Если хочешь чего-то поправить, пиши, я исправлю.

nzeemin
04.02.2021, 17:05
Просто попросить. Такой красоте в картотеке всегда рады =)

http://sensi.org/scalar/ware/912

Я ничего не выдумывал, просто скопипастил с пор\\\гитхаба. Если хочешь чего-то поправить, пиши, я исправлю.

Спасибо. Пара поправок, если можно:
1. Описание игры


Порт игры Desolate.

Жанр - top-down Adventure/RPG в научно-фантастическом сеттинге.
Автор оригинала - Patrick Prendergast (tr1p1ea).
Оригинальная игра написана для научных калькуляторов TI-83/TI-84 - процессор Z80, экран 94 x 64 пикселя, 4 градации яркости.
Видео оригинальной игры: https://youtu.be/5UHqPMxeZnY

Маппинг клавиш Вектора:
- Движение в четырёх направлениях - стрелки
- Look/shoot - УС, Пробел
- Переключатель Look/Shoot - ТАБ, РУС/ЛАТ
- Инвентарь - 'I', 'M'
- Закрыть диалог (Escape) - АР2, ЗБ, ПС
- Выход в меню - 'P', 'R'


2. На странице автора http://sensi.org/scalar/author/289/
Хомяк - https://nzeemin.github.io/

3. А, сорри, ещё категории поправить. Это скорее Adventure чем Arcade.

------
svofski, спасибо, теперь всё отлично!

svofski
04.02.2021, 19:55
Ага. А то я поправил, а отписаться забыл =) Клевая игра, надеюсь собраться с духом поиграть.

ivagor
07.07.2022, 17:16
Лучше поздно, чем никогда - ускоренно посмотрел запись стрима с прохождением векторовской версии. lafromm31 и nzeemen - спасибо за стрим! Теперь все желающие могут убедиться, что векторовская версия рабочая и проходимая - это здорово, но меня смутила скорость в сравнении со спеком (наиболее заметно в меню и при скролле авторов). Ни на что не претендую, просто хочу, чтобы был и вариант пободрее для вектора.
Еще можно сделать цветные буквы как на спеке, но мне самому не хочется этим заниматься. А если браться за задачи посложнее, то можно еще ускорить, только надо серьезно перерабатывать, это долго и наверно не очень нужно.
nzeemen - отдельное спасибо за общедоступные исходники, они сэкономили много времени.

Upd 08.07.2022: Вторая доработанная версия сравнимая по скорости с вариантом для спектрума, с исходниками.

svofski
08.07.2022, 12:50
@nzeemin как лучше, закинуть эту версию вторым файлом, или ты обновишь официальную версию и я ее заменю?

ivagor
08.07.2022, 13:02
Сегодня попозже выложу еще улучшенную версию с исходниками.

ivagor
08.07.2022, 17:04
Под влиянием мотивации "достать спек" получилась еще версия (https://zx-pk.ru/threads/32499-portirovanie-desolate-na-vektor-06ts.html?p=1157716&viewfull=1#post1157716), которая достигла желаемой цели. Тут уже эго разбухло и я себя дописал в credits. Чтобы это факт не сильно раздражал, приложил исходники, где можно посмотреть, что изменилось и, при желании, удалить ненужных авторов.

nzeemin
10.07.2022, 09:00
@nzeemin как лучше, закинуть эту версию вторым файлом, или ты обновишь официальную версию и я ее заменю?

Закидывай доп.файлами с именем ivagor в названии -- вряд ли я доберусь свою обновлять.

- - - Updated - - -


Upd 08.07.2022: Вторая доработанная версия сравнимая по скорости с вариантом для спектрума, с исходниками.

Спасибо, быстрая версия для Вектора - это отлично.
Там есть конечно простор для оптимизации. Например, карта уровня распаковывается много раз. Алгоритм RLE там выбран очень неоптимальный.
Если же говорить про геймплей - стоило наверное сделать звук или мелодию, когда делаешь шаг вперёд по сюжету - применяешь предмет там где нужно.

nzeemin
05.08.2022, 23:14
ivagor, дотащил ваши оптимизации до репозитория по Desolate. Спасибо огромное!

ivagor
07.08.2022, 06:25
nzeemin, спасибо за портирование игрушки (и я не против общения на ты)!