Как стать автором
Обновить
34
10.1
Дмитрий @xverizex

Разработчик

Отправить сообщение

Эмулятор NES в каждый проект! [0x02]

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.5K

Спустя месяц разработки, а то и не весь месяц я разрабатывал, я смог добиться корректной работы эмулятора. В перерывах в разработке и я почитывал книги разные и думал о том, где могут быть баги. Всего было два бага:

Читать далее

Эмулятор NES в каждый проект! [0x01]

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.7K

Итак, мне удалось дойти до этого момента, и эмулятор начинает писать в неправильную область PPU, что конечно же портит всё выполнение.

Читать далее

Эмулятор NES в каждый проект! [0x00]

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров6.6K

Добро пожаловать дорогой читатель. Сегодня я расскажу о проекте, который я разрабатываю некоторое время. Это эмулятор NES. Создаю его в виде библиотеки, чтобы можно было добавить его в свою сборку эмулятора, игры или залить в микроконтроллёр. В целом, меня тянет именно в электронику, которую я мечтаю постичь уже не один год. Сама разработка игр для NES меня не очень интересует, да и в игры я не особо люблю поиграть, а вот создавать какие-то сложные вещи мне хочется всё больше и больше, чем возиться с простыми задачами. До этого я начал разрабаывать эмулятор i386 intel процессора, но понял, что не хватает сил продолжать проект и нужно выбрать что-то более простое, и это простое как мне казалось, была разработка эмулятора NES. И так я начал его разработку.

Первым делом я нашел документацию и принялся расписывать в switch case ... опкоды. В отличии от i386 здесь каждый опкод имел один байт, что упрощало разработку. Начал этот проект в октябре 2024 года, а потом забросил. Когда вновь занялся им, то я почувствовал, что у меня пропало такое ощущение, когда тебе неинтересен проект, потому что он скучный в разработке. Это ощущение пропало и я просто начал писать и писать код. В первый день я написал все case в switch, а потом понял, что это будет медленно работать. Тогда я думал так, в switch выборка идет по бинарному поиску, но я не был уверен в том, будет ли такой же вестись поиск, если числа будут перемешаны в case.

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

Читать далее

Программирование в машинных кодах

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров9.4K

Я остался под впечатлением от прочитанной первой или второй главы про хакерство в книге Криса Касперского «Техника отладки программ без исходных текстов».

Хоть я и знал о том, что раньше писали в машинных кодах, но когда Крис так подал интересно материал, что я замотивировался сделать небольшой компьютер эмулятор, который бы позволял обрабатывать мой машинный код. Тут дело проще чем кажется, так как я решил взять всего 16 инструкций для этого дела. Плюс ко всему я как‑то давно мечтал сделать hex редактор на ncurses, но каждый раз не было смысла его делать просто так, а теперь сделал.

Инструкция храниться в старшем полубайте, вот их битовые обозначения.

Читать далее

Проблема лифтов, игра Coding Lift

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.8K

Я разрабатываю вымышленный компилятор с эмулятором, и занялся разработкой игры Radio Attack. Но как оказалось, что это служило лишь мотивацией для доработки инструментов. Хотелось бы так верить. Проблемы с Radio Attack есть, а именно невозможно играть без сетевого режима, и нет денег на сервера, чтобы поддерживать 6 желающих игроков со всей России в неё поиграть. Поэтому я сохранил на gitverse код и начал думать над идеей для другой игры, чтобы продолжать дальше совершенствовать компилятор с эмулятором. Тогда и пришла идея про разработку прошивки для лифтов.

Графика простая, показывающая лифт и человечка. 8 этажей.

Читать далее

Придумал игру Radio Attack

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.4K

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

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

Давным давно я вынашивал план создать 3d игру, где программист то ли на космической станции, то ли на дне океана на станции, ходит с отладчиком и взламывает устройства, и возможно за ним ещё монстр охотиться, и надо в страхе побыстрее что-то сделать и спрятаться в шкаф. :)

Начитавшись некоторых книг, у меня начал немного проясняться сюжет игры. Сначала я хотел сделать игру про 80-е в Америке. Для этого я задумал сделать свою операционную систему, компилятор и разные программы. Уже насоздавал некоторые модели в blender, скачал документацию по i386, распечатал, и начал изучать. В этой документации ещё предлагалось почитать руководство по системному программированию для i386. Я скачал, сходил в салон, мне сделали книгу-брошуру.

