2021-09-01
----------
kyx0r
 _______  _______  _______ _________ _______  _______ _________ _______
(  ____ )(  ____ )(  ___  )\__    _/(  ____ \(  ____ \\__   __/(  ____ \
| (    )|| (    )|| (   ) |   )  (  | (    \/| (    \/   ) (   | (    \/
| (____)|| (____)|| |   | |   |  |  | (__    | |         | |   | (_____
|  _____)|     __)| |   | |   |  |  |  __)   | |         | |   (_____  )
| (      | (\ (   | |   | |   |  |  | (      | |         | |         ) |
| )      | ) \ \__| (___) ||\_)  )  | (____/\| (____/\   | |   /\____) |
|/       |/   \__/(_______)(____/   (_______/(_______/   )_(   \_______)

+-------------------+
| Home              |
| Github            |
+-------------------+
| VEther            |
| SDL-projects      |
| FA-Binary-Patches |
| FA_Patcher        |
| Eng-Learn         |
| N-pwr-R           |
| Pi-Endeavors      |
| fa                |
| Arduino-Projects  |
| Atelerix-Engine   |
| SigFigures-Calc   |
| ArthasModPack     |
| MASM-Projects     |
| Cell-Game-LD40    |
| My-Website        |
| Uni-Labs          |
| Klec              |
| Nextvi            |
| Pikevm            |
+-------------------+
This page explains my projects in depth and documents their functionality
among with some personal remarks.

VEther
===============
Probably one of the most complex projects on my side.
An attempt to write 3d game engine from scratch using Vulkan Api.

The current codebase features:
- Complete custom allocators for RAM and VRAM memory and memory pools.
- Complete obj parser for 3d meshes loading
- Embeded glsl compiler for shaders, possible to add shader recompilation
at runtime
- SPIRV generation
- Custom code to load vulkan and initialize everything
- Own custom math library and types
- Embeded Glfw library
- Uniform build script via Makefile
- No external dependencies
- Cross platform, Linux & Windows
- 2d texture loader for png textures
- Complete & saturated triangle list pipeline

SDL-projects
===============
My projects using SDL graphics library.

There are currently 2 projects:
/Ether directory contains a simple setup code, and the idea behind it was
to just learn to draw lines. It draws different shapes and matterns based
on the window size, and the line reflects every lime it hits a corner of the
window.

/Standalone contains entire SDL library with my own custom Makefile.
Only tested under Windows OS and proven to work. This project does character/
font rendering from texture atlas and has complete ability to rotate, scale and
animate characters.
More information in the Readme file.

This repository might expand in the future, as I get more ideas to implement.

FA-Binary-Patches
===============
Binary patches for the engine of SUPCOM.

It follows a long story, but unfortunately this legendary
game has its game engine closed sourced and unavailable.
Because I love this game, I have made binary patches to address
common bugs with the engine and add some features to it.
Everything had to be done in x86 assembly and with no source code,
basically a blind reverse engineering.

Current Patches available:
- Support for shared army mod,
  which allows multiple players to control 1 army at the same time.
- Added extra category for units to be able to get selected while being built.
- Units with 'WALL' category are now all selectable with double click
- Fixed crash when entity is destroyed but attack order, or move is still in que
- Removed double render of range rings, which improved rendering of unit range
  rings by + 10 FPS in certain scenarios.
- Removed hard-coded no-rush timer and made it flexible to any value
- Fixed replay desyncronization issues when a player leaves the game while other
  players give unit commands, I reverse engineered the network
protocol and wrote robust   algorithm to block any commands at that
precious moment. (Really difficult patch to implement, lots   of
time went into this)
- Removed some code in many places with the goal to improve performance

So you would ask me why? This is how I was able to master my
reverse engineering & assembly skills while bringing good
things to 40K+ players community while doing nearly hacks on the edge of
impossible.

FA_Patcher
===============
My patcher for .exe files. Windows PE only.
This project powers and enables me to edit assembly code of
Windows executable files. This is a tricky and not easy process,
it requires memory allocations, code relocations, assembly hooks
and understanding of PE format on Windows OS.
I have been working on it over the year long term constantly improving
and adding new features.

Features:
- Creation of extra sections on EXE of any size.
- Complete remote assembler implementation (asmjit)
- Jit asm parser (asmtk)
- Self packing technique which packages ASCII files for patch destribution
- pelib implementation to do EXE specific edits, for instance PE header
- Parser for raw assembly conversion to GCC style
- Sections created by patcher can have C code loaded onto them

Objective:
This is a unitility program designed for those who know what they are doing.
In order to properly use it and create own patches one has to know asm and C,
but otherwise one can run already implemented patches right out of the box.


Eng-Learn
===============
A simple gui program.

Using c++ library called WxWidgets the project aims to create a quizlet
program where one can create a database of words and quiz self. It has
complete UTF-8 support and a non repeating randomizer.

N-pwr-R
===============
Lists and outputs all n^r permutations.

This program was created in order to aid cracking some simple lock combinations
were one would need to keep track of combinations that were already used in a
file until the brute force is successful.

Pi-Endeavors
===============
Drive WS2811 ledstrip with raspberry pi.

Using the driver library this allows to control the addressable ledstrip
and do anything with it. This involved figuring out how gpio pins work on this
device.  One thing that I left unsolved was the ability to read analog signals
, with variable voltage.

fa
===============
My fork of fa lua scripts for SUPCOM

The reason this is important and I've decided to list here is because that was
one of my first real looks into the code, and open source contributions. I've
added some ui changes and bug fixes to the main repository. Experience counts.
And most importantly this taught me how to use git.

Arduino-Projects
===============
Arduino.

My very first programs were written for arduino, that is where I started.
There are many things in the repository, from simple buttons inputs to wifi
controlled led stripes, moisture, light, ping, motion sensors, LCD screens and
more. And of course an actual circuits had to be built to make this work.

Atelerix-Engine
===============
Experiment to write a game engine.

Me and my friend wanted to write a game engine from scratch, however it run into
many issues with portability and at last my friend game up on it, so did I. I
keep this repository around however because it taught me some interesting
concepts. Also it used sfml library for graphics, which I do not really like,
but if I ever need it, there will be something to look at.

SigFigures-Calc
===============
Basic but complex calculator.

This was a project for Ap computer science class, and the objective was to
write a significant figures calculator using just javascipt syntax, no api was
allowed.  It took 1000 lines of code and just pure parsing/algorithms. Giving
the complex rules of significant figures and the limitations of my knowledge
of javascript this became rather complex code, although it did meet it's
requirements in the end.

ArthasModPack
===============
My collection of mods for SUPCOM

I've tried to collect the best mods for the game in one place. A lot of them
had to be rescriped and remade to work under different from original version
of the game codebase. Although currently unmaintained it does feture some
unique mods that nobody knows about. I've spent a lot of free time on this.

MASM-Projects
===============
What I've done with microsoft assembler.

Me learning graphics programming and assembly at the same time. I have used
old direct X libraries 8 & 9 to render simple scenes like textured cube. Doing
this at such a low level gave me a lot of insight on how processors work.
However at some point it became very difficult to work with as complexity rised.

Cell-Game-LD40
===============
Game made for the jam.

Me and my friend participated in even called Ludum Dare, where people compete
to make a full indie game in 48 hours. Based on the theme we made a game that
is similar to agar.io using unity game engine and C-sharp scripting. The game
got 15 upvotes, which is not too bad. But needed to get 20 to be the contestant.
Nonetheless can't take that away from me.

My-Website
===============
This website.

Despite this being simple site, the fonts and css sheets for this can be found
with help of link above.

Uni-Labs
===============
All my work and assignments for University C programming course.

There is nothing special about this. Just a way for me to be organized. Tasks
are usually quite trivial and mostly have to do with parsing something or
creating a certain output to the console. This may change in the future though.

Klec
===============
This repo consists of my personal linux dotfiles, configs
and various scripts that I use or needed to have backed up.

I also maintain my personal versions/forks of different C
programs such as my own window manager for X11, terminal
emulator, text editor, onscreen keyboard, filemanager,
webbrowser, etc.
Some of these programs are heavily modified in the process
of me needing more features. All changes are mentioned in
the readme.

Nextvi
===============
My own custom made text editor, which I spent over a year actively developing,
optimizing and maintaining. Perhaps the most notable and famous program on this list.
If suckless.org made their own official suckless text editor, this must of been nextvi.
Nextvi is incredible for how small, fast, efficient, feature rich it is. There isn't any
real competitor in the world currenly (and likely not in the future) which can 
meet all those traits.

Pikevm
===============
Fastest NFA table based regex engine in the world. Includes entire BRE 
functionality and some pcre features. Supports utf-8. Extremely small code base
around 650 LOC. Utilizes clever submatch extraction algorithm by Russ Cox further improved 
by me.