Архив за год: 2024

phpBBex v1.9.8

phpBBexНебольшое обновление моего форка phpBB 3.0. Реализована поддержка свежего PHP 8.4, удалено немало устаревшего кода (дистрибутив полегчал почти на 50 килобайт), упрощена настройка иконок тем, исправлен ряд проблем и ошибок, скрыто поле для ввода ICQ (из-за закрытия сервиса). Поддерживаются PHP 5.6-8.4. Подробнее →

Помимо этого, появилось новое первое знакомство с проектом, где описана история появления, обозначены текущие цели, а также собраны новшества за последние 5 лет. Читать →

Safrosoft RoX (Portable Edition)

Safrosoft RoX — это отличный клон классических Boulder Dash и Supaplex, созданный Дмитрием и Ильёй Сафро в 2001–2003. Впервые мне эта игра попалась на диске журнала CHIP за июнь 2002, и сразу же запала в душу.

Игра была разработана на Visual Basic 6 с использованием DirectX 8, что на самом деле довольно редкая комбинация технологий. Microsoft всё ещё поддерживает рантайм VB6 в современных Windows, но dx8vb.dll, который позволял использовать DirectX 8 из игр на VB, был удалён в Windows Vista. Это сломало RoX.

Чтобы решить эту проблему, можно взять эту DLL из Windows XP, и установить её глобально в современную Windows с использованием команды regsvr32 dx8vb.dll. Этот метод использовался любителями RoX всё это время. Но на самом деле можно использовать манифест exe-файла для того, чтобы позволить ему использовать необходимые COM-компоненты из каталога программы без их глобальной регистрации в системе, что позволяет сделать игру портабельной.

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

Скачать v1.3.0: rox_portable_v130.7z (5МБ).
Скачать v1.4.0: rox_portable_v140.7z (8МБ).

Я предлагаю обе v1.3 и v1.4, так как между этими версиями есть значительные отличия, и кто-то может предпочесть оригинальную v1.3.

Читать далее

Super User v1.2.2

Немного доработал свою крохотную утилитку Super User. Добавил родную поддержку систем на ARM64, убрал неуместное ограничение на длину команды, и добился ещё более компактного исполняемого файла, ровно 4096 байт для всех билдов su.exe. Идеально!

Правда, давно хотелось как-то решить проблему, что Windows Defender часто считает мои исполняемые файлы подозрительными из-за отсутствия цифровой подписи. Совсем недавно оформил подписку на Azure Trusted Signing и начал подписывать свои программы. Выяснилось, что цифровая подпись добавляет почти 16 килобайт данных. Это огромный удар по моему увлечению созданием минимальных исполняемых файлов! Из-за цифровой подписи, su.exe стал почти 20 килобайт. Что ж, придётся смириться, так как предупреждения Windows Defender меня самого уже давно доставали на каждой новой системе. С цифровой подписью предупреждений должно стать гораздо меньше.

Скачать: sucmd.7z (18КБ). Страница проекта →

Hosts Commander v1.6.3

  • Возвращается ненулевой код ошибки в случае ошибки выполнения команды.
  • Команда show переименована в в более понятное unhide.
  • Команда list воспринимает show как алиас.
  • Команда empty переименована в reset.
  • Опциональный аргумент shell для запуска интерактивного командного интерпретатора.
  • В аргументах с хостом игнорируется указанный по ошибке протокол http://.
  • На 64-разрядных Windows программа выполняется в 64-разрядном процессе (AMD64 и ARM64).
  • Другие косметические изменения.
  • [2024/11/12] Добавлена цифровая подпись.

Скачать: hostscmd.7z (30КБ). Страница проекта →

Sound Keeper v1.3.4 с билдом под ARM64

  • Доработан воркараунд для утечки памяти в WASAPI в эксклюзивном режиме на Windows 8-10.
  • Билд под ARM64 (со статически слинкованным рантаймом си, из-за чего больший размер файла).
  • [2024/11/12] Добавлена цифровая подпись.

Скачать: soundkeeper.7z (90КБ). Страница проекта →

Лаконичный макрос defer для C++

Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное дельце. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.

Макрос defer, вдохновленный Go, как никогда кстати! Использовать его просто:

void* p = malloc(0x1000);
defer [&] { free(p); };

Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение (если разрешено), или даже выполнен goto наружу.

Реализация макроса лаконична и полагается на базовые возможности C++17 (Clang 5+, GCC 7+, MSVC 2017+):

#ifndef defer

template <typename T>
struct Deferrer
{
	T f;
	Deferrer(T f) : f(f) { };
	Deferrer(const Deferrer&) = delete;
	~Deferrer() { f(); }
};

#define TOKEN_CONCAT_NX(a, b) a ## b
#define TOKEN_CONCAT(a, b) TOKEN_CONCAT_NX(a, b)
#define defer Deferrer TOKEN_CONCAT(__deferred, __COUNTER__) =

#endif

Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.

Читать далее

Unchained Nostalgia v1.5

Демка на основе легендарного многоигрового картриджа 9999-in-1 для Dendy с чайками и Unchained Melody в меню.

В 2023 году я готовил юбилейное обновление Unchained Nostalgia: 10 лет демке, 30 лет первым многоигровкам с Unchained Melody и самой Dendy, а также 40 лет оригинальному Famicom. Но на что-то под конец года отвлёкся, поэтому оно так и осталось без релиза. Выпускаю сейчас задним числом в том состоянии, в котором проект был в ноябре 2023.

  • Эффект падающих звёзд на ночных слайдах. Можно загадывать желания =)
  • При включении режима автоматической демонстрации, сразу же отображается самый подходящий слайд.
  • Режим автоматической демонстрации включается автоматически после долгого простоя на подходящем слайде.
  • Более точная синхронизация автопролистывания слайдов с ударниками в мелодии (из-за ошибки, был сдвиг на 6 кадров).
  • Более отзывчивая реакция на быстрое переключение слайдов.
  • Используется стандартный вертикальный мирроринг NROM (вместо нестандартного 4-screen) для лучшей совместимости.
  • Облегчённая версия звукового движка в NSF.
  • Размер NSF-файла: 1632 байт.

Скачать: unchained_nostalgia.zip (20КБ). Страница проекта →