Первоначальная цель была делать ОС, эмулятор и компилятор. Я понимал, что просто так сложно будет за это взяться, так как эмоциональный интеллект у взрослого человека требует какое разумное объяснение тому, чем ты должен заниматься. Поэтому создание ОС, эмулятора и компилятора я решил делать в рамках игры. Так общественность бы не сильно давило вопросами, - зачем это нужно. Да и мне эмоции подсказывают, что это правильное решение.

Читать далее

Фаззинг библиотек

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.5K

Ещё недавно, как я начал изучать веб хакинг, я счёл интересным занятие исследовать Linux и Windows на предмет бинарных уязвимостей. Хотя легально заработать в одиночку хакером у нас в России я думаю можно только веб хакингом, я всё равно хочу изучать все интересующие аспекты атакующей и защищающей стороны. Кто знает, вдруг я когда-нибудь буду в red team. Ну а пока я просто грызу гранит науки.

Слегка поразмыслив над решением задачи, я определил что нужно для осуществления моей проблемы. Я не знаю как другие проводят фаззинг библиотек, у которых нет исходных текстов, но додумался до одного варианта. Далее будут два примера для Linux и Windows.

Читать далее

Релиз RetroSpriteEditor 0.2.8 [open source]

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.2K

Добрый день дорогие разработчики для NES (У нас же была Денди). Я занялся электроникой и пока не освоил нужных знаний, решил пописать на ассемблере для NES какие-нибудь игры и погонять байты туда-сюда. Я обнаружил, что для Linux нет нормального редактора и поэтому я написал свой редактор. Хочу показать его возможности, может кому-то будет интересно и я буду рад, если кто-то будет пользоваться кроме меня.

Итак, интерфейс. Я писал его на GTK4. Доступна версия для windows. Для Linux можно готовую сборку взять на flathub

https://flathub.org/ru/apps/io.github.xverizex.RetroSpriteEditor

А для Windows можно взять на github

https://github.com/xverizex/RetroSpriteEditor

Окно с открытым проектом выглядит так.

Читать далее

Как я делал свой мини калькулятор без программирования и что из этого вышло

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров7.6K

​Настали времена, когда у меня появилась возможность осваивать электронику. Я начал с книги "Искусство схемотехники", но прочитав страниц 100, я понял, что усваиваю не всё и потихоньку пропадает интерес. Нужно было что-то делать, нужно было выработать какой-то способ, чтобы я всё равно обучался электронике.

Пока были сложности с построениями аналоговых схем, а хотелось что-то создать или запрограммировать, то я выбрал разработку для NES (у нас в народе была Денди). Так как я в linux разрабатываю софт, то не нашел нормального редактора картинок для NES. Даже в туториале, в котором имелась ссылка на программу, была неактивна. Мне нравится, что на Хабре выходят переводы статей, но сами авторы допускают ошибки в коде и это отражается также и в переводе. Я долго не мог понять почему не рисуется спрайт, пока не изучил официальную документацию. Для рисования спрайтов мне захотелось написать свою программу, так как другие были ну очень непонятные. Кому интересно, буду рад, если будете пользоваться этой программой.

https://github.com/xverizex/RetroSpriteEditor

Это немного меня отодвинуло назад в плане изучения электроники, но очень понравилось писать на ассемблере, что в принципе я всегда и хотел.

Иногда я смотрю, что есть нового на flathub, и обнаружил симулятор цифровой электроники, Logisim. Ещё не изучив полностью компоненты, я быстро сориентировался с logic gates. Это такие элементы как OR, AND, XOR. Почти все из этих понятий мне были знакомы уже давно. Тогда я решил написать свой сумматор. Может я не правильно пишу, так что можно просто калькулятор, который умеет только прибавлять. Я потратил два дня по два часа и у меня ничего не вышло. У меня не получалось создать правильный калькулятор. По мере накопления такого опыта, я решил подумать как можно вообще выстроить процесс поиска правильного решения. И вот что я придумал.

Читать далее

Как я разрабатывал игру fly bird 2

Время на прочтение7 мин
Количество просмотров2.2K

Это гифка, которую я сделал, чтобы показать вступление и как началась история путешествия птички. У меня есть друг, который не боится рисовать, даже если он не обучался рисованию профессионально. Я общаясь с ним как то вдохновился желанием рисовать и не бояться. В google play у меня есть старая игра, которую я делал на unity, когда только начинал работать с движком.

https://play.google.com/store/apps/details?id=com.xverizex.fly_bird&hl=ru&gl=US

Два комментария к старой игре дали мне желание сделать новую версию, но уже на C++ + SDL2 + OPENGL ES 3.2 + OPENSLES + glm. То есть я даже рад хотя бы двум комментариям о том что людям нравиться моё творчество, чтобы чувствовать себя прекрасно и продолжать делать игры.

