PDA

Просмотр полной версии : Ремейк Athletic Land by Konami



esl
27.08.2012, 16:30
создаю тут тему, для заинтересованных, что было место где обсуждать

начало
была такая игра на компьютерах MSX
Athletic Land (1984) by Konami

https://dl.dropbox.com/u/490774/yg_F80_screen.png

вот видео прохождения (http://www.youtube.com/watch?v=15u-M5wI8Ek)

а вот видео Atletic Land для ПК8020 Корвет (http://youtu.be/kgrLuhoWkYA)


и вот однажды я увидел на форуме
http://zx.pk.ru/showpost.php?p=527854&postcount=32
прототип много уважаемых специалистов по портированию Ivagor/Tim0xA порта на Вектор

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

для того чтобы можно было портировать игру на другие платформы
(способ рекомпиляции используемый ivagor & Tim0xA имхо подходит только для не очень сложных игр)

в общем, что имеем
репозиторий на bitbucket
https://bitbucket.org/esl/park_dissassm

там лежит разбираемая мной версия для MSX
сейчас она собирается в играбильную версию для MSX
там частично разобран код

по крайней мере уже понятно как можно портировать игру
без особой эмуляции (или с ее минимумом)

записи думаю вести тут.

что облегчит перенос
думаю сделать порт z80->i8080
это не очень сложно ибо код так написан

сейчас четко есть продцедуры которые отрисовуют фоны на всех уровнях (т.е. можно рисовать самому)

и понятно где обображаются спрайты, они только в 1м месте на экран пинаются

понятно где реализована анимация элементов уровней

в общем можно пробовать.

я буду потихоньку двигаться, я в теории хочу сделать порт на Корвет

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

там же есть вики, будем там дублировать ответы
https://bitbucket.org/esl/park_dissassm/wiki/MSX_VDP_Screen2

ivagor
28.08.2012, 18:42
Было бы здорово, если бы одним из побочных результатов проекта стал транслятор команд z80->i8080, работающий на уровне ассемблерного текста. Очень желательно, чтобы соответствие команд описывалось отдельным файлом (не было спрятано внутри exeшника).

esl
28.08.2012, 20:47
Было бы здорово, если бы одним из побочных результатов проекта стал транслятор команд z80->i8080, работающий на уровне ассемблерного текста. .

собственно только хотел написать ;)
на сейчас на битбакете версия
где в коде игры все z80 заменил на 8080

z80 остался в MSX specific частях
типа инициализации,
INT_Handler
работа с vdp/клавиатурой/джойстиком
муз плеере (как понимаю его можно взять из рекомпиляции парка для вектора)


еще не трогал z80 в
z80_mirror sprites
z80_bitswap

это в процедурах которые формируют знакогенератор
можно тоже сделать но имхо нет смысла ибо эту часть имеет смысл осознанно переписывать


у тех комманд что не изменил есть комент вида ;z80_(why)



Очень желательно, чтобы соответствие команд описывалось отдельным файлом (не было спрятано внутри exeшника).

совсем не понял этого :(

у меня сейчас все мои изменения в исходнике
выглядят так


;esl
; ld a, r
call rand_8
;esl

;esl
; bit 0, b
ld a,b
and 1<<0
;esl

;esl
; neg
cpl
add a,1
;esl

; ld hl, PlayerYPos
; ld de, (unk_E200)

ld de, PlayerYPos
ld hl, (unk_E200)
ex de,hl


в общем при всех изменениях есть исходный код



сейчас оно собирается в MSX ROM и там работает,

попутно выяснил не очень приятный момент

переменные у меня сейчас живут как и раньше на E000
и они вообще байт в байт как и было

надо было вствить новый байт с e000 (rnd seed)
вылез глюк с прыжками на веревках
видимо надо дальше копать их
или не трогать

я руками ходил по инструкциям и менял сам все кроме
jr->jp
call ldir

в остальных местах вроде смотрел как можно не делать лишнего
типа для BIT смотрел где можно не сохранять A
в общем в репозитории можно посмотреть историю
там последние именно про это пример (https://bitbucket.org/esl/park_dissassm/changeset/4770f989c89813042cc74997d1e1a467)


было бы полезно чтоб кто-то свежим взглядом это пересмотрел
с DIFF это делать легко

----

как работает детектор z80 (z80opcodeDetector.rb (https://bitbucket.org/esl/park_dissassm/src/95dab498a190/z80opcodeDetector.rb))
идея такая
опкоды для комманд специфичных для z80 известны

0x08,0x10,0x18,0x20,0x28,0x30,0x38,
0xcb, 0xd9, 0xdd, 0xed, 0xfd,

ассемблируем наш исходник в LST файл
далее в каждой строчки LST находим опкоды
и выводим если первый байт есть в списке z80only

ваша критика метода ?

---------- Post added at 19:47 ---------- Previous post was at 19:38 ----------

-----------------------
и собственно, park_x2.rom из репозитория можно загрузить в эмулятор MSX и посмотреть что есть

правда сейчас там для отладки
переход на следующий уровень это ЛЮБОЙ выход с экрана
т.е. сейчас если ходить лево право будет переключение экранов ;)
и можно их посмотреть/поиграть

ivagor
28.08.2012, 21:53
Детектор - это хорошо, но я подумал - вдруг транслятор будет.

esl
28.08.2012, 22:15
Детектор - это хорошо, но я подумал - вдруг транслятор будет.

не вижу смысла делать аналог "рекомпилинг систем"
анализ все равно надо делать руками
IDA все равно сделает ее по удобству ;)

ivagor
29.08.2012, 06:12
IDA все равно сделает ее по удобству ;)
Дизассемблирующую часть recompillera - да, а для транслирующей то части автоматической полнофункциональной альтернативы нет. Тем более иногда исходники для z80 уже есть и дизассемблер не нужен (хотя и recompiller в этом случае не помогает, если им еще раз не дизассемблировать). Но я понял, что автоматическая трансляция - не Ваш метод и, по крайней мере в рамках парка, соответствующего инструмента ждать не стоит.

esl
29.08.2012, 13:40
а для транслирующей то части автоматической полнофункциональной альтернативы нет.


сделать на описанном выше принципе "авто трансляцию" вполне элементарно
особенно если есть только один асм файл, а изначально так и есть
и при простой замене это очень легко ;)


я просто не хотел ее делать, их в данном коде оказалось вменяемое кол-во
можно сделать руками, и это оправданно

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

-----

чего долго ходить, вот собственно набросок рекомпилятора (https://dl.dropbox.com/u/490774/z80-recompiler.zip)

на входе у него p2.asm
на выходе p2-i8080.asm
в начале у него статистики немного :)
а дальше все z80 комманды в таком окружении

;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ESL #36
;CB F2 :: set 6, d ; 6=1 - write
set 6, d ; 6=1 - write
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ESL #36

;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ESL #4486
;ED 5B 72 E1 :: ld de, (unk_E162)
ld de, (unk_E162)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ESL #4486


где после ESL стоит номер строки исходного ASM файла
далее идет опкод и комманда на всяк случай

собственно пример демонстрирует что детектор работает
дописать "рекомпилятор" не сильно сложно
есть и опкод и текстовая строка
можно и сюда добавить ;)
(правда местный народ как-то скриптовые языки не сильно уважает, а зря)

