The good news: I managed to make progress on some of the goals I set for myself last month.
The bad news: I didn’t get as far along as I thought I would since I got… distracted.
Here are the things that I made progress on:
-
GBA Emulator: I did neither the ARM CPU implementation nor the PPU. What I did do was
- finish up the address space mapping (ie. I transcribed the register masks from GBATek into C++ source)
- setting up the memory access system of the emulator (each piece of hardware gets an ID, and each address in memory grants read/write access to only certain IDs)
- integrating the desktop GUI framework (imgui) and refactoring the codebase to separate the core emulator functionality from the UI (this allows me to build for both desktop via imgui and the web via emscripten)
Maybe this time, I’ll actually implement the CPU instruction set and PPU like I said I would?
-
Crafting Interpreters: I actually make pretty good progress on this. I managed to
- finish the entirety of the scanner pass (ie. the class which converts the raw source code into higher level tokens)
- the core functionality of the parser (which converts tokens into an abstract syntax tree (AST))
- the core functionality of the interpreter (which takes the AST and actually executes the code)
I’ve gotten to the point that the interpreter can now run a Turing-complete subset of the full Lox language, which is pretty cool. Granted, the feeling of accomplishment is a little diminished when you find out that Turing-completeness is not a very high bar to reach (things like Minesweeper and Magic the Gathering accidentally achieved Turing-completeness).
Besides the actual fun of learning Go and creating the interpreter, I also learned a lot of theoretical ideas about grammers and languages that I found eye-opening.
The next steps involved in this are implementing the syntactical sugar of the language. Silly things like functions and classes and inheritance.
-
POV Fan: I made very little progress on this :)
Most of what I did on this front involved setting up all of the equipment and toolchains:
- I finish setting up my rudimentary electronics station at home (unpacking and organizing all the components and tools)
- I reinstall and updated the software for my oscilloscope (It’s the Hantek 6022Bl. There is an open-source version of the Hantek interface here which I needed to fiddle with to get working)
- I re-configured the PlatformIO setup on my device (something broke; I don’t know what. It works now though)
That’s about where I stopped. I tried futzing around with some resistive touchscreens that I bought years ago to see of they still works (they did not). Hopefully this time I at least make the monochromatic POV fan version?
In other news
- Exercising: I got back to exercising somewhat regularly after stopping completely during the last couple of months. Like the rest of my endeavors, progress is slow, but steady: I started lifting weights between 2-3 times a week. Biking to the gym instead of driving. Hopefully these little things will compound over time.
I’m thinking of now transitioning to weightlifting 4 times a week and following an upper-lower split. I’m also planning on going biking during my rest days. We’ll see how well that plan turns out.
-
Apartment Hunting: I eventually have to get around to it (preferable sooner rather than later). I’ve attended some seminars hosted by NYU about the topic which were quite helpful. Now, it’s just down to finding a place that I like/ can afford and trudging through all the paperwork.
-
Video Games: I played some games, which is something I haven’t done in a long while (this was the distraction which was previously mentioned). These were mostly Fire Emblem fan games (I like strategy games, I like the Fire Emblem series, I’ve played most of the main-line games, so this seemed like a fun rabbit-hole to go down). The quality of said games ranged from trashy to absolutely stellar; overall, I had a fun time.
That’s all for now. I hope that I at least finish the tree-walking interpreter and the POV fan by the end of next month. See you then!