Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
продолжаю про парк ...
Сегодня сгенерил и поправил асм
т.е. в ром для MSX можно скомпилить
скомпилил его sjasmplus - заработало
вставил в начале кучку db, скомпилил - заработало
выкучил кучу db (всякие там фонты и прочее) и перенес в конец, скомпилил - заработало
вставил в начале области данных кучку db, скомпилил - заработало
конечно не все тестил, но стартует, музыку играет, начальные уровни работают
правда еще есть непонятности с самим sjasmplus
область данных там вся ds
а он ее добавляет 0 к бинарнику
---------- Post added at 15:26 ---------- Previous post was at 15:21 ----------
спасибо, это видел, музику посмотрю
а с экраном явно очень простые
гораздо интереснее в корветовских ITAExpress & Pacman
там хитрый вывод, 3 типа символов, с разным типом заполнения
и вывод спрайтов в pacman достаточно приличный есть
(целых 6 спрайтов, там кстати расспаковыные спрайты занимают 24к)
и там по 4 сдвига каждого а не по 8
То, что ром не работает в MSX - так и должно быть. Т.к. для бОльшего быстродействия при замене команд Z80 я специально использую модифицирующийся код. А так как в MSX игра запускается с картриджа (фактически ПЗУ), то разумеется, что модификация кода там не происходит, отсюда и глюки. В эмуляторе b2m есть возможность запустить ром в области ОЗУ (я чуть ранее давал правку конфига), поэтому именно он используется для отладки.
Кроме этого, все процедуры оптимизированы по быстродействию с учетом того, что на Векторе команды выполняются за количество тактов кратное 4-м. Т.е., например, при рекомпиляции в зависимости от количества итераций цикл может автоматически развернуться или нет. Поэтому при переносе на другую платформу, это тоже нужно учитывать, т.к. то, что хорошо для Вектора, не обязательно будет лучшим выбором для другой платформы.
А вообще, по моему скромному разумению, программирование Вектора - есть перманентный акт великого шаманства. Даже Michael Abrash с его Graphics Programming Black Book и извратами с кодом для Кваки рядом в изощрениях не стоит. Вектор - это такая удивительная платформа, где "ничего нельзя, но если очень хочется, то - можно". Сколько под него программаю, и это ощущение не проходит.
я наверное не совсем точно выразился
я разобрал ОРИГИНАЛЬНУЮ MSX ROM версию парка
Ваш исходник был точкой отсчета так сказать
из него перенес метки и структуру (то что перенеслось)
после этого ручками в IDA разбирал что и как
и вот этот исходник из IDA я и скомпилил сегодня
а по поводу "поправил" эт скорее про другое
например в IDA у меня отдельный сегмет для MSX VRAM
с метками для каждой строки, каждого символа PGT & PGC
там метки вид
LD DE,PGC3_12
LD DE,VL13+12h
их и преобразовал в константы вида
LD DE,PGC3+(12*8)
LD DE,VLINE+(13*32)
теперь надо отдельно делать Z80->i8080
но есть идея как СИЛЬНО облегчить себе жизнь
LST файл должен очень помочь
а то что писал выше - тесты что похоже оно более мение нормально дизассемблировалось ибо сдвиг кода/данных на вид не влияет на работоспособность
крутотень редкая
буду поглядывать в Ваш исходник, аж интересно стало
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
получается таки по LST файлу детектить z80 инструкции
вот статистика по park
это сколько раз встречается в исходнике
уже заменил
jr -> jp
djnz -> dec b;jp nz
ldir -> call _ldir_
все работает
причем работа с IX похоже только в муз плеереКод:[["jr", 372], ["djnz", 42], ["ldir", 15], ["bit", 54], ["ld", 43], ["set", 7], ["res", 6], ["rr", 6], ["out", 5], ["dec", 4], ["neg", 4], ["exx", 4], ["sbc", 2], ["reti", 2], ["pop", 2], ["add", 2], ["inc", 1], ["rl", 1], ["im", 1], ["push", 1], ["cp", 1]]
bit - надо менять более обдуманно, сохранять A нужно делеко не всегда
в общем работа ползет потрошку
А не лучше ли будет написать что то свое похожее, чем разгребать чужой код? Да и графику можно оптимизировать для использования всех возможностей Вектора.
возможно, но, графику в MSX играх можно оптимизировать и так достаточно не сложно
там графика отдельный граф процессор
и обращение к нему четко известны, и понятно как оптимизировать
в свое время на корвете (и на векторе тоже вроде)
хорошие порты ямаховских игр задали планку качества
и на корвете до них мало кто смог дотянуться
на векторе вроде с этим получше, но все равно - порты это пример
а вообше игровая механика - штука тонкая
например в pacman фирменном каждый соперник имеет свою логику
и даже есть целые стратегии как уходить от каждого из них
есть ОГРОМНЫЙ документ с описанием
кстати к сожалению на корвете/векторе цвета убили при портировании
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)