как работает, сначала компилим в LST файл
дальше парсим LST, извлекаем номера строк и опкоды для z80only инструкций
далее берем оригинальный asm и обрабатываем уже известные строки

esl
29.08.2012, 19:50
мини отчет,

сегодня еще больше порезал на файлы
и немного привел в порядок исходники

добавил вывод на экран дебаг инфы в процессе;)

esl
29.08.2012, 22:01
а для транслирующей то части автоматической полнофункциональной альтернативы нет.

не обратил внимания на эту часть
что имеется в виду ??

ivagor
30.08.2012, 07:06
Цитата:
Сообщение от ivagor Посмотреть сообщение
а для транслирующей то части автоматической полнофункциональной альтернативы нет.

не обратил внимания на эту часть
что имеется в виду ??

А я воспринял вот этот фрагмент

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


я просто не хотел ее делать, их в данном коде оказалось вменяемое кол-во
можно сделать руками, и это оправданно

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

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

esl
30.08.2012, 11:16
А я воспринял вот этот фрагмент

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

устал, вечер :(

esl
31.08.2012, 01:54
в папку vdp/sceneBuild
выдрал все элементы из которых "строится" сцены
посмотреть можно тут (https://bitbucket.org/esl/park_dissassm/src/a6ebc78789dd/vdp/sceneBuild)

эт собственно к чему, имхо проше эти сцены отрисовывать самому
чем делать эмуляцию экрана тут

содержимое экрана в игре посимвольно обновляется только
в сцене с "канатами", "трамплинами" и "костром"

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

код всех этих функций в _scene_*.asm

esl
31.08.2012, 15:48
добавил фазы анимаций (фонтан, веревка, костер)
и теперь на PGT выделяетются символы которые используются
(видно из каких и какие символы используются)

теперь есть и все эллементы "сцен" которые используются для построения
и фазы анимациии внутри сцен которые используются в игре
в самой игре теперь можно ни использовать "символьный экран"

можно тоже самое сделать для меню и вообще тога текстовый не нужен ;)

вот ссылка на текущую ревизию (https://bitbucket.org/esl/park_dissassm/src/64e49f235bee/vdp/sceneBuild)
но проще скачать все ;)

вот пару анимаций
https://dl.dropbox.com/u/490774/yg_rope.gif
https://dl.dropbox.com/u/490774/yg_fountain.gif

esl
31.08.2012, 20:41
перенес анимации в отдельный фолдер
и для rope теперь видно какие именно тайлы он перерисовыает
(для остальных анимаций эт не имеет смысла)
тут он сразу затирает то что было на прошлом шаге

для фонтана например всегда рисуем блок символов 3x8

https://dl.dropbox.com/u/490774/ani_rope.gif

кстати про веревку, в роме хранится только левая фаза веревки (до вертикального положения)
вторая часть генерится на ходу, при подготовки PGT

так же генеритятся "горы и небо", там в оригинале только один вариант
остальные оно генерит из него

Tim0xA
01.09.2012, 01:31
и вот однажды я увидел на форуме
http://zx.pk.ru/showpost.php?p=527854&postcount=32
попытку многоуважаемого Tim0xA порта на Вектор
попытка к сожалению частичную
esl, поправочка: порт не мой, я только рекомпилировал код z80->i8080

ivagor
01.09.2012, 06:39
Все же та версия была не законченным портом, а прототипом.

esl
01.09.2012, 09:05
Прототип имени Ivagor ?

---------- Post added at 08:05 ---------- Previous post was at 07:59 ----------

анимации получились тестом на PVA матрицы ;)
цвета получились такие что глядя на матрицу под 90 градусов (как обычно смотрят)
картинка очень бледная
а если смотреть не перпендикулярно - появляются цвета
первый раз так явно этот эффект вижу

