Автор Тема: С чего лучше всего начать изучение ассемблеров M68000 и Z80?  (Прочитано 3081 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
Источники инфы прошу кидать по возможности русскоязычные.
Конкретная цель изучения - реверс-энжинеринг различных игр для Neo-Geo вместе с риппиногом ресурсов оттуда, и тем самым определённая помощь в создании на этот раз уже своих игр для NG; а также, возможно, в будущем, создание инструментария разработки ПО для различных аркадных систем, использующих эти процессоры (так, например, после завершения создания RPG по Shaman King'у на Neo-Geo следующий свой проект я планирую создать для Namco System 2); ну и, может быть, ещё в ромхакинге применение тоже найдётся. Да и TN, по ходу, уже заждался, пока Riot City с Sega System 16 наконец портируют на SMD - а поскольку я сторонник максимально точного портирования, для этого наверняка придётся лезть в отдизассембленный код аркадного оригинала и адаптировать его под архитектурные особенности SMD вручную.

Оффлайн Werton

  • Пользователь
  • Сообщений: 878
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
С чего лучше всего начать изучение ассемблеров M68000 и Z80?
Думаю лучше всего будет начать с прекращения создания подобных тем :D

Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 205
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
Томахомэ, возможно тут есть что-то полезное
http://www.tv-games.narod.ru/library/sega.htm
http://romhacking.ru/news/doc/1-0-10

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24644
    • Просмотр профиля
С чего лучше всего начать изучение ассемблеров M68000 и Z80?
Я так понимаю, начинать надо с нуля.
Источники инфы прошу кидать по возможности русскоязычные.
Вот это всегда умиляет. У Яндекса есть такая милая особенность. Когда начинаешь вводит поисковый запрос  он любезно подгоняет наиболее похожие запросы. Так вот, стоит начать вводить название какой-то микросхемы, как сразу подгоняется "скачать даташит на русском"  :facepalm: Нету их на русском.
Нет, для Z80 можно многое нарыть в области Спектрума. А вот 68000 - вряд ли. Он у нас нигде не применялся и не клонировался.
Конкретная цель изучения - реверс-энжинеринг различных игр для Neo-Geo
Вот одним асмом / дизасмом тут хрен чего получишь.  Надо хорошо знать архитектуру целевой системы.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9372
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
с чего начинать - с изучения принципов построения микропроцессорных систем "в общем и в целом", чтоб хоть немножко понимать как работают эти все компьютеры, приставки итп. увы, на-вскидку не помню какие есть хорошие и доступные книжки на эту тему, но их есть и не одна.

ассемблеры - как верно подметили, стоит смотреть в сторону русскоязычной литературы по различным домашним компьютерам.
M68K есть в книжке "Amiga: Программирование на ассемблере", забрать можно там http://www.amirus.org.ru/rus_magazines/
русской литературы по Z80 есть немало, я в свое время пользовался вот этой Питерской книжкой "ZX Spectrum для пользователей и программистов" https://zxpress.ru/book.php?id=116

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24644
    • Просмотр профиля
Ну если начинать с основ микропроцессорных систем, то на заявленные цели следует забить. Книжки были, скорее всего переводные, издательство "Мир". Там всё 8-битное, хотя не суть. Сильно подозреваю, что время, потребное на изучение, несколько превысит временные лимиты конечной цели.
И да, чем хорош и чем плох асм.
Хорош он тем, что ты общаешься с процессором тет-а-тет. То есть что сказал, то он сделает, такт в такт.
А плох тем, что в каждом конкретном случае привязан к железу. Тут тебе никаких библиотек, определений и функций.

M68K есть в книжке "Amiga: Программирование на ассемблере"
Вот спасибо, кстати. Что-то эта книжка в своё время мимо меня проскочила. Хотя Амига Гайд были. Должен заметить, что издательство Формак - это тот же Инфорком, что издавал ZX Ревю. И там ещё были отдельные издания по Спектруму, по программированию. Ещё издательство "Питер" в те же годы по Спектруму много чего издавало. Там в авторах МОА и ппрочие :)
« Последнее редактирование: 16 Февраль 2019, 22:44:17 от Rumata »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9372
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Ну если начинать с основ микропроцессорных систем, то на заявленные цели следует забить.
ну, еслиб его интересовал скажем отдельно взятый мегадрайв - там да, оно не особо и нужно.
но если чел вроде как собирается поразбираться с Neo-Geo, и с Sega System16, и Namco System2 - имхо будет полегче при наличии базовых знаний о том, как все эти штуки устроены и работают - микропроцессор(ы), память, типовой ввод-вывод, короче все эти типовые кирпичики из которых построены игровые железки или компы.
ессно, не требуется изучать целиком какой-нить талмуд о проектировании микроЭВМ, но иметь понимание о принципах работы. я хз, может на Хабре есть статьи где подобное популярно описано ?

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24644
    • Просмотр профиля
еслиб его интересовал скажем отдельно взятый мегадрайв - там да, оно не особо и нужно.
но если чел вроде как собирается поразбираться с Neo-Geo, и с Sega System16
Аркадник детектед! :cool: Вот откуда этот снобизм??? МД - да, ширпотреб для лохов. А Сис-16 - ну, это же эксклюзив для илиты!!! :cool:
с Neo-Geo, и с Sega System16, и Namco System2 - имхо будет полегче при наличии базовых знаний о том, как все эти штуки устроены и работаю
Чё, правда? Стесняюсь даже спросить: где можно взять базовые знания именно по таким системам?

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9372
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
начали за здравие, кончили за упокой, хех.
аркады или компы или консоли - сути дела не меняет. но аркады более яркий пример потому что их дохрена всяких разных, вон у Sega не один десяток платформ, ну или еще более запущенный случай Konami - у них кучка всяких типовых ASICов (аля тайл-генераторы, спрайт-генераторы, видео-ЦАП-палитры и прочее), использовались в различных комбинациях в зависимости от того что было нужно той или иной игре.
мораль - в этом случае здорово помогает знание основ, смотришь на описание платы и компонентов или схему, и в целом себе представляешь что это за хрень они там налепили, зачем/почему так, и как оно работает.

Чё, правда? Стесняюсь даже спросить: где можно взять базовые знания именно по таким системам?
открываешь исходники MAME и смотришь. в коментариях большинства систем в ASCII зарисованы платы/чипы, перечислены компоненты с кратким описанием что они делают итп.
плюс многие старые (80х - начала 90х) игры шли в комплекте со схемами, на случай если нужно чо-то более детально узнать.

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

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
Томахомэ, возможно тут есть что-то полезное
http://www.tv-games.narod.ru/library/sega.htm
http://romhacking.ru/news/doc/1-0-10

M68K есть в книжке "Amiga: Программирование на ассемблере", забрать можно там http://www.amirus.org.ru/rus_magazines/
русской литературы по Z80 есть немало, я в свое время пользовался вот этой Питерской книжкой "ZX Spectrum для пользователей и программистов" https://zxpress.ru/book.php?id=116

Спасибочки! Правда, по первой ссылке, доки по ассемблеру всё равно оказались на английском, ну да ладно.

Аркадник детектед! :cool: Вот откуда этот снобизм??? МД - да, ширпотреб для лохов. А Сис-16 - ну, это же эксклюзив для илиты!!! :cool:

Ну да, я аркадник, не стану спорить. Вот только сама System 16 меня, в принципе, не особо интересует - просто, как я уже рассказывал, со мной TN как-то поделился со мной идеей портировать тамошнюю Riot City на SMD (притом к реализации своей идеи он, по ходу, решил заранее приготовится как следует - нарыл чуть ли не всю графику не только оттуда, но ещё и из Riot Zone для PC-Engine CD) - на я в ответ на это решил, что для этой затеи придётся основательно порыться в коде оригинала, чтобы как следует разобраться, чё там да как реализовано. С System 16 я своей игродельческой карьеры всерьёз связывать не планирую. Да и к SMD я, кстати, никакого плохого отношения не испытываю: просто решил, что моя подлинная мечта и призвание - делать игры всё-таки для других платформ (среди которых и Neo-Geo).
И дело не в каком-то там снобизме, а именно в моём таком чисто личном интересе и чисто своих каких-то психологических привязках к каким-то определённым аркадным платформам (в частности, у моего выбора Namco System 2 в качестве одной из целевых платформ есть своя предыстория - см. вторую ссылку в первом посте темы - уходящая корнями ещё в ранний подростковый возраст). Да и более широкие возможности автоматов по сравнению с домашними консолями соответствующего поколения я рассматриваю не столько как объекты понтов, сколько как факторы, элементарно облегчающие работу геймдизайнера, которому порой оказывается тесно в рамках тех. ограничений облюбованных хоумбрюерами NES, SNES и SMD (Я вот ещё очень хорошо помню, как намучился с цветовой редукцией полноэкранных фонов для SMD до 16 цветов - сохранить максимальную приближенность качества графики к исходному было тем ещё геморняком. И это при том ещё, что даже на такой вот цветово-отредуцированный фон уходила 1 палитра из тех 4, которых в полноценной игре должно хватить и на фон, и на HUD, и на несколько различных видов спрайтовых объектов на экране; да и программирование синтезированного звука - тоже достаточно такая требовательная к разработчику задача, то ли дело YM2610 у NG и C140 у Namco System 2, уже изначально заточенные под работу с готовым цифровым звуком.).
« Последнее редактирование: 17 Февраль 2019, 06:51:51 от Томахомэ »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Мне в своё время в изучении 68к с нуля помог гайд 92guide, скачать можно вот отсюда
https://www.ticalc.org/pub/text/68k/rate.html
Мануал по инструкциям есть там же, 68kpm

Оффлайн RetHunter

  • Пользователь
  • Сообщений: 242
  • Пол: Мужской
    • Просмотр профиля
По Z80 (именно по спектруму) вот эта книга мне помогла в своё время:
https://zxpress.ru/book.php?id=2
Очень просто и понятно.

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Источники инфы прошу кидать по возможности русскоязычные.
Конкретная цель изучения - реверс-энжинеринг различных игр для Neo-Geo вместе с риппиногом ресурсов оттуда, и тем самым определённая помощь в создании на этот раз уже своих игр для NG; а также, возможно, в будущем, создание инструментария разработки ПО для различных аркадных систем, использующих эти процессоры (так, например, после завершения создания RPG по Shaman King'у на Neo-Geo следующий свой проект я планирую создать для Namco System 2); ну и, может быть, ещё в ромхакинге применение тоже найдётся. Да и TN, по ходу, уже заждался, пока Riot City с Sega System 16 наконец портируют на SMD - а поскольку я сторонник максимально точного портирования, для этого наверняка придётся лезть в отдизассембленный код аркадного оригинала и адаптировать его под архитектурные особенности SMD вручную.
начать надо с поступления в институт по специальности информационные технологии или контрольно-измерительные приборы или любой подобный курс лол а там как пойдет.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
Нашёл в отдизассемблированном коде (конкретно - той его части, что предназначена для M68k) KoF '94 такую строчку:
0330C4: 41FA 002C                lea     ($2c,PC) ; ($330f2), A0В присланных руководствах примеры кода, где используется точка с запятой, ни разу мне не встречались. Что эта точка с запятой вообще тут значит?

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
этот человек не знает, что такое "комментарий" лол

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
этот человек не знает, что такое "комментарий" лол

Да ну, не похоже на комментарий - хотя бы потому, что точка с запятой тут "врезается" в инструкцию ещё до того, как назван второй операнд, а без него в комаде LEA нельзя - т. е. будь это реально комментарий, команда фактически осталась бы незавершённой.
К тому же, сам я, как уже говорил, дизассемблированный код игры получил непосредственно через встроенный в дебаггер MAME дизассемблер - никто до меня этих кодов не трогал и некому было их комментировать.

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24644
    • Просмотр профиля
Попробуй другой дизасм и сравни листинг

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Нашёл в отдизассемблированном коде (конкретно - той его части, что предназначена для M68k) KoF '94 такую строчку:
0330C4: 41FA 002C                lea     ($2c,PC) ; ($330f2), A0В присланных руководствах примеры кода, где используется точка с запятой, ни разу мне не встречались. Что эта точка с запятой вообще тут значит?
давай ты уже пойдешь почитаешь документацию по ассембреру как следует.
то, что маме генерирует - это дело маме. она может как угодно что угодно выдавать в листинг. в данном случае ее дизасм просто опускает операнд приемника, если он А0, тупо подразумевается, что это он. этот же мамовский дизасм для облегчения чтения программы ставит автоматический комментарий, в котором раскрывает суть операнда, а конкретно, какой именно адрес будет загружен в регистр А0 - он его вычисляет и ставит как комментарий.
я хз с чего ты подумал, что комментарии вообще может только человек руками ставить. алло. программы умеют генерировать любой текст, в т.ч. текст комментариев. причем такой, какой в программе задано.

текущий писи: 330С4, плюс 2С будет 330F0, плюс два слова опкода, результат 330F2, что и видно в КОММЕНТАРИИ после точки с запятой.

первое правило ассемблера лол: видишь точку с запятой - ЭТО КОММЕНТАРИЙ!

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
Попробуй другой дизасм и сравни листинг

Ну, например, дизассемблер Kawaks'а записывает аналогичную строку так:
0330C4  41FA 002C                  LEA      (0x2C,PC) [0x330F2],A0С FBA, к сожалению, проверить не получилось - тамошний дебаггер M68k в случае с данной игрой был заблокирован.

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24644
    • Просмотр профиля
Ну разный у синтаксис. Все эти "чьи-то" асмы и дизасмы могут иметь некоторый элемент отсебятины. Мне вот дико в мотороловском листинге видеть 0х :-\

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Ну оба дизасма кривые. Правильно например так, и даже комментарий не нужен:
lea  l_330f2(pc),a0

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Ну, например, дизассемблер Kawaks'а записывает аналогичную строку так:
0330C4  41FA 002C                  LEA      (0x2C,PC) [0x330F2],A0С FBA, к сожалению, проверить не получилось - тамошний дебаггер M68k в случае с данной игрой был заблокирован.
я вам ребята открою тайну.
вот то, что постит тамахоме - это не дизассемблерный листинг. это трейс лог эмулятора, который включает не только адрес опокода, его байты и мнемоники, но и дополнительные данные для простоты чтения листинга. у маме эти куски идут как комменты. у кавакса вообще все в кучу.

эти строки не предназначены для ассемблирования. это не код дизасма.

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

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
тамахоме. ты грузил код в иду? ида дает такой код, который можно пересобрать потом. весь этот твой выхлоп от мумуляторов - это мусор. он не годится никуда. он нужен только, чтобы авторы мумуля видели и понимали, что делает код...

Пробовал, но поскольку поддержку Neo-Geo туда, насколько знаю, пока не добавили, после выбора M68000 в качестве типа процессора видит IDA при загрузке рома с непосредственно программным кодом игры (055-p1.p1) одни dc.b.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9372
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
ну так ищи варианты. до отладчка МАМЕ тыж вроде добрался, пробовал в нем сохранить адресное пространство и потом загрузить его в IDA ?

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

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
до отладчка МАМЕ тыж вроде добрался, пробовал в нем сохранить адресное пространство и потом загрузить его в IDA ?

Такого - ещё не пробовал. Как это делается?

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9372
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
ввести help в консоли отладчика и почитать ?
погуглить ? https://docs.mamedev.org/debugger/index.html

еще раз:
если с соображалкой туго - извини, это занятие видимо не для тебя

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
ввести help в консоли отладчика и почитать ?
погуглить ? https://docs.mamedev.org/debugger/index.html

Как я оттуда понял, для сохранения определённого адресного пространства нужна команда save или dump. Так?
« Последнее редактирование: 22 Февраль 2019, 10:31:58 от Томахомэ »

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
давай ты уже будешь читать доки, а не спрашивать на мумуленде людей, которые доки читали сами...

Оффлайн ndivision

  • Пользователь
  • Сообщений: 140
  • Пол: Мужской
    • Просмотр профиля
Томахомэ, Тема интересная, тем более Neo-Geo.
Но подход - не правильный. Вернее он как "подкоп на чердак" или "выход через задний проход" :))
При чем тут вообще ассемблер. Отталкиваемся же от задачи, а не от средств ее решения.
Есть желание сделать игру для Neo-Geo - ну нашибись, но на 1 месте должна быть идея, интерес. Художноков хороших нужно найти, что бы была не конвертнутая, а грамотно нарисованная качественная графика. Зашибенных музыкантов надо заинтересовать.
На самом деле программирование или хакинг - это вообще самое простое, чего может быть.
Пока просто не видно - основного замысла, идеи, чего хотелось бы получить в итоге, и ДЛЯ ЧЕГО.
Но с чего то взяли что нужно изучать ассемблер для m68k и z80 =///// Амига и Спектрум - компы такие - друзья тебе в этом.
Но это не приблизит к цели.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 783
  • Пол: Мужской
    • Просмотр профиля
этот же мамовский дизасм для облегчения чтения программы ставит автоматический комментарий, в котором раскрывает суть операнда, а конкретно, какой именно адрес будет загружен в регистр А0 - он его вычисляет и ставит как комментарий.
<...>
причем такой, какой в программе задано.

текущий писи: 330С4, плюс 2С будет 330F0, плюс два слова опкода, результат 330F2, что и видно в КОММЕНТАРИИ после точки с запятой.

первое правило ассемблера лол: видишь точку с запятой - ЭТО КОММЕНТАРИЙ!

Как раз глянул в исходники MAME'овского дисассемблера для M68000 - убедился теперь, что так оно и есть.

case 0x3a:
{
/* program counter with displacement */
u16 temp_value = read_imm_16();
return util::string_format("(%s,PC) ; ($%x)", make_signed_hex_str_16(temp_value), (make_int_16(temp_value) + m_cpu_pc-2) & 0xffffffff);
}
« Последнее редактирование: 25 Февраль 2019, 15:58:51 от Томахомэ »