Хабы: *nix, Разработка под Linux, C
Добро пожаловать дорогой читатель. Сегодня я расскажу о проекте, который я разрабатываю некоторое время. Это эмулятор NES. Создаю его в виде библиотеки, чтобы можно было добавить его в свою сборку эмулятора, игры или залить в микроконтроллёр. В целом, меня тянет именно в электронику, которую я мечтаю постичь уже не один год. Сама разработка игр для NES меня не очень интересует, да и в игры я не особо люблю поиграть, а вот создавать какие-то сложные вещи мне хочется всё больше и больше, чем возиться с простыми задачами. До этого я начал разрабаывать эмулятор i386 intel процессора, но понял, что не хватает сил продолжать проект и нужно выбрать что-то более простое, и это простое как мне казалось, была разработка эмулятора NES. И так я начал его разработку.
Первым делом я нашел документацию и принялся расписывать в switch case ... опкоды. В отличии от i386 здесь каждый опкод имел один байт, что упрощало разработку. Начал этот проект в октябре 2024 года, а потом забросил. Когда вновь занялся им, то я почувствовал, что у меня пропало такое ощущение, когда тебе неинтересен проект, потому что он скучный в разработке. Это ощущение пропало и я просто начал писать и писать код. В первый день я написал все case в switch, а потом понял, что это будет медленно работать. Тогда я думал так, в switch выборка идет по бинарному поиску, но я не был уверен в том, будет ли такой же вестись поиск, если числа будут перемешаны в case.
На следующий день я решил переписать это творчество так, чтобы любой опкод выполнялся всего лишь вот так.
Читать далее