Tim0xA
01.09.2012, 14:20
Все же та версия была не законченным портом, а прототипом
Да, так вернее.

А вообще, меня очень радует, что этот прототип способствовал возрождению темы рекомпиляции и портирования с MSX и появился по-крайней мере еще один энтузиаст в этом направлении, который что-то реально делает )) Буду внимательно следить за этой темой, как минимум ;)

esl
03.09.2012, 11:33
вон сделал некий proof of concept
само собой для Корвета ;)

открывать в любом эмуляторе

таки эмулятор "screen 2"

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

то что сейчас, это вывод только разницы между двумя "экранами"

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

задумка в общем - картинка в двух(+1) битпланах
а монохромные спрайты в третьем битплане
посмотрим по скорости что будет ...

исходники там есть

p.s. на корвете текстовый режим влияет на цвет вывода (как еще один битплан)
но там можно рисовать квадратики с точностью 4x4 пиксела
так что сильно много не сделать, разве что для статики.

корвет
3717537176
msx
3717837179

esl
08.09.2012, 22:28
очередной пруф
на этот раз анимация

переписал "эмулятор" screen2

и анимация из кода игры

нашел "баг" в дизасме зато
там есть такой унпакер "Unpacker_5F65"
ему передаются ссылки на контролстреам и датастреам
так вот, в контролстриме есть команда указания адресса в VRAM
и там привязка к 3800h (VDP)

