Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - erobson

Страницы: [1]
1
Цитата: s1nka link=thttps://www.emu-land.net/forum/index.php?action=post;topic=87388.30;last_msg=1561356#opic=87388.msg1561356#msg1561356 date=1682354547
На чем? Зачем изобретать велосипед?
C + gdi. Хочу сделать минимальный функционал, просто создание в памяти картинки-фреймбуфера и вывода её на экран. Просто чтобы инкапсулировать это от эмулятора. SDL работает медленно, если рисовать напрямую, а разбираться с ним более глубоко мне лень, на winapi быстрее сделаю.

2
Делаю собственную графическую библиотеку специально под windows, так как слишком много лишнего winapi-кода просачивается в логику эмулятора. От использования SDL окончательно отказался, он слишком медленный.
Пишу в свободное время, а его катастрофически не хватает :cry:

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

4
Offtop: Решил использовать Psn00bSDK, т. к. он поразительно удобный и быстрый.
P.S. А ещё все эмуляторы, кроме no$psx - бяка.

5
Начал работать с ассемблером Mips, чтобы сразу начать переносить на нужную платформу. Пока ничего нового по функционалу нет, кроме исправления багов с счётчиком кадров.

6
Наконец придумал способ реализовать tia, и скоро приступлю! Идея заключается в том, чтобы при записи по соответствующим адресам в некий стек складывать указатели на обработчики того или иного события, затем в цикле тиа обрабатывать это самое событие. Если при портировании будет замечена потеря в производительности, можно будет сделать систему приоритетов.

7
Я вернулся. Последние комиты - таблица переходов, исправление багов, палитру по прежнему не переделал, да и не особо надо пока.

8
Таак, читал статьи по эмуляции, но про использование JIT не слышал. Спасибо за наводку, посмотрю, нужна ли реализация

9
Skay, Если я ничего не путаю, то jit нужен только для оптимизации языков с байт-кодом, каковым родной СИ не является. А по поводу гита - да, наболевшая тема. Я с ним давно, но постоянно про него забываю.

10
Чтобы не мудрить со всеми свичами, циклами и режимами адресации, я делаю очень просто - двумерный массив структур:
struct OpCode{
void* handler; //Указатель на обработчик
int cycles; //Сколько циклов занимает
AddrType addressing; //Режим адресации
};
Потом беру из массива internalMemory 1 байт, и по этой таблице его обрабатываю. Я думаю, это будет быстрее и надёжнее всяких switch'ей, к тому же, всё в одном месте. Так как массивы хранятся в памяти  просто подряд, и поля структур тоже, то проблем с оптимизацией не будет. Плюс, можно сделать фиксированное кол-во бит для каждого поля структуры, не допуская лишних ноликов(такое бывает).

11
SPOT, Не, по крайней мере, до полноценного запуска pac-man я не остановлюсь). И не ожидал, что эта тема окажется так интересна.

12
Потерпел фиаско. Почти все опкоды, кроме прерывания и TAX, TAY, T(XX) реализованы. Тут оказалось, что разные опкоды занимают разное кол-во машинных ТАКТОВ! Но в том руководстве которое я читал, такты обозвали ЦИКЛАМИ  :ohmy:  Из-за этого в моей реализации каждый опкод - 1 цикл, а такты попросту опущены((  Буду переделывать на днях.

P. S. А ещё я забыл делать комиты, поэтому изменения в 700 строк висят все в одном комите.

13
Пока я загружен учёбой, прогресса нет. Однако я в свободные минутки изучаю информацию по PSX

14
SPOT, Я взял цвета с сайта про atari. Затем с помощью python скрипта преобразовал в массив rgb:
252727-0
Загвоздка в SDL, она не ест ничего кроме rgb)

15
А следом за ней ещё более правильная картинка! На фото видно, что есть расхождения по палитре, которые предстоит вычислить и исправить.
252662-0

16
Ура, товарищи! Картинка!

17
SPOT, Сначала делаю графику на SDL2 для пк, потом по ходу буду переделывать её на psx(PSYQ SDK). Пока цель получить нормальную статичную картинку с fps-ом 60

18
Skay, Основное, что удерживает меня от создания таблицы переходов вместо switch - это то, что для инструкций, работающих с памятью, функции режимов арресации возвращают адрес в массиве internalMemory. А если инструкция кушает не адрес, а данные, тогда я вызываю её обработчик так:

p.s. как-то странно объяснил  o_0

19
Sharpnull,  Но кроссплатформа-то липовая!  :D Как обычно в cmake ручками под каждую платформу свои исходники.

20
Sharpnull, да, знаю про imbnes, читал его.  Код я сделал максимально простым. Критические инструкции, или сам switch по возможности перепишу на asm. Благо, mips ассемблер хорошо описан на просторах нета. Вот у меня такой switch:

21
Недавно я решил сделать эмулятор 2600-ой атари. Тему здесь создаю, чтобы писать дневники разработчика + скрины. Я постараюсь полностью описать устройство и эмуляцию этой платформы, затем собрать в одну цельную статью. Сейчас работаю над тиа. Вообще, тема довольно интересная, хочется попробовать её портировать на максимум платформ и в приоритете PS1/PSX. Я надеюсь, железа хватит для эмуляции TIA и 6502.
Пока же делюсь скрином нерабочей графики  :neznayu:

Страницы: [1]