![]() |
Quote:
|
Quote:
|
продолжаю про парк ...
Сегодня сгенерил и поправил асм т.е. в ром для MSX можно скомпилить скомпилил его sjasmplus - заработало вставил в начале кучку db, скомпилил - заработало выкучил кучу db (всякие там фонты и прочее) и перенес в конец, скомпилил - заработало вставил в начале области данных кучку db, скомпилил - заработало конечно не все тестил, но стартует, музыку играет, начальные уровни работают правда еще есть непонятности с самим sjasmplus область данных там вся ds а он ее добавляет 0 к бинарнику ---------- Post added at 15:26 ---------- Previous post was at 15:21 ---------- Quote:
а с экраном явно очень простые гораздо интереснее в корветовских ITAExpress & Pacman там хитрый вывод, 3 типа символов, с разным типом заполнения и вывод спрайтов в pacman достаточно приличный есть (целых 6 спрайтов, там кстати расспаковыные спрайты занимают 24к) и там по 4 сдвига каждого а не по 8 |
Quote:
Кроме этого, все процедуры оптимизированы по быстродействию с учетом того, что на Векторе команды выполняются за количество тактов кратное 4-м. Т.е., например, при рекомпиляции в зависимости от количества итераций цикл может автоматически развернуться или нет. Поэтому при переносе на другую платформу, это тоже нужно учитывать, т.к. то, что хорошо для Вектора, не обязательно будет лучшим выбором для другой платформы. |
Quote:
|
Quote:
я разобрал ОРИГИНАЛЬНУЮ 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 файл должен очень помочь а то что писал выше - тесты что похоже оно более мение нормально дизассемблировалось ибо сдвиг кода/данных на вид не влияет на работоспособность Quote:
буду поглядывать в Ваш исходник, аж интересно стало |
получается таки по LST файлу детектить z80 инструкции
вот статистика по park это сколько раз встречается в исходнике уже заменил jr -> jp djnz -> dec b;jp nz ldir -> call _ldir_ все работает Code:
[["jr", 372],bit - надо менять более обдуманно, сохранять A нужно делеко не всегда в общем работа ползет потрошку |
1 Attachment(s)
Quote:
|
А не лучше ли будет написать что то свое похожее, чем разгребать чужой код? Да и графику можно оптимизировать для использования всех возможностей Вектора.
|
Quote:
там графика отдельный граф процессор и обращение к нему четко известны, и понятно как оптимизировать в свое время на корвете (и на векторе тоже вроде) хорошие порты ямаховских игр задали планку качества и на корвете до них мало кто смог дотянуться на векторе вроде с этим получше, но все равно - порты это пример а вообше игровая механика - штука тонкая например в pacman фирменном каждый соперник имеет свою логику и даже есть целые стратегии как уходить от каждого из них есть ОГРОМНЫЙ документ с описанием кстати к сожалению на корвете/векторе цвета убили при портировании :( |
Quote:
Quote:
Quote:
1) версия MSX http://s018.radikal.ru/i514/1208/fe/8c6c93cacc5f.jpg 2) версия ПО "Счетмаш" http://s019.radikal.ru/i620/1208/b7/d5b6bf403ccb.jpg 3) "новая волна" http://s017.radikal.ru/i424/1208/9d/772e7f3af486.jpg |
Quote:
про остальные игры - имхо близко к реальному - хорошо но они делали тоже вполне приемлеммо ;) вот тот текст про который я говорил pacmandossierl там 4 цвета, и КАЖДЫЙ имеет свое поведение при портировании они убили цвета, и отличить их нет способа ;) но я про это узнал только прочитав статью и думаю что авторы порта даже не думали про это ибо реализовать на Корвете/Векторе думаю вполне реально Blinky: The red ghost's character is aptly described as that of a shadow and is best-known as “Blinky”. In Japan, his character is represented by the word oikake, which means “to run down or pursue”. Blinky seems to always be the first of the ghosts to track Pac-Man down in the maze. He is by far the most aggressive of the four and will doggedly pursue Pac-Man once behind him. Pinky: Nicknamed “Pinky”, the pink ghost's character is described as one who is speedy. In Japan, he is characterized as machibuse, meaning “to perform an ambush”, perhaps because Pinky always seems to be able to get ahead of you and cut you off when you least expect it. He always moves at the same speed as Inky and Clyde, however, which suggests speedy is a poor translation of the more appropriate machibuse. Pinky and Blinky often seem to be working in concert to box Pac-Man in, leaving him with nowhere to run. Inky: The light-blue ghost is nicknamed “Inky” and his character is described as one who is bashful. In Japan, he is portrayed as kimagure, meaning “a fickle, moody, or uneven temper”. Perhaps not surprisingly, Inky is the least predictable of the ghosts. Sometimes he chases Pac-Man aggressively like Blinky; other times he jumps ahead of Pac-Man as Pinky would. He might even wander off like Clyde on occasion! In fact, Inky may be the most dangerous ghost of all due to his erratic behavior. Bashful is not a very good translation of kimagure, and misleads the player to assume Inky will shy away from Pac-Man when he gets close which is not always the case. Clyde: The orange ghost is nicknamed “Clyde” and is characterized as one who is pokey. In Japan, his character is described as otoboke, meaning “pretending ignorance”, and his nickname is “Guzuta”, meaning “one who lags behind”. In reality, Clyde moves at the same speed as Inky and Pinky so his character description is a bit misleading. Clyde is the last ghost to leave the pen and tends to separate himself from the other ghosts by shying away from Pac-Man and doing his own thing when he isn't patrolling his corner of the maze. Although not nearly as dangerous as the other three ghosts, his behavior can seem unpredictable at times and should still be considered a threat. |
1 Attachment(s)
Quote:
К слову, когда я в первый раз играл в "Pacman" на MSX, то это было на "зеленом" ученическом мониторе. Мне любой цвет был бы в радость )) А вообще, "Pacman" - это моя вторая компьютерная игра, в которую я играл. Первой был "Galaxian". Было это в далеком 1986 году. Пару лет назад были попытки портировать "Galaxian" на Вектор, но потом эта работа была заброшена и ivagor сделал версию для ПК-8002, т.к. эта машинка идеально подходит для портирования с MSX. В приложении версия для ПК-8002. |
;)
у меня первая MSX игра была King's Valley, до сих пор помню как час сидели и не прошли первый уровень ... любофф детства тоже 16к рома .... |
Очередные обновления
пора что-то решать ;) подскажите, где на форуме можно сделать специальную тему про это ? где буду описывать что есть и потом от нее можно будет ссылки на порты сделать ? сделал репозиторий на bitbucket https://bitbucket.org/esl/park_dissassm там и веду работы, так сказать т.е. оно достаточно актуально та же есть локальная вики, можно там доку писать ... там будут мои активные работы и при необходимости дам права желающим, можно будет форкать и делать порты что сейчас сделано исходник частично разбит на файлы, инициализация фонтов, отрисовка всех фонов и инициализация врагов функции вывода врагов на экран музыка частично сделан переход в сторону 8080 но не весь jr->jp всякие там ld de,(xxxx) и по мелочам но пока с этой работой остановился, ибо для z80 машинок она не нужна и может пока подождать т.к. исходники уже СИЛЬНО перепаханы а оно на вид работает, дизасм вроде достаточно неплох что в репозитории база для IDA с которой все и началось исходный ASM который скомпилился напиленый асм картинки на которых есть все три знакогенератора (чтоб как справочник использовать) скриптики которые помогают портировать на 8080 (выводят комманды которох нет в i8080) моя идея была - в эмуляторе не делать полной эмуляции VDP а оставить только логику игрушки а весь вывод перехачить и картики брать уже не из кода, а из картинок знакогенератора как-то так и еще совсем не понятно насколько правильно оставлять это в открытом доступе ибо всякие там копирайты ... можно сделать приватный репозиторий, но народ должен иметь опыт работы. |
Quote:
|
Вот ведь совершенно портабельная на Вектор игра. Почти все на черном фоне, перерисовки за спрайтами минимум (хотя шляпа то и дело по кирпичу проезжает). Вся логика ограничена "кататься от стенки до стенки", или "мигать раз в Х кадров". Порты есть на все возможные системы от Atari 2600 до PC. Никому не охота заняться? ;)
http://www.youtube.com/watch?v=_zbg9rs5QZY |
Quote:
|
тут на форуме один участник сделал ее порт на ZX
|
Quote:
Монтесума есть для ColecoVision, что суть MSX без клавиатуры, так что опыт портирования может оказаться полезным. Есть еще какие-то самодельные бразильские порты именно на MSX, но я не понял ни где их найти, ни чем они лучше. Насколько я смог понять из обрывочных записей в блогах 2006-2008 годов, автор одного из портов сгинул, а автор второго решил выпустить результат на картридже. Тоже, правда, сгинул. Осталась только Ютуба, но в ней фальшиво звучит Кукарача. Проклятье просто какое-то! |
Quote:
И можно еще упомянуть SG-1000. Большинство игр на этих платформах одинаковые, буквально несколько штук не было на MSX, но сейчас их уже вроде все портанули. Quote:
Между прочим, на ТИА-МЦ есть ведь своеобразный украинский ответ Athletic Landу - "Конек-горбунок" и уже для 580ВМ80 (эмуляция есть в emu). Хотя 1 в 1 на вектор его было бы перенести непросто. |
О, прикольно, что ты их выцепил. Но если уж делать, то по-моему лучше с оригинала. Огрехи MSX-ной версии видны даже по ютубе.
Edit: не хотел сказать, что я стану воротить нос от MSX-ного порта на Векторе ;) |
Quote:
К слову в монтезуме (и на калеке и на msx) меня лично раздражает плохая вписываемость в лестницы с правой стороны. |
Это не оттого, что оригинал был заточен на 320 точек в строке, а все калекоподобные были потом подточены на 256? А ведь есть еще Монтесума на Atari 2600, это вообще не для людей со слабым воображением ;)
|
Quote:
|
160 и 320 это одно и то же =)
|
Еще можно упомянуть версию для Сеги Master System, там графика другая (своеобразная).
Упоминавшийся Ambal интересен (мне) тем, что это одна из немногих игрушек, хорошо использующих графические возможности вектора, хотя может в реализации игрового процесса и есть шероховатости. Есть еще игрушка по мотивам Ambala - Death in the Pyramid |
Интересно, какое железо на Yamaha MSX, отсутствующее на "Векторе", позволяло делать вот такие игры:
Zanac Gameplay Video Metal Gear Gameplay Video (эти обе игры - одни из самых известных на MSX-платформе, и раз их не портировали на "Вектор", наверняка на то были существенные аппаратные ограничения) |
Не знаю, были на MSX тайлы? Подозреваю, что были, как и на всех компьютерах того времени. По сути, игровое поле сделано в текстовом режиме. Это позволяет сделать очень быстрое обновление игрового поля. На Векторе есть аппаратная прокрутка, но с ней все не так просто: перерисовывать целиком 8*4 строк 50 раз в секунду для векторовского процессора — серьезная задача. Но хуже того, все статические части экрана должны быть перерисованы целиком каждый кадр, чтобы стоять на месте. Настоящее зазеркалье. Это практически сводит все преимущества аппаратной прокрутки на нет.
И спрайты, которые на Векторе могут быть реализованы только программно. Каждый движущийся объект должен быть перерисован каждый кадр. Если под ним что-то есть, это надо сложить с маской спрайта и вывести заново. На процессоре 8080 это чудовищно медленно. На Векторе можно рисовать по слоям, но это нас очень быстро лишает цветов. Например, можно сделать, чтобы белый был независимым от остальных цветов — тогда рисовать белые спрайты будет очень просто, но полезных цветов для игрового поля останется только 8. Добавляем еще один "спрайтовый слой", получаем 4 цвета для поля, 4 для спрайтов. Поэтому большинство игр для Вектора либо не очень цветные, либо не очень часто обновляют экран. Но все равно существует множество игр, которые на Векторе могли бы быть очень хорошими, если бы они для него были ;) ---------- Post added at 13:44 ---------- Previous post was at 13:42 ---------- Quote:
|
Metal Gear все же для MSX2
Лучший вектор для игрушек - это ПК6128Ц. У него только 2 недостатка: очень маленькая распространенность и отсутствие кое-какой периферии. |
Quote:
Плавное движение спрайтов вполне возможно, правда с дискретизацией на 2 пиксела, а не на 1. Тогда и фаз надо в памяти хранить по 4 на спрайт. Их обязательно надо просчитать заранее (по-крайней мере, я храню все 8 фаз в памяти квазидиска), иначе быстродействие будет убито сдвигами. Естественно, всё чтение с квазидиска в видеопамять, - только стеком (включая и уровень и спрайты). Для оптимизации по быстродействию, байты в спрайтах можно хранить "змейкой". Прогнал тут тест на своём движке, и убедился что 12 спрайтов размером 32x32 пиксела плюс главный герой 24x64 - предел после которого начинает чувствоваться лёгкое замедление. Есть ещё одна тонкая тонкость - sprite clipping. Негоже, когда спрайты болтаются по экрану, а потом исчезают на краю целиком. Проблема в том, что для клиппинга, даже на границах байт нужны отдельные стековые процедуры, и они значительно медленнее. И всё-же, предложенная цветовая схема 4x4 наверное - самое то. ---------- Post added at 07:32 ---------- Previous post was at 07:14 ---------- Quote:
не вижу. Zanac в таком виде невозможен потому как на Векторе аппаратно прокручивается весь экран, и меню придётся убрать. Если делать программную прокрутку, не думаю что хватит быстродействия. Всё-таки у MSX - 9918 видеопроцессор с аппаратной поддержкой спрайтов и видеопамять в 2 раза меньше. |
Quote:
К сожалению оригинальная придумка SESа - 8 цветов для полэкрана с даблбуфферингом была им реализована только в демке. В игрушке можно было бы получить 8 цветный фон + 8 цветные спрайты, пусть и ценой быстродействия. Но у него T-REX и без этого крутой получился. |
Quote:
Quote:
|
Quote:
Можно таким макаром организовать и чересстрочный вариант (вроде SES такого извращения не предлагал). |
Quote:
---------- Post added at 16:08 ---------- Previous post was at 16:07 ---------- Ааа, это чтобы можно было "спокойно" перерисовывать 25 кадров в секунду вместо 50. |
Quote:
А 6128 мне как раз очень импонирует 4мя возможными полноцвентыми и полноразмерными экранными буферами. В т.ч. и проблемы с полноэкранным скроллингом можно решить. |
Quote:
|
Аналогия между очень редким 6128 и свободно покупаемым и подключаемым к любому вектору AYком мне не совсем понятна. Тогда и квазидиск и дисковод надо исключать из оборота. Как-то слишком хардкорно.
Сделать что-то крутое для голого вектора - в этом есть своя прелесть, но зачем ограничиваться только этим минимальным вариантом. |
Мне тоже кажется, что ничего зазорного в делать под 6128 нет.
Но!!! (мой канюч): тот-же самый софт должен работать и под стандартным Вектором. Пусть с урезанными цветами и пропуском фич, но работать должен. У 6128, как я понимаю, аналог i8085, и там с точки зрения программера вся разница - только в наличии RIM и SIM. Сразу возникает вопрос. А программно возможно отличить, бежит ли софт на 06ц или 6128? Возможно, попытки переключения страниц через 0Eh и записи с последующим чтением и есть такой тест, но я немного не в курсе, у 6128 квазидиск - стандартная поставка, или расширение, как у 06ц. Правда, наличие квазидиска легко проверяется таким-же макаром через порт 10h. Его, как я понимаю оба компа поддерживают одинаково, или нет? Ещё вопрос насчёт видеопамяти в 6128. Видеоконтроллер читает все переключенные 32K из квазидиска, или возможны варианты с переключением отдельных плоскостей? Вообще хорошо-бы инфу по портам 6128 где-нибудь нарыть. |
Quote:
Quote:
Quote:
Quote:
---------- Post added at 19:37 ---------- Previous post was at 19:35 ---------- Quote:
1. Пресловутые mov r,r; inr r; dcr r выполняются на нем за 4, а не за 8 тактов. 2. Есть небезынтересные недокументированные (вернее плохо документированные) команды. |
| All times are GMT +4. The time now is 23:22. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.