обнаружелось т,к, у меня буфер конечно не в 3800
и деревья неправильно отображались
поправлю чуть позже в дизасме

собственно в демо
по очереди все 4 варианта отображения деревьев
и анимации фонтана и веревок

вроде не плохо работает.

вот ссылка на видео (http://youtu.be/FYzfyPo4XGY) ;)

esl
13.09.2012, 02:02
Стартовая анимашка, заработало вроде без граблей
(сдвинул AthleticLand в знакогенераторе для удобства)

с использованием АЦЗУ получились цвета почти как в оригинале.

надо приступать к спрайтам, ибо все остальное вроде должно работать
ужасть ужасть

esl
14.09.2012, 00:35
попробовал посмотреть как работает музыка/звуки
на Корвете только 1 канал ВИ53 за звук отвечает.

для начала взял эмулятор AY из порта для корвета Driller-src
(пришлось получить _zvi53.asm методом ассемблировать его а потом в ida получить z80, благо мелкий он)

заработало странно, стал дальше проверять
вот что получилось в результате

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

на диске демки

после запуска на экране название драйвера (и мусор ;)
далее ждёт кнопки

1 на доп (цифровой) клавиатуре - main music theme

0-7 на основной клаве - эффекты
shift 0-7 на основной клаве - эффекты

0-7 на цифровой клаве - музыки
shift 0-7 на основной клаве - музыки

3я цифра на экране - номер "эффекта"

выход только ресет

m4.com _zvi53.asm
такое впечатление что играет только один канал
эффектов нет вообще

m3.com _zvi53_xyzon.asm
такое впечатление что играет только один канал
эффектов на вид работают

m2.com _zvi53_pacman.asm
музыка на самая крутая
эффектов нет вообще

m1.com _zvi53_binaryland.asm
мелодия играет и даже узнаваема, но явно сильно проще чем в M2
эффектов на вид работают
даже на фоне проигрования музыки работают.


собственно может кому и пригодится еще
и если бы спецы глянули, может из этого всего можно сделать 1 но работающее совсем ;)

хотя меня берет сомнение нужна ли музыка на Корвете ;(
ибо сильно громко оно
вот если бы можно было музыку сделать тише раза в 2
а эффекты оставить

но по крайней мере что-то работает и есть из чего выбрать

esl
14.09.2012, 00:46
еще при конвертации ay плеера из z80->i8080
придумал забавную вроде фичу

там постоянно используется IX+
чтоб не городить арифметику постоянную

там есть 3 канала
и IX указывает на данные по каналу
каждый блок данных по каналу - 10 байт
причем грузим в IX данные канала и делаем call doSOUNDChennel
я завел еще 10 байт, назвал из _IX_
и перед вызовом call doSOUNDChennel
копирую в буфер данные из "данных канала" а после назад
немного подрехтовал код
правда пришлось влезть в зацикливатель мелодии влезть
но эт не так страшно
но заработало.

ivagor
14.09.2012, 18:08
все работают по разному
Наверно я буду за капитана очевидность, но все же напишу.
Если отвлечься от несколько большей функциональной полноты в xyzon, то просто в каждом случае выбрали разные два канала AY из трех: binary A и C; pacman A и B; xyzon B и С.
При этом в Athlethic Land музыка играет по каналам A ("мелодия") и B ("бас"), а по C идут эффекты.


1 но работающее совсем
Интересно было бы взглянуть на трехканальный вариант для корвета.

esl
14.09.2012, 22:31
Наверно я буду за капитана очевидность, но все же напишу.


неа, я совсем далек от звука и тем более эмуляции AY
на такой ответ и рассчитывал (надеялся) ж)


Если отвлечься от несколько большей функциональной полноты в xyzon, то просто в каждом случае выбрали разные два канала AY из трех: binary A и C; pacman A и B; xyzon B и С.
При этом в Athlethic Land музыка играет по каналам A ("мелодия") и B ("бас"), а по C идут эффекты.

