- 1
Эмуляторы
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Эмуляторы
Объясните пожалуйста, почему пишут эмуляторы всяких там GBA, но нет ни одного транслятора в самодостаточную программу? И почему все заботься о том, что бы эмулятор работал с такой же скоростью, как и настоящий процессор?
overscan или как-тотак
И это правильно, ведь про конечную платформу известно абсолютно всё до последней железочки, + гейдев + проприетарщина. Все поводы хачить максимально грязно и при этом не заботиться о поддержке кода и уж тем более о будущих создателях эмуляторов через 30 лет.
P.S. думаю, ты - борманд
А что транслировать, скомпилированный код?
А как этот код будет рисовать на экране игру?
А как этот код будеть играть звуки?
А как этот код будет получать от пользователя инпут в виде нажатий на клавиши?
А с какой скоростью этот код будет выполняться, чтобы правильно воспроизвести поведение игры?
Добавляем прослойки для всего этого, и получаем тот самый эмуль, либо частный -- сросшийся с конкретной игрой, либо универсальный, для любой игры.
# А как этот код будеть играть звуки?
# А как этот код будет получать от пользователя инпут в виде нажатий на клавиши?
# А с какой скоростью этот код будет выполняться, чтобы правильно воспроизвести поведение игры?
А в чём проблема?
2. Программа будет работать в монопольном режиме с прямым доступом к железу (т. е. будет запускаться прямо из BIOS)?
>>кинескопный монитор с аналоговым входом)
ты видел gameboy?)
# 2. Программа будет работать в монопольном режиме с прямым доступом к железу (т. е. будет запускаться прямо из BIOS)?
Зачем? Я же предлагаю транслировать, а не запускать родной образ
dm_fomenok, можешь написать программу, которая будет выполнять эти действия?
Ну в тех же плоечных эмуляторах что-то типа JIT. Оно таки транслирует код в нативный, но кусками и в реалтайме.
Эмуляторы же не академики ради науки пилили, людям просто хотелось поиграть в игры с приставок.
И вот это вот API всё равно не будет эмулятором.
Это круто для неинтерактивных программ. В игрушках же придётся ломать голову над тем, как соблюсти оригинальные задержки, иначе скорость перемещения объектов может повергнуть в шок.
Если такой транслятор и возможен, то выдавать он будет лишь примерный аналог, а сам транслятор будет неебически сложной программой, и написать его не под силу даже богу тому кто прочел все тома "Искусства программирования" от корки до корки и выполнил все приведённые там задания.
Переведи на ARM (какой хочешь):
(из исходников FASM под DOS)
PS. В GBA нет всяких там IDT, GDT, LDT. Так что не умничай мне тут. GBA переводить проще
Ты говоришь: "зачем анализ". Блять, на GBA, наверное своей НЁХ полно. Изучи архитектуру, и потом уже решай, можно транслировать или нет.
> GBA переводить проще
У GBA проц ARM7TDMI (этого я не знал, только щас посмотрел). У армов система команд конечно попроще, но как ты можешь говорить, что GBA переводить проще, если не знаешь архитектуры?
есть-ли там разделение на память и IO как у интела?
Например, чтобы зажечь ярко-жёлтый пиксель, нужно отправить этот пиксель в четыре слоя (в красный, зелёный и яркий отправить единицу, в синий отправить ноль), для чего сначала дать инструкцию out, которая мапит на сегмент 0xA000 красный слой, потом установить соответствующий бит в видеопамяти (считать байт по адресу 0xA000 * 16 + (x + y*640) / 8, изменить в нём только бит x % 8, поскольку один байт хранит информацию о 8 смежных пикселях), потом повторить out и запись в видеопамять с оставшимися тремя слоями.
Эти инструкции могли следовать в произвольном порядке и вообще не подряд.
Всё равно не вижу проблему
А если у нас и номер порта, и команда, и адрес памяти вычисляются в реальном времени по жуткой формуле с логарифмами и прочей гадостью?
У меня одного чувство, что ты издеваешься?
Пиши, пиши транслятор, раз считаешь, что ты один прав, а все остальные нет. Только дай ссылочку на гитхаб, я хочу видеть твои мучения.