PDA

Просмотр полной версии : Портирование BATTY на Вектор



nzeemin
16.03.2024, 00:27
Всем привет.
На этой неделе начал портировать на Вектор-06Ц игру Batty.
За основу взят код порта на Специалист Z80, который сделал CityAceE

https://pic.maxiol.com/thumbs2/1710537921.1595409335.photo2024031600244.jpg (https://pic.maxiol.com/?v=1710537921.1595409335.photo2024031600244.jpg&dp=2)

Репо с кодом: https://github.com/nzeemin/vector06c-batty

Пока выкладываю самое раннее превью, забагованное и еле работающее.
И это пока тоже версия под Z80 вариант Вектора.
batty-preview0.zip в аттаче

parallelno
16.03.2024, 01:40
Класс! Планируешь ли ты использовать цвет в игре? Было бы здорово раскрыть возможности вектора в графике.

CityAceE
16.03.2024, 09:26
Очень здорово! Уже практически играбельно.

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

А то, что главное меню проскакивается, это, я так понимаю, умышленно сделано?
Остальные мелочи, думаю, можно быстро пофиксить. Ну и ждём цвет и перевод кода на i8080 ;)

nzeemin
17.03.2024, 00:06
Пофиксил проблему с металлическими кирпичами.

Расширил управление. Теперь так:
- Движение: стрелки влево / вправо, Таб / ПС
- Огонь: пробел, стрелки вверх и вниз, ЗБ, ВК
- Джойстик-П

Начал постепенную трансформацию кода в сторону 8080, но из-за этого возможны новые глюки.
Когда начинал, количество проблемных строк (инструкции не поддерживаемые на 8080) было примерно 1400, сейчас их 993.
Самая большая проблема это конечно повсеместное использование IX и IY, там надо анализировать код и думать.

nzeemin
29.03.2024, 12:18
Первый этап работы по принципу "наброситься и херачить" закончился, осталось 713 ошибок и всё это в основном работа с регистрами IX и IY.
С этими регистрами использую две стратегии:
1. Используя HL, работаем с данными по (HL) и инкрементируем HL по записи объекта.
2. Используя HL, в начале процедуры патчим её код, расставляя по её коду адреса HL+N, соответственно, в коде дальше уже операторы вида ld A,(NN) и ld (NN),A
Идёт ооочень тяжело, по самым скромным подсчётам нужно недели три на это.

ivagor
29.03.2024, 16:02
Как вариант можно на первом этапе полуавтоматом заменить на единообразные универсальные макросы, а потом оптимизировать критичные места.