эт можно посмотреть, в плеере отключить каналы.


Интересно было бы взглянуть на трехканальный вариант для корвета.
все так плохо ?
но 2ж сделали
вроде даже 3 ?

ivagor
14.09.2012, 22:49
А можно узнать, кто дизассемблировал эти процедуры (просто интересно, почему метки названы по разному)?


но 2ж сделали
вроде даже 3 ?
Говорю серьезно, без подколок, что мне было бы интересно взглянуть на 3х канальный вариант эмулятора AY для корвета.
Чисто умозрительно могу представить такой подход: если я правильно понимаю, то можно организовать прерывания с частотой, заданной счетчиком 2 таймера чаще, чем через 20 мс. Если это так, то повесить на это прерывание SoundProcInt и теоретически может и 3 канала будут более-менее играть, хотя скорее всего будет дребезжать.

esl
14.09.2012, 23:02
А можно узнать, кто дизассемблировал эти процедуры (просто интересно, почему метки названы по разному)?

я :(
по по образу и подобию vi53.asm,

одинаковые метки делал вроде одинаковыми
остальные чтоб не оставалось меток вида Lxxxx
могу отдать idb
или с удовольствием исправлю чтоб было правильно ...
(и вывести в i8080 asm если надо)



Говорю серьезно, без подколок, что мне было бы интересно взглянуть на 3х канальный вариант эмулятора AY для корвета.
Чисто умозрительно могу представить такой подход: если я правильно понимаю, то можно организовать прерывания с частотой, заданной счетчиком 2 таймера чаще, чем через 20 мс. Если это так, то повесить на это прерывание SoundProcInt и теоретически может и 3 канала будут более-менее играть, хотя скорее всего будет дребезжать.

если ваша бригада не сделает, то не судьба ;)

в теории для Корвет2 можно сделать прерывание c кратной HBL
но вроде пока нет эмулятора который бы это эмулировал
(b2m обещал ;)

ivagor
14.09.2012, 23:33
idb не надо, спасибо, насчет меток я из чистого любопытства спросил. В pacman например xayr10, а в binary subAY10_b и т.п. думал разные люди делали.


в теории для Корвет2 можно сделать прерывание c кратной HBL
но вроде пока нет эмулятора который бы это эмулировал
(b2m обещал
Если я правильно понимаю, что у него написано в Korvet.cfg:
tim : K580wi53 {
clock[0].rate=4/5
clock[1].rate=4/5
clock[2].rate=1/A4 - 2.5e6/164=строчная частота (от ТВ-стандарта чуть отличается, но это похоже не критично)
gate[0].value=1
gate[1].value=1
gate[2]=vid.svbl - вертикальное гашение является gatом для 2го счетчика
}

intctl : K580wn59 {
irq[0]=ppa2.portC[7]
irq[3]=lan.irq
irq[4]=vid.irq
irq[5]=tim.out[2]
}
то это уже сделано. Надеюсь он меня поправит если я ошибся (или можно проверить).

esl
15.09.2012, 02:33
Чуть причесал и таки немного поразбирался с эмулятором (спасибо за идею)
увидел где каналы на вывод используются

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

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

p.s. а как же забавно попало что в 3х драйверах 3 варианта каналов ;)

svofski
15.09.2012, 06:25
Ускоренные умножения и деления, вдруг пригодится:
http://www.cirsovius.de/CPM/Projekte/Artikel/Mathe/MULDIV/MULDIV.html

esl
17.09.2012, 01:17
вот и первая альфа родилась ;)

в общем прикрутил эмулятор scr2 & sprites

клавиатуры пока совсем нет, смотреть можно только дему.

со спрайтами надо что-то серьезно делать

идеи есть

пока на экране всего 7 спрайтов а оно уже изрядно тормозит
с игорком вроде можно сделать из 4х спрайтов только 2
и вывод есть куда оптимизировать

на картинке еще не все символы в знакогенераторе есть, пока до них руки просто не дощли ;)

.com файл 48к ;)
из них одниз спрайтов 25к

esl
19.09.2012, 01:19
уже играбельная альфа

