Stats

6
Projects
77
Devlogs
100
Votes
4
Ships

Coding Time

All Time: 168h 13m
Today: 0h 13m

Member Since

June 16, 2025

Badges

3
🚢
Maiden Voyage
you shipped your first project! the journey begins...
💬
Yapper I
Posted 10 comments on devlogs.
Ballot Stuffer
vote 100 times.

Projects

6
Yet another personal site
5 devlogs • 7 days ago
Embedded Engine
35 devlogs • about 1 month ago
ESP32-CNC

ESP32-CNC

Shipped
8 devlogs • about 2 months ago
🚀
10 devlogs • 3 months ago
🚀
4 devlogs • 3 months ago
flappy

flappy

Shipped
15 devlogs • 3 months ago

Activity

Earned sticker

added memory address register and memory data register, also realised that a mux is a bunch of tri state buffers connected together

Update attachment
Arca
Arca worked on 8 bit CPU
1h 5m • 1 day ago

Finally found time to work on it again! the jump buffer is done

Update attachment

Deployment is done

Update attachment
Earned sticker

Added a bunch of content to the site, not sure if this time should count towards SoM as I was mainly making markdown files, not actually coding things

Update attachment

Atom feeds and lists of projects and interesting things are done! Also <hr>s make the website look so much nicer

Update attachment

added some 88x31 buttons :)

Update attachment
Earned sticker

currently making a custom no-css/js theme for jekyll

Update attachment
Arca
Arca created a project
6d ago

Yet another personal site

Re-making my personal site using a custom html-only jekyll theme, inspired by @zrl's personal site. the lack of css is intentional.

Yet another personal site
5 devlogs 0 followers Shipped
Earned sticker
Arca
Arca worked on Embedded Engine
1h 26m • 8 days ago

Collisions are now fixed

Update attachment
Earned sticker
Arca
Arca worked on Embedded Engine
1h 34m • 11 days ago

Uhhh i think i broke collisions even more

Earned sticker
Arca
Arca worked on Embedded Engine
2h 14m • 12 days ago

Added the ability for player sprite animations to change depending on the state of the player, so jumping doesn't look stupid now ig. Also did some work on fixing collisions but im going to continue that tomorrow, spent a while thinking of the best way to do it and i think i came up with something half-decent perhaps

collisions are done!!!!!! here's a test scene (the artifacting is because phone camera)

Arca
Arca worked on Embedded Engine
4h 44m • 15 days ago

oh my god ive been debugging this for the last 30 min and it's this max here that needs to be a min instead. collisions are close to done, it says 4h44min but it's probably a bit less in terms of normal human brain coding time, i code slowly when i'm low on sleep

Update attachment
Arca
Arca worked on Embedded Engine
1h 14m • 19 days ago

Loading sounds from files works now! here's e1m1 because it seemed fitting

Arca
Arca worked on Embedded Engine
2h 34m • 21 days ago

Static objects are a thing now, next I'll probably add level importing from LDTK, collisions and then start working on the demo! I'll probably delay font support until the third ship.

sprite animations!!!

i added the ability to flip sprites in the x-axis and also a 2d camera so that can be moved around, for example when the player moves to a different part of the level the camera moves too so that the player isn't offscreen. also spritesheet animation support is almost done, just need to write the tick function. got a lot done today.

Update attachment
Arca
Arca worked on Embedded Engine
1h 37m • 22 days ago

writing this thing made me feel like an absolute genius, i think i'm starting to understand properly how rust works now. non-static lifetimes can die in hell, but other than that it's a decent language

Update attachment
Arca
Arca worked on Embedded Engine
2h 8m • 23 days ago

Sprite loading works now!!! I encoded the png file from my pc using https://github.com/ArcaEge/embedded-encoder (that's my #siege project, so the time spent for that bit doesn't count here). I'm basically embedding the encoded spritesheet into the binary and it seems to work pretty well

Update attachment
Arca
Arca worked on Embedded Engine
1h 30m • 23 days ago

