June 17, 2025
I fixed a few errors that I had before which were really really difficult to debug. The AHCI Driver was really hard to debug because there wasn't enough viable information online or on the osdev wiki. The OSDev Wiki just gave me a few pointers and a checklist to follow. I found a lot of the defines from online documentation from different websites, so you'll see a lot of sourcing there. I was able to also read a bunch of sectors. I did face an issue with the IDE Driver which I had here, which was that reading sectors wouldn't work and would give nothing in the buffers. But I found this good forum on the OSDev Wiki that helped a lot.
This is an awesome project! I like the Winter effects.
For some reason, VBOX and QEMU don't say that the device is AHCI but instead say that is an IDE Controller, so I switched to QEMU because it had PCIe and the MCFG table would
tell me exactly what type of device each one is. To migrate to QEMU, I needed to fix a few parts of my frankenstein bootloader so that QEMU would run it without issues.
I have written up a whole 62 line comment on how AHCI works, so that others could understand what I am doing. I should be able to finish the AHCI Controller Driver tomorrow.
Here is a screenshot of what I have so far.
Interesting concept, but I couldn't get it to work, namely the fog..
I was looking through my hackatime project settings for Astral OS, and I saw that I didn't add the wakatime dir which I used after. Anyway, I was supposed to have an extra 2 h on the other one.
I was looking online for a way to get the ESP32 to support Matter, and I found out that there was ESP-IDF and ESP-Matter. To use these repo's though, it took me 2 days to clone. After that, I was able to use the ESP Matter Tutorial, which guided me through a simple LED Example. I was then able to modify it to add more features, like a permenant pin and a temperature, brightness, hue/sat. Unfortunatly, I don't have the ESP32 to test it out so here is a quick screenshot of my code.
3D Modelling the Arctic Fox was hard, but I was able to do it. Unfortunatly, I forgot to add the USB C Port Cutout before submitting it, so I can't change it again. I used M2 Screws and M2x3mm Threads since I already have those. I took inspiration from this Sleeping Arctic Fox 3D Model from Printables, because it looked fairly accurate.
Making the Arctic Fox was pretty hard because I have never tried to make minecraft characters before. Ive made enclosures so that part was a breeze. I was able to finish the fox head. Oh, by the way, this project is a part of my school's art project where we 3D Print a Minecraft Character and Paint it. I decided to turn it into a lamp, so I needed to use thin layers of white PLA. Ive used 1mm, but 0.5mm could give a greater result. Ill report back once its printed.
A simple Minecraft Themed Arctic Fox Lamp that features an ESP32 C6 Mini with ESP Matter Support which supports Temperature, Hue/Sat and Brightness.
Please make sure to add more info to the readme like the mod type (fabric/forge) and the version it runs on, you could also upload your mod to modrinth!
I didn't do a lot today, but I was able to reorganise my messy code. I was able to create a String Class that allows you to easily cat strings without 10+ lines of code. I was also able to add a Driver Registration function in Driver Services for the Driver to register a Base Driver. I just need to figure out how Im going to make the Driver.
Turns out I wasted around 20 hours for nothing on my Arrays. The problem was actually due to my bad malloc setup. Anyway, now that I got that over with, I was also able to use GPT to make a simple recursive test for my list func. Also, the rewrote the list func without GPT because I suspected that was the issue.
It seems SOM hasn't added my time, so here is the rest of the time
Anyway, I was able to quickly add frostbite and I was able to create the logo and everything.
It took me some time to figure out how I was going to make the Frost bite thing, but it wasn't too difficult, I just needed to read a ton of APIs and stuff. Anyway, here is a quick screenshot.
I realised that I could just use Mixins, which are classes that are injected into a minecraft class that allow you to access private functions, to create better fog. So I did. I didn't even know what mixins were, until now. I was also able to get snow particles using mixins. Anyway, here is a screenshot, enjoy!
I was able to get Autumn working by changing the leaves to slowly brown. Unfortunatly you must break a leaf to trigger a chunk update so that it shows.
I was able to add the winter part on the server side and client side. On the client side, it has fog, and on the server side it rains/snows and calculates fog and stuff.
A simple mod that does the following: - Winter - Snow - Fog - Frostbite - Seasons Timer - Fire Warming
It took a while for me to realize that creating arrays inside arrays aren't a good idea because it could overwrite one another. Anyway, I was able to get that fixed and I was also be able to get a simple file exists function to work. Here is a quick demo for the Initrd and the Array.
So I took a bit of inspiration from Teenage Enginerring and so I came up with these keycaps. It makes them look a lot of a music producer's synth board. Anyway, making this key cap took a ton of time because I needed to get the exact measurements and stuff for the MX Switch.
So I was able to finish my drawing and also create the Glass Bridge for my LCD. Unfortunately the glass bridge will have to be large. I was also able to create padded indents in my top case to accommodate the MX Switches. I still need to test everything in an assembly. I also created indents for the Knobs.
I added MX Switches to Creative Pad PCB Assembly so that I could turn it into a simplified drawing. I was able to put my simplified drawing in OnShape's part studio. Then I added some padding to the switches because without it, even a slight misalignment would prevent it from going in the case.
Unfortunatly, KiCad Wakatime hasn't tracked all the time on my PCB in KiCad. Anyway, here is a picture on what Ive worked on.
A simple Macropad with an OLED and knobs.
I tried to optimize my kernel but every way I tried, I hit a dead end. At first, I was mapping every part of the ram, which caused my kernel to be unusable with any ram under 8G. Anyway, I was able to create a simple initrd cpio reader which can read the initrd from by uefi bootloader.
Turns out VirtualBox doesn't support PCIe, but PCI works. After a long time, I have finally ported my kernel to Higher Half. Mot of the addresses start at 0xFFFFFFFF00000000 and 0xFFFFFFFF80000000. This is to make the kernel more secure and to have full support for 32-bit apps.
I finally got the IDT working. Turns out you must separate the assembly sections to prevent the ISR's (Exception code) from running. I can now get exceptions for doing 1 / 0 and stuff like that. Although, writing to the kernel .text seems to not cause an exception. If you want a build, just ask me in Slack.
This was widely regarded as a great move by everyone.