тормозят не спрайты а обновление PNT
сначала довести все уровни (PNT etc)
следующим этапом оптимизация всего (и SCR2 и sprites) есть куда

эх, сюда бы художника

ivagor
19.09.2012, 14:05
эх, сюда бы художника
Да уж, иногда при переносе приходится жертвовать цветами и по сравнению с MSXным оригиналом общее число цветов сокращается. Для корвета и некоторых других советских ПК можно было бы взамен увеличить цветовое разрешение, но для этого нужен художник.

esl
19.09.2012, 19:47
золотые слова
но у вектора хоть палитра есть ....

новая альфа
переписалы вывод текстового экрана, чуть быстрее работает вроде

объеденил пары спрайтов и по скорости минус 2 спрайта на вывод
и меньше места занимает
около 9к экономии.

из сильных багов
не работает препятствие с тыквой
и странный баг со спрайтами при падении вниз лицом влево ;)

но уже вроде играбильно

ivagor
19.09.2012, 20:20
esl, планируешь менять спрайтовые процедура на "классические" (и для корвета и для вектора) - стирание push, вывод pop и mov?

esl
19.09.2012, 22:24
esl, планируешь менять спрайтовые процедура на "классические" (и для корвета и для вектора) - стирание push, вывод pop и mov?

собираюсь пробовать, но там не особо поможет, организация экрана не ахти
построчная в отличии от векторовской

максимум что то типа
стирание


ld bc, -66
ld de, 0FFFFh

inc hl
ld sp, hl
push de ;1
push de
add hl, bc
ld sp, hl
push de ;2
push de
add hl, bc


вывод


ld sp, hl

ld hl, (SPR_New_Player)
ld bc, 59 ; 64-5

pop de
ld (hl), e
inc hl
ld (hl), d
inc hl
pop de
ld (hl), e
inc hl
add hl, bc

ld (hl), d
inc hl


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

у меня сечас без попоа
просто

стирание


ld a,0ffh
dup 16
ld (hl), a
inc hl
ld (hl), a
inc hl
ld (hl), a
add hl, bc
edup


вывод


ld bc,64-2
ld a,0ffh
dup 16
ld a,(de)
ld (hl), a
inc hl
inc de
ld a,(de)
ld (hl), a
inc hl
inc de
ld a,(de)
ld (hl), a
;inc hl
inc de
add hl, bc
edup


там есть еще логику вывода оптимизировать
и пока не спрайты тормозят, а таки обновление PNT
всетаки 768 байт вычитать и сравнить с буфером, похоже много


уже совсем скоро открою репозиторий

ivagor
20.09.2012, 14:42
и пока не спрайты тормозят
Пусть даже они не самый главный тормоз, но в верхней части они мигают/пропадают. Возможно хватит просто смещения области вывода в середину или вниз, чтобы отодвинуться от прерывания (момент прихода прерывания от видео в emu совпадает с реалом? правда корветовские программы я запускаю в старой версии от 24.08.2011), а возможно придется еще и ускорить вывод спрайтов.
"Классические" процедуры, кстати, можно чуть ускорить, но это, конечно, не принципиально.

esl
20.09.2012, 18:10
ух ты, спасибо за наводку, я в своем эмуляторе отлаживаюсь а там нет такой точности, бум посмотреть

новая альфа

теперь не все PNT просматриваем на предмет обновления
а нужные для сцены куски, СИЛЬНО попустило ;)

кстате, очень похоже что и векторовский порт в основном тормозил по этой причине.

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

ivagor
20.09.2012, 18:27
теперь не все PNT просматриваем на предмет обновления
а нужные для сцены куски, СИЛЬНО попустило
Прогресс по скорости на сцене с веревками впечатляет!

esl
20.09.2012, 18:34
Прогресс по скорости на сцене с веревками впечатляет!

ага, меня тоже
и фонтаны (эт 11 уровень)

p.s. сейчас любой выход с уровня это переход на следующий
возврата на пред. нету для отладки ;)

хотя надо еще ускорять.

esl
21.09.2012, 14:47
во блин, сделал вывод спрайта только если он обновился
все классно, но работает криво