Так как у меня нормального опыта не было делать игры полноценные на sdl2, то я использовал разные виды кода, которые как я думал, что они правильные. Но поработав на работе и изучая код, я увидел что есть помимо того что я знаю (я про очереди сообщений), есть ещё mqueue. И только потом я додумался, что можно с помощью очередей сообщений отправлять из одного потока в другой что-нибудь. Вот пример как выглядела реализация.

Читать далее

Релиз 0.1.36 Nem мессенджера

Время на прочтение2 мин
Количество просмотров4K

За последние 14 дней я разработал мессенджер, у которого отличительная черта от остальных мессенджеров — это то, что серверную программы вы контролируете сами. Вы можете скачать исходные коды серверной программы и установить на свой сервер. Клиентская часть доступна для linux на flathub — приложение называется Nem.

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

Читать далее

Архитектура приложения моего защищенного чата

Время на прочтение8 мин
Количество просмотров4.5K

В этой статье я хочу описать архитектуру своего приложения. Здесь будут представлен как графический клиент, так и сервер.

Оба приложения написаны на C. Это мой любимый язык и на нем я бы хотел писать код, если смогу когда нибудь устроиться на работу программистом. Попользовавшись ubuntu я понял что старые версии софта, это не хорошо. Например у меня несколько источников звука и микрофонов. И в ubuntu при каждой новой загрузке нужно переключать источник от наушников в источник телевизор. Также и микрофон. Как я обрадовался, что в opensuse нет с этим проблемы и доступна библиотека gtk4, которую я так давно ждал. Я мог писать приложение в gnome builder, что я иногда делаю, но в gnome builder мне не удалось сделать так, чтобы заработала библиотека ffmpeg. И как обычно я пишу в vim.

Итак. Я уже привык к объектной философии gobject и чувствую себя кофмортно в разработке. В gtk4 много изменений произошло. Например я раньше в gtk3 в text_view в сигнале "draw" выполнял функцию gtk_widget_queue_resize ();. и так получалось что это подгоняло размер под нужный, перед рисованием текста, но в gtk4 нельзя подключиться к методу отрисовки. И тогда я решил сделать свой виджет. Но свой виджет не нужно делать прям с нуля. В документации ясно сказано, что gtk_drawing_area как раз предназначен для custom виджетом.

Вот список файлов, которые учавствуют в проекте gui secure chat.

Читать далее

Поддерживаю драйвер tp-link t4u для linux

Время на прочтение2 мин
Количество просмотров28K
Когда купил wifi адаптер, думал, что будет работать на моей ubuntu 20.04, потому что в числе поддерживаемых систем значился linux. Оказалось, что не работает. Попробовал решения, которые предлагают на форумах, но адаптер так и не заработал. Пришлось вчера и сегодня заняться поддержкой драйвера.
Читать дальше →

Создаём приложение на gtk

Время на прочтение3 мин
Количество просмотров12K
Я вижу часто отсылки на то, как реализуется то или иное на qt, но gtk тоже хорош. Я пишу на C и не хочу учить каждые три года стандарты C++, чтобы быть на волне. Мне хватает простой сишечки и чтобы делать графический софт, выбор пал на gtk.
Читать дальше →

Подготовка SDL2-проекта для запуска на android

Время на прочтение3 мин
Количество просмотров9.4K
Всем привет. Сегодня мы посмотрим как подготовить проект с использованием библиотеки sdl2 для запуска игры на android.
Читать дальше →

freetype 2 и opengl пишем текст

Время на прочтение8 мин
Количество просмотров12K
Настало время как я разобрался с freetype2. Теперь я хочу сделать так, чтобы мой код стал доступен нуждающимся. Потому как обдумывать, как работать с библиотекой, не всегда есть время. Я хочу показать код работы именно с freetype и немного с opengl. Немного о коде. Я не могу создавать сложный код. У меня все получается как-то по-простому. Я видел несколько фрагментов кода, работающего с freetype2, и никак не мог понять, как он на самом деле работает. Уж очень сложный код создавали авторы. Я надеюсь, что мой простой код вам понравиться. После прочтения этой статьи можно будет создать многострочный текст и отобразить одной текстурой на экран.
Читать дальше →

Информация

В рейтинге
682-й
Откуда
Сургут, Тюменская обл. и Ханты-Мансийский АО, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Application Developer
Middle
От 180 000 ₽
Git
Linux
MySQL
Java
English
C
Assembler
Reverse development
Win32 API
OpenGL