PDA

Просмотр полной версии : Рекомпиляция Z80 -> КР580ВМ80А



svofski
28.08.2008, 14:22
Tim0xA и ivagor -- посмотрел на новые ваши творения, очень круто! Спрайты отлично прорисовываются, звук на месте. Есть что-то нереальное в том, что на Векторе есть игры датированные 2008-м годом. Захвачу их на ЦЦ. Жаль вот только, что SES не успел новую демку написать =)

ivagor
28.08.2008, 15:47
svofski
Есть еще пара неплохих игрушек требующих для работы z80. Сегодня одну из них "зарелизил", если все будет нормально, то скоро Александр выложит.

Остаток поста удалил, зря постил, не удержался.

Tim0xA
28.08.2008, 15:57
svofski, главное танчики показать, это реально крутая игра!

ivagor, может в "Tank Batallion" вставить год 2008, чтобы svofski на $CC08 показал игру с датой?

ivagor
28.08.2008, 16:04
Tim0xA
Прямо сейчас и займусь :).

svofski
28.08.2008, 16:16
Tim0xA, ivagor, а в танчики можно вдвоем рубиться? Я бегло так посмотрел, в основном на предмет того чтобы бабах был. Бабах был.

ivagor
28.08.2008, 16:19
Оригинал на msx, к сожалению, не поддерживал "мультиплеер", векторовская версия соответвенно тоже.

Tim0xA
28.08.2008, 16:34
svofski
Есть еще пара неплохих игрушек требующих для работы z80. Сегодня одну из них "зарелизил", если все будет нормально, то скоро Александр выложит.
Выложил.



Оригинал на msx, к сожалению, не поддерживал "мультиплеер", векторовская версия соответвенно тоже.

Если есть желающие написать мультиплеер, то могу подогнать исходнички MSX-оригинала в z80 и в ВМ80 коде :)
Запускать и отлаживать можно в BlueMSX, а к вектору потом ivagor прикрутит :)

ivagor
28.08.2008, 16:46
Tim0xA
Может в тот же раздел billiards поместишь? А macaroids пока лучше вобще убрать, скоро быстрый вариант пришлю.
А мне исходник ВМ80 (последний) можешь подогнать? Тогда релиз покомпактнее будет.

Tim0xA
28.08.2008, 16:49
Tim0xA
Может в тот же раздел billiards поместишь? А macaroids пока лучше вобще убрать, скоро быстрый вариант пришлю.
А мне исходник ВМ80 (последний) можешь подогнать? Тогда релиз покомпактнее будет.

Биллиард только что выложил. По танку, точно, я же тебе только компиляцию давал! Конечно же сейчас вышлю!

ZEman
28.08.2008, 18:15
ivagor, а можешь переделать какиенибудь из этих игр ?
я просмотрел игры для msx 1 и выбрал 10 наиболее интересных, каждая из них не более 32 кб.
вообще, насколько сложно переделать игру на другую машинку ?

XobbiMan
28.08.2008, 18:37
Tim0xA,
Можешь сделать маленькое описание всего процесса, утилит.
Хочется тоже присоединиться к адаптациям.
(просто не знаю с чего начать)

Tim0xA
28.08.2008, 18:54
Tim0xA,
Можешь сделать маленькое описание всего процесса, утилит.
Хочется тоже присоединиться к адаптациям.
(просто не знаю с чего начать)

Скоро подготовлю, тем более, что я только сегодня закончил проверку рекомпиляции всех документированных команд z80. Осталось еще проверить недокументированные. Как только рекомпилятор будет готов к употреблению, я сообщу на форуме.

XobbiMan
28.08.2008, 19:05
Скоро подготовлю, тем более, что я только сегодня закончил проверку рекомпиляции всех документированных команд z80. Осталось еще проверить недокументированные. Как только рекомпилятор будет готов к употреблению, я сообщу на форуме.
С не терпением ждем (хочется для ПК8000 портануть игрушки :)

ivagor
28.08.2008, 21:54
ivagor, а можешь переделать какиенибудь из этих игр ?

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

вообще, насколько сложно переделать игру на другую машинку ?

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

ZEman
01.09.2008, 16:15
да это здорово, ivagor - даёшь больше рекомпиляций !;)

ivagor
01.09.2008, 16:56
:), однако отмечу, что танчики портировал коллектив, который, надеюсь, еще не исчерпал свой творческий потенциал и не все еще сказал в области "обигрушивачения" старых добрых советских компов.
Коллектив - это сила. Tim0Xa :v2_thumb:

Tim0xA
01.09.2008, 17:30
:), однако отмечу, что танчики портировал коллектив, который, надеюсь, еще не исчерпал свой творческий потенциал и не все еще сказал в области "обигрушивачения" старых добрых советских компов.
Коллектив - это сила. Tim0Xa :v2_thumb:
Согласен :) Мы просто маньяки и мы еще не все сказали ;)

Про маньяков - это конечно же шутка, основанная на словах:

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

svofski
17.09.2008, 15:23
Да, а что до твоего выбора игр, я его одобряю, сам бы рад был их увидеть ;) Но для этого нужен человек, который творчески переносит концепцию на совершенно другую платформу, фактически программируя все заново.

Кстати говоря, фанаты MSX перетащили Монти на свои японские чемоданы, можно заценить: http://youtube.com/watch?v=u6IdOAauk3A

Tim0xA
17.09.2008, 15:33
Кстати говоря, фанаты MSX перетащили Монти на свои японские чемоданы, можно заценить: http://youtube.com/watch?v=u6IdOAauk3A
"Ambal" явно был написан под впечатлением от этой игры :)

svofski
17.09.2008, 15:42
До Амбала еще руки не дошли. А из последнего, что я разгребал, мне приглянулись Robbo и Tutankhamun.

Tim0xA
27.09.2008, 16:07
В раздел "Рекомпиляция" выложена новая игра "Scramble Eggs" с MSX.

ZEman
28.09.2008, 05:22
да, посмотрел, прикольная игрушка.
а можете со спектрума Penetrator перенести ?

Tim0xA
05.10.2008, 16:37
Driller Tanks - версия для "Вектор-06Ц" (2008)
http://sensi.org/~svo/scalar/ware/474

svofski
05.10.2008, 23:48
Driller Tanks - версия для "Вектор-06Ц" (2008)

Жжоте!

Tim0xA
15.10.2008, 00:43
На сайте в разделе "Рекомпиляция" начали появляться исходники. Все желающие освоить процесс портирования ПО с MSX могут приступить к изучению процедур эмуляции MSX BIOS (автор ivagor)

Tim0xA
28.10.2008, 12:18
Выложил на сайт рекомпилятор, проекты, сборки и краткую инструкцию, как всем этим добром пользоваться.

Tim0xA
28.10.2008, 17:40
ivagor, "Fire Rescue" оказался таким же простым (для рекомпиляции!), как и все Hudson-вские игрушки. Рекомпиляция заняла 15 минут. Можешь теперь реализовать свои идеи (цитирую тебя же):
1) сделать полный звук через AY (в firestrs отсутствовал звук при движении главного героя, т.к. счетмашевцы его убрали, хотя можно и восстановить)
2) сделать вывод "речи" (хотя говорят там что-то непонятное, может по японски?) через beeper, которая звучит между первым и вторым уровнем.

Добровольные бета-тестеры могут потестить файл fr_i8080.rom в эмуляторах MSX. Этот ROM использует только команды i8080. Все команды Z80 заменены альтернативными процедурами. Это пока первая альфа-версия, еще неоптимизированная по коду - чистый продукт рекомпилятора. Из архива исключен TASM (по понятным причинам). Скачать можно здесь http://home.comcast.net/~tasm/index.htm Для самостоятельной компиляции добавить файлы tasm.exe и tasm85.tab в папку ASM_i8080.

XobbiMan
28.10.2008, 19:50
Tim0xA,
Еще раз спасибо.
Теперь будет чем вечера дождливые занимать.

Tim0xA
28.10.2008, 23:05
XobbiMan, прошло ровно два месяца, как я обещал осветить этот вопрос :) http://zx.pk.ru/showpost.php?p=149437&postcount=12 Но лучше поздно, чем никогда ;) Будут вопросы по рекомпиляции - отвечу, приму багрепорты, выслушаю пожелания :)

XobbiMan
28.10.2008, 23:44
Tim0xA,
Так не во вовремени дело. Это же хобби, а значит по мере возможности все и делается. Главное чтобы дело жило!

ivagor
30.10.2008, 07:23
Tim0xA потихоньку продолжает выкладывать исходники на своем сайте и выложил уже практически все, при этом скромно умалчивая об этом в новостях сайта :).