надо перерисовывать все :(
спрайт оказывается может быть затерт и другим спрайтом, и соответственно будет бага

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

ivagor
21.09.2012, 14:58
Можно перерисовывать не все спрайты, но тогда нужно отслеживать их координаты, считая при этом спрайты прямоугольниками. Если при выводе или стирании текущий прямоугольник кого-то задел - их тоже надо перерисовать.

esl
21.09.2012, 16:27
Можно перерисовывать не все спрайты, но тогда нужно отслеживать их координаты, считая при этом спрайты прямоугольниками. Если при выводе или стирании текущий прямоугольник кого-то задел - их тоже надо перерисовать.

эт точно делать лень ;)
попробуем хоть экономить на вычеслении адресов

esl
23.09.2012, 19:19
другой вариант вывода спрайтов
в основном не мигает в эмуляторе b2m

чищу исходники и открываю репозиторий

думаю еше два бага исправить и наверное все

звук может быдет когда сдедующий раз вдруг дойдут руки

esl
23.09.2012, 19:50
открыл репозиторий
https://bitbucket.org/esl/park_korvet/

вроде везде где лез своими руками стоят метки
разделить четко не получилось, местми есть добавления в MSX коде

тоже задачка на будующеее, порезать правильно

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

попозже добалю скриттик который использовал при генерации PGT

совсем забыл
b.bat - ассемблировать
с.bat - запустить эмулятор (F6 турбо - чтоб не ждать, F9 - dbg, F12 - exit, F7 lut DBG, f10 bwmode)
все тулзы лежат внутри

esl
25.09.2012, 10:21
новая бета и таки стековые спрайты ;)

esl
25.09.2012, 19:39
нашел багу с "фруктой", закоментировал код который казаляс не нужным
вторая бага оказалась и в родной msx версии, нафиг ее

ускорил "clearfromcenter"
и бинарник с новыми спрайтами
решил не аттачить а ставить ссылку на репозиторий
https://bitbucket.org/esl/park_korvet/src/370cb68ba8d3/tools/disk.kdi

esl
28.09.2012, 19:22
вставил переключение палитры в int_handler
стало визуально видно что сколько занимает
b2m emu - rulez!

blue - sprite
green - main game routine
red - scr2 emu
gray - end of int

реально спрайты не успевают за VBL отработать
а вот SCR2 эмулятор - это да, тормоз редкий

то что проскакивает красное во время "обычных" экранов
это обновление верхних двух строчек 1P/2P & scores & timer

выглядит призабавно
особенно смотреть как прыгает sprite в зависимости от кол-ва спрайтов на экране.

ivagor
04.10.2012, 20:57
esl, а как же забота о казуальщиках, чтобы с нормальными цветами посмотреть, пришлось аж 5 строчек комментировать и компилировать :)
Может стоит убрать черточку ("тень")?

esl
05.10.2012, 00:28
esl, а как же забота о казуальщиках, чтобы с нормальными цветами посмотреть, пришлось аж 5 строчек комментировать и компилировать :)

Может стоит убрать черточку ("тень")?

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

сделаем .com/.bin/.rom и хватит.

та оно забавно с тенью, можно ее отдельно "оптимизировать" ;)
выкинуть - легко

про спрайты
максимум что увидел пока 3 рыбки + 3 каштана +2+-1 человечка
максимум 9 спрайтов на экране
в теории может еще быть пчела, но лень смотреть.

и эт при том что оптимизировал человечка, было 4 спрайта на него, по 2 объеденил

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

esl
23.12.2012, 02:32
после длинной паузы,

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

имхо это оказалось проще чем думать над умным выводом спрайта, и вроде не супер накладно

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

уже похоже на игру стало,