screw memory usage and reliability, i gave up with static allocation and am now using dynamic allocation everywhere (fyi the size of my heap is only 64kb, this probably won't end well...)

Update attachment

why did i not write this in c???????? ughhhhhhhhhhh

Update attachment

i love rust lifetimes so much o_o

Update attachment

Audio in wasm works now, thanks a lot to whoever made the oscillator api

Update attachment
Arca
Arca worked on Embedded Engine
6h 42m • 24 days ago

Sound support is done!! Well, not really, I still need to do the wasm bit but that's pretty simple and (hopefully) won't take too long. Also thanks @555 timer for permanently lending me these 15 passive buzzers

Update attachment
Arca
Arca worked on Embedded Engine
2h 2m • 24 days ago

Busy trying to get sound working, here's a nice long comment I wrote :D

Update attachment
Arca
Arca worked on Embedded Engine
6h 6m • 25 days ago

Implemented an actor-world system similar to greenfoot java, i.e. spent 6 hours building a fancy abstraction system to be able to draw this box:

Update attachment
Arca
Arca worked on Embedded Engine
1h 53m • 27 days ago

Rectangles, yay!

Update attachment

Finally fixed that stupid bug causing the ssd1306 to get desynced. here's a cat because I don't have a better image to post.

Update attachment

Completely overhauled the input system to be a lot less stupid, this is across the last two devlogs. Also added a loading indicator to the canvas

Update attachment
Arca
Arca worked on Embedded Engine
2h 45m • 29 days ago

yay, inputs work properly now on the pico!

Just did some soldering and stuff to repurpose this old controller I made a while ago, don't look at the solder joints on the back side :)

Update attachment

It's now on github pages!!!1!1!!!11!! https://arcaege.github.io/embedded-engine/

Update attachment

Got the demo working! Just need to compile it for the pico (I need to add the inputs to the pico HAL for that, maybe another hour or so of work, then I'm ready to deploy the demo somewhere and ship!)

Update attachment

Keyboard inputs in wasm work now!! That was quite annoying to do because it turns out that there's no API to get the current state of a key, you have to work it out yourself using event listeners. Time to make the demo! Then I'll do the first ship, and then add some quality-of-life features like builtin sprite rendering, but the core engine is basically done.

Update attachment

Display output in wasm is working! That went smoother than expected and I also made it a nice colour scheme. The canvas is pixel-perfect responsive (and all that logic is in rust because I'm not touching javascript with a metre stick if I can avoid it).

Lesson of the day: mixing async + non-async code = pure pain and suffering. I somehow made it work but it's pain. Also I still don't understand what the hell static lifetimes are but they seem to make the compiler happy. Anyway, delays in wasm work now and the code doesn't crash the main thread anymore. yay.
Next up is figuring out how to render to a canvas.

Update attachment

Refactored the project to be able to use wasm-pack and added a little webpack npm runner to run the devserver, printing stuff to the console works so we should be good. Just need to implement the HAL for wasm now, then I'll get inputs working, make a simple demo (maybe a dot moving around the screen controlled by wasd/arrows) and then ship the first version. I hope I can get that done by tonight.

Update attachment

Did some more work on individual pixel addressing and framebuffer stuff, here's a nice little pixel scanning across the screen row by row. Also ticks work now, I set the tick rate to ~60 ticks/sec. I need to work on the wasm side of things now, just need to create a HAL for web assembly.

Writing to the display now works! Here are some nice horizontal lines :D

Other stuff I've been up to:
- Added a 64KiB heap using embedded-alloc for dynamic memory allocation (don't need it now but will need it in the future)
- Implemented a generic framebuffer
- Found a bug/oversight in rp2040_hal (no good way to make two back-to-back i2c transactions without a stop/restart in between. logic analyser came in clutch for that one)

Update attachment

I added the function to initialise the display (the display's buffer is not cleared at startup so it makes this nice random pattern from the noise in the buffer, this isn't an issue as it goes away when you display the first frame). Next what I need to add is some function to put the pico's framebuffer data onto the display's framebuffer

Update attachment

I think I'm starting to figure out how Rust works but everything is taking 4x as long as it should because I'm still a clueless beginner to embedded Rust. I decided to say screw it, let's refactor the code because the old structure was stupid and hard to maintain, especially with 2 compile targets for pico and wasm. Speaking of wasm, I haven't done much in terms of that but I have started work on the ssd1306 driver code to drive the screen (I'm not using external crates for this because who likes to use libraries when you can do it yourself? It's pretty simple anyway because I'm just porting over the display driver code from my pico flappy bird project, which also used an ssd1306 but was written in C). Pictures are mandatory on devlogs, so here's a picture of the current setup I guess.

Update attachment

Clock and peripherals initialisations for the Pico are done, it took a while because this is one of my first projects using Rust and I was busy playing karate with the compiler

Update attachment

Did some boilerplate stuff, mostly just initialising the project structure and getting compilation to both RP2040 and WASM working.

Update attachment
Arca
Arca created a project
37d ago

Embedded Engine

A Rust-based monochrome pixel game engine that can be compiled to both web assembly (javascript canvas used for display) and also to the RP2040 microcontroller (which uses the monochrome SSD1306 display over I2C). I'm mainly making this so that I can bring hardware to Daydream (the final game apparently has to be uploadable to itch.io, hence the WASM support).

Embedded Engine
35 devlogs 3 followers Shipped

I swapped out the 12V regulator because apparently JLCPCB can't place that component. Now it's actually done, I think I'm ready to ship.

Update attachment
Arca
Arca worked on ESP32-CNC
2h 19m • about 1 month ago

I think the PCB is done!

Update attachment
Arca
Arca worked on ESP32-CNC
2h 5m • about 1 month ago

Component arrangement is done, time to route!

Update attachment
Arca
Arca worked on ESP32-CNC
3h 39m • about 1 month ago

The high current outputs are arranged now, no routing yet

Update attachment
Arca
Arca worked on ESP32-CNC
4h 32m • about 1 month ago

Finished laying out the stepper motor connections

Update attachment

The schematics are done!

Update attachment
Arca
Arca worked on ESP32-CNC
3h 58m • about 2 months ago

Well that took way too much effort, but we now have a high-current MOSFET-based switching circuit for a high current load like a CNC spindle or hotend/heated bed if it's being used as a 3D printer board. In theory this can handle 110A but obviously physics is a thing.

Update attachment
Arca
Arca worked on ESP32-CNC
1h 53m • about 2 months ago

First devlog! Started work on the schematics. Even though the time recorded is ~2hrs, I spent way more than that picking components and looking at datasheets, too bad Hackatime can't track that :(

Update attachment
Arca
Arca created a project
46d ago

ESP32-CNC

A CNC/3D printer controller made in EasyEDA Pro, supporting up to 4 stepper motors, 8 switches (1 emergency stop and 7 limit switches) and 4 outputs that support up to 24V 30A, for CNC spindles. Designed for FluidNC.

ESP32-CNC
8 devlogs 1 follower Shipped
Arca
Arca worked on pOSt
3h 19m • about 2 months ago

Implemented a scrolling VGA text buffer with support for colours. Also added a nice blue screen of death for when a kernel panic occurs

Update attachment
Arca
Arca worked on pOSt
2h 42m • about 2 months ago

Didn't write too much code, just did a whole bunch of reading on the OSDev wiki and a bunch of experimentation (that's why hackatime recorded 2.5 hours). Managed to get a simple paged mode boot with vga text output but then decided to switch to Rust because a) I cba with C tooling, cargo is much better, b) I'd like to learn rust and c) rust cool and also memory safety I guess. Also updated README. Number 1 long term goal is to run Doom (doomgeneric makes that pretty simple by providing a hardware abstraction layer). But to do that, I first need other things (filesystem, proper colour and display output)

Update attachment
Arca
Arca worked on pOSt
41m • about 2 months ago

Got a simple hello world working, it loads kernel.c. For now almost all of the code is copy-paste from the OSDev wiki, just trying to get things working right now. Also, I added newline support to the VGA display

Update attachment
Arca
Arca worked on 8 bit CPU
1h 26m • 2 months ago

ALU is done. I added in extra flags because why not add flags? everyone likes flags. One for every pin of the accumulator and four general purpose flags too. Also logisim is glitchy now, the circuit decides whether it'll work or not depending on how and where you place it. yay.

Update attachment
Arca
Arca worked on 8 bit CPU
4h 29m • 2 months ago

Uhhhh i may have broken logisim

Update attachment
Arca
Arca worked on 8 bit CPU
26m • 2 months ago

ALU is now mostly complete!

Update attachment
Arca
Arca worked on 8 bit CPU
1h 42m • 3 months ago

So it turns out I way overcomplicated bit shifters and I can just do this. Was messing about with muxes and d-type flip flops and tri-state buffers and all that and turns out they can all be replaced by the wires here.

Update attachment
Arca
Arca worked on 8 bit CPU
19m • 3 months ago

Instruction fetcher is done. It uses the ring counter to fetch the opcode and operand into registers.

Update attachment
Arca
Arca worked on 8 bit CPU
2h 53m • 3 months ago

Here's a cool 8 bit register with increment + decrement inputs and carry + borrow outputs too! This allows you to make a 16 bit register pretty easily, which I might use 74LS193 counter ICs are pretty cool I guess.

Update attachment
Arca
Arca worked on 8 bit CPU
40m • 3 months ago

Added a ring counter

Update attachment
Arca
Arca worked on 8 bit CPU
1h 24m • 3 months ago

8-bit registers! And they're made out of logic gates only!

Update attachment
Arca
Arca created a project
80d ago

8 bit CPU

A custom 8-bit CPU architecture designed in Logisim, aimed at (mostly) having feature parity with the 6502

10 devlogs 1 follower
Arca
Arca worked on pOSt
57m • 3 months ago

Finally managed to compile and set up the cross compiler!

Update attachment
Arca
Arca created a project
81d ago

pOSt

pOSt (pointless Operating System title) is a pointless operating system written in Rust

4 devlogs 0 followers
Arca
Arca worked on flappy
14m • 3 months ago

Added the demo video to the readme, I think I'm ready to ship!

Update attachment
Arca
Arca worked on flappy
2h • 3 months ago

It's done! I'm resetting the game by soft resetting the entire pi pico. Turns out that the Pico SDK didn't have a soft reset function (you can use watchdogs but that's janky and results in the pico locking up after reset occasionally for some reason? I think it might be an I2C-related thing as I wasn't resetting the display). So I had to write a value to the AIRCR register (standard register across many ARM cortex M-series chips I believe) in order to reset the RP2350. Anyway, the entire game is fully functional and done now :D

Update attachment
Arca
Arca worked on flappy
29m • 3 months ago

Almost done!

Arca
Arca worked on flappy
1h 27m • 3 months ago

Got around to writing the function that draws pipes, they look pretty good imo

Update attachment
Arca
Arca worked on flappy
1h 4m • 3 months ago

Rectangles! And player death detection too!
Player logic is basically complete.

Update attachment
Arca
Arca worked on flappy
22m • 3 months ago

Animations are complete! It feels much more alive now

Arca
Arca worked on flappy
1h 22m • 3 months ago

Added gravity! I'm still tweaking the jump velocity and gravity acceleration values so that it feels more natural, but gravity is done!

Arca
Arca worked on flappy
28m • 3 months ago

The bitmap drawing function now returns the number of pixels that were already on. I'll be using this for collision checking (if this number is > 0, we have a collision)

Update attachment
Arca
Arca worked on flappy
2h 31m • 3 months ago

Input handling is done! I decided to use interrupts because it's better for handling button presses even at low tick rates, as it isn't limited to the same poll rate as the tick speed. (I know that there are ways to get around that, but interrupts probably simpler).

Update attachment
Arca
Arca worked on flappy
1h 53m • 3 months ago

Finally, we can display sprites!

Update attachment
Arca
Arca worked on flappy
20m • 3 months ago

Who knew drawing a monochrome bird would be the hardest part of the project? It took way longer than 20 min btw (more like 1.5 hours), it just didn't track on Hackatime because I didn't have the plugin installed for aseprite :(

Arca
Arca worked on flappy
4h 8m • 3 months ago

Finally figured out how to control the SSD1306, so I can control the state of each pixel now. All that's left to do is the game logic for flappy bird.

Update attachment
Arca
Arca worked on flappy
1h 16m • 3 months ago

Started work on the display write function, trying to decipher the SSD1306 datasheet

Update attachment
Arca
Arca worked on flappy
2h 31m • 3 months ago

Managed to somehow figure out the I2C interface, so now we have blink running on the entire screen (the chonky line in the middle of the screen is because of screen tearing, it looks normal in-person).

Update attachment
Arca
Arca worked on flappy
1h 13m • 3 months ago

Finally managed to set up the Pico SDK (yay!), though I had to configure a bunch of udev rules for openocd to work properly without sudo (so that VSCode debugging could work properly).

Update attachment
Arca
Arca created a project
98d ago

flappy

Flappy bird on a Pi Pico 2 written in C, with the goal of writing it in ARM assembly in the future. Uses an SSD1306 display and doesn't use any libraries other than the Pico SDK.

flappy
15 devlogs 3 followers Shipped
Arca
Arca joined Summer of Making
102d ago

This was widely regarded as a great move by everyone.