По поводу выбора игрушек для рекомпиляции - если кто-то заинтересовался, то проще всего начать с игрушек фирмы HUDSON, мы с Tim0xой еще не все их обработали. Там практически нет хитрых уловок в коде, что сильно упрощает дизассемблирование, не используются аппаратные спрайты, что сильно упрощает адаптацию к ряду компов, например к ПК8000 (да и вобще вывод на экран во всех этих игрушках сделан практически одинаково).
Причем не обязательно даже брать msxные версии, на спектруме тоже были несколько их игрушек, правда практически все они уже рекомпилированы Tim0xой (но с msxных версий, так что для практики можно и спековские версии поковырять). На спеке остались вроде две игры - Frog Shooter и Vegetable Crash, на msx не меньше 5 (названий сейчас всех не помню, причем названия иногда отличаются от спековских).

Tim0xA
30.10.2008, 11:13
Обновил рекомпилятор на сайте. Исправил процедуры команд "sla D", "sla E" (кстати, они в предыдущих проектах ни разу не использовались), а также в режиме дизассемблера Z80 в командах "ld (addr), A" и "ld A,(addr)" теперь адрес указывается, как метка Laddr.

ivagor
04.03.2009, 20:46
Тем фрикам, которые все еще программируют на КР580ВМ80, возможно будет полезен распаковщик для архиватора MegaLZ http://sensi.org/%7Esvo/scalar/ware/691/
Ранний (менее оптимизированный) вариант данного распаковщика использовался практически во всех совместных и раздельных релизах игрушек Tim0xи и мну.

ivagor
06.03.2009, 16:28
Еще один распаковщик для очень хорошего архиватора Exomizer 2 (сжимает лучше, чем MegaLZ, правда сам распаковщик длиннее)
http://sensi.org/%7Esvo/scalar/ware/694/
Распаковщик сделал в вариантах для КР580ВМ80 и КР580ВМ1.
Приложен упакованный BASIC 2.5 - пригодится реальщикам, которые могут грузить только с магнитофона (это самая короткая версия BASIC 2.5 на сегодняшний день).