репозиторий (https://bitbucket.org/esl/park_korvet/) обновил,
новый диск с бинарником тут (https://bitbucket.org/esl/park_korvet/src/6209d3352986a0392dbf4fbe3780203031b4a4b4/tools/disk.kdi)

esl
25.12.2012, 21:01
еще немного причесал

переделал тень. она теперь волнистая и 2 строки (пока для пробы)
и мордочки чуть раздвинул

добавил включение выключение дебага
во время игры '0' - вкл вывода времени на бордере
'9' - сдвиг VBL с начала экрана (мой дебаг)
заодно мелкий баг исправил

это все можно в эмуляторе b2m посмотреть

попробовал прикрутить звук (пока музыку не хочу)
эмулятор взял из НИИСЧЕТМАШевских игрушек,
оно в эмуляторе B2M странно шумит, в моем - фона нет

вот версия со звуком 38947
вот без 38948

esl
07.01.2013, 03:05
апдейт.
последний бинарник https://bitbucket.org/esl/park_korvet/src/d5c87003ec3ee096893d8fe80672dd1181c842ec/tools/disk.kdi

подчистил звук
добавил месагу на экране (типа копирайт)

надо добавит вкл/выкд звука

добавил кое-какого дебага в вывод спрайтов

в эмуляторе B2m - стратуем, и после старта уровня
жмем сначала 0 потом 9
и идем например на экран с падающими каштанами или рыбками
забавно однако.

получилось сделать РОМ для внешнего рома.

esl
27.01.2013, 16:41
Звуковые эффкеты оставил
музыку - отключил
по кнопке 'S' - выключает и выключает звук (с иконкой на экране)

образ диска с версией (https://bitbucket.org/esl/park_korvet/src/c07ff79b7d94fb9a6e5bb5e2021d130f12709e75/tools/disk.kdi?at=default)

marinovsoft
10.02.2013, 13:01
Вчера проверил на реале, на нем звук тоже странный.
А три недели назад с помощью этой игры обнаружился баг в эмуляторе WadiM'а, который был оперативно исправлен. _http://soviet-pc.narod.ru/sandbox_ru.html

esl
10.02.2013, 14:43
Вчера проверил на реале, на нем звук тоже странный.
А три недели назад с помощью этой игры обнаружился баг в эмуляторе WadiM'а, который был оперативно исправлен. _http://soviet-pc.narod.ru/sandbox_ru.html

Супер !
оно работает, я болько на эмуляторах пускал ;)
а можно видео с реала отснять ?
причес несколько, с включенным debug и без ??

marinovsoft
10.02.2013, 14:58
Можно, но это будет не ранее следующего уик-энда.

esl
16.02.2013, 01:39
просьба по записи ;)
1) просто пройти несколько уровней
(желательно с веревками, фонтаном, рыбками)
если идти за ближний край экрана то переходит на следующий уровень
и еще было бы интересно попрыгать на батутах (там где яблоко)
перед и за яблоком (чтоб видно было не стирается ли)
и на уровне где еще "каштаны" но эт уже как получится

2) с начала игры
во время игры '0' - вкл вывода времени на бордере
'9' - сдвиг VBL с начала экрана (мой дебаг)

собственно нажать сначала 0 потом 9
на бордере должна включится мигалка
записать бы поведение тех же уровней ;)
но эт для интререса, как оно будет выглядеть на реальном железе вообще неизвестно
только в эмуляторах ;)

3)ну и поклацать звуком "S" и походить /попрыгать
чтоб послушать как оно себя ведет.

заранее спасибо!!!

marinovsoft
17.02.2013, 18:03
Прошу прощения за качество, вот что получилось. Там, где на видео виден заворот сверху и мерцание - это был включен режим "0","9"
http://video.yandex.ru/users/mehfk/view/5/
http://video.yandex.ru/users/mehfk/view/6/
http://video.yandex.ru/users/mehfk/view/7/

esl
17.02.2013, 19:06
огромное спасибо !
даже захотелось откапать свой контур ;)

esl
19.02.2013, 14:34
кстати, эт не самая последняя версия на видео
последняя всегда есть в репозитории на битбакете
https://bitbucket.org/esl/park_korvet/src

последний KDI в src/tools/disk.kdi
последний COM в src/out/XPARK.COM
прямых ссылок не дам, ибо они зависят от версии
история изменений можно глянуть тут https://bitbucket.org/esl/park_korvet/commits/all

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

esl
22.03.2013, 02:51
выложил на youtube видео последней версии
http://youtu.be/kgrLuhoWkYA