<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on Elena McNeil</title><link>https://mobslicer152.github.io/projects/</link><description>Recent content in Projects on Elena McNeil</description><generator>Hugo</generator><language>en-ca</language><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mobslicer152.github.io/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Demos</title><link>https://mobslicer152.github.io/projects/demos/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/demos/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently taken an interest in the demoscene, and so I&amp;rsquo;ve written a few demos for fun.
They&amp;rsquo;re written in C++ and have Perlin noise, ordered Bayer dithering, colour quantization,
and a basic CPU 3D rasterizer.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/MobSlicer152/demos"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;div style="display: flex;"&gt;
 
&lt;video controls preload="auto" width="50%" playsinline class="html-video"&gt;
 &lt;source src="https://mobslicer152.github.io/projects/demos/demo1.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;video controls preload="auto" width="50%" playsinline class="html-video"&gt;
 &lt;source src="https://mobslicer152.github.io/projects/demos/demo2.mp4" type="video/mp4"&gt;
&lt;/video&gt;

&lt;/div&gt;</description></item><item><title>Ubisoft NEXT 2026</title><link>https://mobslicer152.github.io/projects/next-2026/</link><pubDate>Mon, 19 Jan 2026 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/next-2026/</guid><description>&lt;p&gt;I participated in Ubisoft NEXT 2026. I didn&amp;rsquo;t end up finishing because I didn&amp;rsquo;t take it
very seriously until it was too late, but I wrote a small linear algebra library and a
pretty neat renderer with the API they provided, and it could load Quake 2 models. The
main issue with the code I did write was that it was underdocumented, but I was able to
at least structure it well.&lt;/p&gt;</description></item><item><title>Minecraft WASM runtime</title><link>https://mobslicer152.github.io/projects/mcraster/</link><pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/mcraster/</guid><description>&lt;p&gt;This project embeds a WebAssembly runtime into Minecraft, and also renders a framebuffer
into the world as blocks. I wrote a couple Python scripts to find the average colour of
each block texture in the game, and then map block names to a list of colours in a palette.
The guest program can swap the palettes and write to the framebuffer however it pleases, which
is enough to run DOOM&amp;rsquo;s main menu. Had I figured out a good way to implement user input, the
game would have been fully playable within Minecraft. It uses a datapack containing the palettes
and program. Additionally, I had to write a script to dump DOOM&amp;rsquo;s palette data so I could use it
in the mod.&lt;/p&gt;</description></item><item><title>x86 ring 0 software rasterizer</title><link>https://mobslicer152.github.io/projects/funny/</link><pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/funny/</guid><description>&lt;p&gt;The actual rasterizer was lacking because I never got texture mapping working correctly,
but I gained a substantial understanding of how to work with serial, interrupts, the GDT,
and BIOS calls.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/MobSlicer152/funny"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://mobslicer152.github.io/projects/funny/funny.png"
 alt="A very low poly Utah teapot with what&amp;rsquo;s supposed to be the missing texture used in Source games and Minecraft"&gt;&lt;figcaption&gt;
 &lt;p&gt;A very low poly Utah teapot with what&amp;rsquo;s supposed to be the missing texture used in Source games and Minecraft&lt;/p&gt;</description></item><item><title>2D Sorting Visualizer</title><link>https://mobslicer152.github.io/projects/billionsort/</link><pubDate>Thu, 12 Jun 2025 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/billionsort/</guid><description>&lt;p&gt;Someone dared me to visualize sorting a billion numbers, so I came up with this visualization
that I think is pretty neat. The &amp;ldquo;expected&amp;rdquo; X and Y of a number given that the list is sorted
determine the red and blue of the pixel, so you get a nice smooth gradient at the end.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/MobSlicer152/billionsort"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;video controls preload="auto" width="100%" playsinline class="html-video"&gt;
 &lt;source src="https://mobslicer152.github.io/projects/billionsort/billionsort.mp4" type="video/mp4"&gt;
&lt;/video&gt;</description></item><item><title>Chifir Engine</title><link>https://mobslicer152.github.io/projects/chifir-engine/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/chifir-engine/</guid><description>&lt;figure&gt;&lt;img src="https://mobslicer152.github.io/projects/chifir-engine/chifir.png"&gt;
&lt;/figure&gt;

&lt;p&gt;Chifir Engine was my second game engine project. I wrote it without using the C runtime or C++ STL
and very few outside libraries. I never really reached the point of it being anything close to an
engine, but I designed and partly implemented an RHI, and a basic SIMD math library.&lt;/p&gt;
&lt;p&gt;After a certain point it was more of an exercise in writing support code and platform glue than an
engine, but I learned a lot from it. I gained a much better understanding of abstraction and SIMD
from it.&lt;/p&gt;</description></item><item><title>Purpl Engine</title><link>https://mobslicer152.github.io/projects/purpl-engine/</link><pubDate>Tue, 30 Jul 2024 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/purpl-engine/</guid><description>&lt;p&gt;Purpl Engine is my first game engine project. It went through several revisions stretching as far back as 2019,
before I moved on to other projects. The final revision had a basic renderer with Vulkan, Direct3D 12, and OpenGL
backends, and could do basic lighting. It supported Windows, Linux, and Nintendo Switch.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/RandomcodeDev/purpl-engine"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a demo of it running on my modded Switch.
&lt;video controls preload="auto" width="100%" playsinline class="html-video"&gt;
 &lt;source src="https://mobslicer152.github.io/projects/purpl-engine/purpl.mp4" type="video/mp4"&gt;
&lt;/video&gt;&lt;/p&gt;</description></item><item><title>Minecraft Server Updater</title><link>https://mobslicer152.github.io/projects/mcserverupdater/</link><pubDate>Wed, 27 May 2020 00:00:00 +0000</pubDate><guid>https://mobslicer152.github.io/projects/mcserverupdater/</guid><description>&lt;p&gt;A long time ago, I wrote a simple program that would fetch the Minecraft server JAR
for the latest snapshot release, so I wouldn&amp;rsquo;t have to do it myself.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/MobSlicer152/MCServerUpdater"&gt;GitHub&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>