Tim0xA
27.03.2009, 02:44
Наткнулся на книженцию 8080 / Z80 Assembly Language: Techniques for Improved Programming (http://www.free-ebook-download.net/programing-book/7204-8080-z80-assembly-language-techniques-improved-programming.html)
Интересная цитата из аннотации:
"Assembler macros are discussed in Chapter Five. Examples show how to generate Z-80 instructions with an 8080 macro assembler, and how to emulate Z-80 instructions on an 8080 CPU."

Добавлено через 12 минут
Скачал, про эмуляцию команд там негусто, но вобщем книга очень мощная, жаль не на русском.

ivagor
17.07.2009, 12:59
Только сейчас обратил внимание на ссылку в wiki по Z80
Automatic Assembler Source Translation from the Z80 to the MC6809 (http://ieeexplore.ieee.org/Xplore/login.jsp?url=http%3A%2F%2Fieeexplore.ieee.org%2Fl pdocs%2Fepic03%2Fwrapper.htm%3Farnumber%3D4071055&authDecision=-203)
Жаль статью просто так не скачаешь.

ivagor
17.07.2009, 18:33
Страничка, откуда можно скачать упомянутую в предыдущем посте статью
http://www2.computer.org/portal/web/csdl/doi/10.1109/MM.1984.291314
Интересен научный подход, сама программа не приведена.

---------- Post added at 20:33 ---------- Previous post was at 20:18 ----------

Еще ссылка на патент
http://www.patentstorm.us/patents/7299460/fulltext.html
сам патент не совсем в тему но там есть ссылки на интересные статьи

svofski
07.08.2009, 04:31
Чего-то я не понял в какую ветку вопрос писать, напишу сюда, потому что тут все самые мäтёрыe собрались.

Есть ли готовенький плеер для Вектора, который бы играл PT3 да так, чтоб палец о палец ударять не пришлось? Где? Сколько он будет растрового времени кушать? А для других форматов какие есть плееры? Сколько они строк отъедают?

Mick
07.08.2009, 06:39
Чего-то я не понял в какую ветку вопрос писать, напишу сюда, потому что тут все самые мäтёрыe собрались.

Есть ли готовенький плеер для Вектора, который бы играл PT3 да так, чтоб палец о палец ударять не пришлось? Где? Сколько он будет растрового времени кушать? А для других форматов какие есть плееры? Сколько они строк отъедают?

Для Sound Tracker я перекладывал модуль под ВМ80 для ПК8000. Порты те же юзает. Исходники выкладывал.

ivagor
07.08.2009, 10:36
А для других форматов какие есть плееры?
Пример использования векторовского плеера RMP модулей (вероятно автор - SUNAMI) на ПК8000 (порты AY там такие же)
http://vector06c.narod.ru/recompile/soft/pk8000/RMPLinker.rar
Пользоваться плеером просто:
1. Нужно разместить его с адреса 0A000h (удобно поместить на квазидиск)
2. Нужно инициализировать - в HL задается адрес музыки и вызывается процедурка 0A003h.
3. Дальше каждое прерывание вызываем проигрыватель с 0A000h.

Готовые RMPшки
http://vector06c.narod.ru/soft/sound/rpm.rar


Сколько они строк отъедают?
Не знаю, не считал.

svofski
07.08.2009, 13:01
Спасибо! Значит для ПТ3 никто не пробовал.

ivagor
07.08.2009, 13:49
svofski, ты на сайт bulba.at.kz можешь зайти (там вроде был плеер для PT3)? У меня не получается, даже если я игнорирую предупреждение "Имеется информация, что этот сайт атакует компьютеры!".

svofski
07.08.2009, 16:26
Я смог зайти через archive.org и он на меня кааааак набросится! Не смог я оттуда ничего вытащить. Плеер есть на msx.org, но для спектрума и з80. Я-то надеялся, что готовенький будет.

---------- Post added at 16:26 ---------- Previous post was at 16:23 ----------

http://bulba.untergrund.net/progr_e.htm -- социально адаптированная версия этого сайта. На людей и компьютеры не бросается.

Mick
07.08.2009, 19:11
Для Sound Tracker я перекладывал модуль под ВМ80 для ПК8000. Порты те же юзает. Исходники выкладывал.

Себя дополняю :) ссылка на архив с исходниками Sound Tracker
http://www.zx.pk.ru/showpost.php?p=150571&postcount=87

Там как оригинал(дизассемблирован� �ый), так и мое поделие. Под Вектором проблем не должно быть - порты те же

Где то в недоделках есть проигрыватель модулей ASM (со Спека)

svofski
07.08.2009, 23:11
Я выдрал плеер из SES'овского Black Ice, оказался плеер PT2. Если кто знает, где есть забавные PT2 без блямканья, поделитесь знанием =)

svofski
08.08.2009, 04:28
Mick, а каким ассемблером надо твои сорцы собирать?

Mick
08.08.2009, 06:10
Mick, а каким ассемблером надо твои сорцы собирать?

В том посте написано -> Делалось все под виндой в среде Softools WinIde 8085.

А так можно и в досовскомTASM85 там тоже работает.

svofski
08.08.2009, 13:11
Ааа.. Я думал, что WinIde это для дизассемблирования, а TASM85 то же самое, что TASM35. Голову можно расщепить себе обо все эти странные тулы.

Хотя нет, похоже, что TASM85 это то же самое. Я пошел топиться, это вилы. Он же не понимает макросов.

ivagor
08.08.2009, 14:33
Те у кого нет предубеждения против z80 на векторе, могут попробовать вот это:
12791
Также можно рассматривать эту штуку как инструмент мотивации для улучшения эмуляции AY в одном из эмуляторов. Проверял на коллекции Бульбы.

Offtop: со вчерашнего вечера форум был мне недоступен, это только у меня так было?

Mick
08.08.2009, 15:13
Хотя нет, похоже, что TASM85 это то же самое. Я пошел топиться, это вилы. Он же не понимает макросов.

Как же есть в моем исходники макросы и все понимает TASM85
Если хочешь могу кидануть тебе мой тасм.

---------- Post added at 14:54 ---------- Previous post was at 14:48 ----------


Ааа.. Я думал, что WinIde это для дизассемблирования

Это среда разработки выглядит как VC. Там есть как ассемблеры , так и компиляторы с для 85 и cемейства z80. Продукт фирмы Softools Inc.
Я скачал демо и немного пошаманил с ним, чтобы можно было ассемблировать большие тексты. Ибо безумных денег сей продукт стоит. :(

---------- Post added at 15:13 ---------- Previous post was at 14:54 ----------

Обновил архив и выложил в ветке вместе с ассемблером

http://www.zx.pk.ru/showthread.php?p=150239#post150239

svofski
11.08.2009, 15:24
SES сказал, что он перетаскивал на Вектор плееры для всех мыслимых и немыслимых форматов. Сорцы от них у него вроде бы не сохранились, но он их давал и другим людям, то есть теоретически они могли сохраниться. Сорцы периодически всплывают, да и люди тоже -- не зря же мы жужжим тут.

Error404
24.08.2009, 14:58
Нужна утилита, проверяющая исходник в мнемониках Z80 на совместимость на выходе с опкодами i8080. Можно транслятор (меняющий на макросы), можно просто выводящий несовместимое с опкодами i8080 на экран. Главное, чтобы после трансляции текст оставался как и был в мнемониках Z80 (ну не перевариваю я интеловые), с комментариями, директивами препроцессора и т.п. Есть такое в природе?

Tim0xA
06.10.2009, 17:02
Ёлы-палы, почему я раньше об этом не подумал?!

Стандартный макрос замены команды LDIR, например



lxi b, 0000Fh
push psw
mov a, m
stax d
inx h
inx d
dcx b
mov a, b
ora c
jnz $-7
pop psw


для случаев BC<=000FFh вполне можно представить в виде



lxi b, 0000Fh
push psw
mov a, m
stax d
inx h
inx d
dcr c
jnz $-5
pop psw


Получаем экономию 12 тактов при каждом выполнении тела цикла. В некоторых случаях можно отказаться от push/pop psw и развернуть цикл.

ivagor, в связи с этим новый исходник tank.asm в приложении, запакуй его, как ты это делаешь. Кое-что еще поправлено, в итоге получилось на 112 байт короче и теоретически должно быть немного пошустрее.

ivagor
06.10.2009, 17:38
для случаев BC<=000FFh
если точнее, даже для 0<BC<=00100h (когда в BC исходно было 100h, задаем BC=0).

ivagor
12.02.2021, 20:05
В связи с некоторым всплеском интереса к теме выкладываю dao1.12 (https://disk.yandex.ru/d/Cu_xS-l8Ggg6PA). Tim0xA разрешал (https://zx-pk.ru/threads/32879-z80-gt-8080-adaptatsiya.html?p=1104175&viewfull=1#post1104175)

nzeemin
27.06.2021, 20:15
Переделываю DAO 1.12 в приложение tvdao на FPC и FreeVision.
FPC кроссплатформенный, поэтому (теоретически) приложение можно собрать под маком и линуксом.
Репозиторий с кодом: https://github.com/nzeemin/tvdao

Оригинал это текстовое приложение под DOS, которое пишет asm-кодом прямо в экран. Можно было конечно переделать только рисование экрана, но мы же простых путей не ищем.

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

Дизасм увеличен с 14 до 22 строк - позже можно будет переделать чтобы не было константой.
Блок с просмотром памяти занимает оставшееся слева место, показывают символы, в режиме просмотра только символов теперь видно 64 в строке.
Справа показываю все метки - этого не было в оригинале.
Использует тот же формат рабочего файла, что и DAO 1.12 - формат версии 1.0. (DAO 1.15 использует формат 1.1, рабочий файл больше на 32К.)

Реализованы основные команды навигации и редактирования, сохранение ASM.

Пока не сделано:
- Несколько оставшихся команд навигации и редактирования
- Сканирование по F9 и Alt+F9
- Команды поиска
- Импорт .SYM и .CTL
- Просмотр графики

Досыпал немного багов конечно, чтобы потом исправить.

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

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

В DAO есть импорт .SYM (список меток) и .CTL (разметка код-байты-слова) - это может как-то помочь?
Как я понимаю, обычно предпочитают реверсить в IDA - какие там есть подходящие форматы экспорта?

svofski
28.06.2021, 14:30
Я никогда не занимался рекомпиляцией, поэтому могу не до конца чувствовать суть проблемы. Мне не очень понятно почему получение исходника и подмена инструкций должны делаться в одном инструменте.

Почему нельзя получить исходник в том инструменте, который хорошо это умеет делать, например IDA, а результат реверса пропустить через поиск-замену по словарю?

ivagor
28.06.2021, 15:10
Мне не очень понятно почему получение исходника и подмена инструкций должны делаться в одном инструменте.
Если говорить о сегодняшнем дне, то мне тоже. Почему Tim0xA так сделал - он взял за основу рекомпилятор Валерия Бостана и сменил начинку c z80->x86 на 8080->z80. Но с самого начала я писал ему, что вариант трансляции на уровне исходников был бы намного продуктивнее.


В DAO есть импорт .SYM (список меток) и .CTL (разметка код-байты-слова) - это может как-то помочь?
Мне не особо.


Как я понимаю, обычно предпочитают реверсить в IDA - какие там есть подходящие форматы экспорта?
Главное, что IDA может экспортировать в asm и я считаю, что рекомпилятор должен делать из исходника z80 исходник 8080. Ведь нередко бывает, особенно сегодня, что исходник z80 уже есть. Да, можно открыть бинарник в DAO и сверяясь с исходником заново дизассемблировать. И я даже так делал для коротких программ, но это просто потеря времени и больше я так делать не буду, энтузиазм молодости закончился.