Sam Abbott-Kennedy @samothyk.bsky.social · 05/09/2026Work on the ternary fantasy emulator continues. I have a wave channel working like a Gameboy, except it natively supports negative values and has a resolution of 3 trits (27 values) Vs the gb's 4 bits (16 values). Still crunchy but more sonorous than a gameboy 010
Sam Abbott-Kennedy @samothyk.bsky.social · 31/08/2026Finally working on the ternary fantasy console again and I have audio working. Currently got one channel working with 8 trit period, meaning it can accurately represent a full 8 octaves. Manually changing the pitch by writing to the audio registers with the keyboard for now. #fantasyconsole #ternary 020
Sam Abbott-Kennedy @samothyk.bsky.social · 16/08/2026Ternary assembly (tasm) is now mature enough to make a ROM to move a square around the screen! #ternary #fantasyconsole 010
Sam Abbott-Kennedy @samothyk.bsky.social · 15/08/2026Work on an assembler for the ternary bytecode (or I guess, trytecode) has begun, it's so much easier to write programs for the ternary emulator now 😅 Which program is easier to read? 😛 #ternary #assembly 000
Sam Abbott-Kennedy @samothyk.bsky.social · 14/08/2026IO register is now working, and can be queried trit-by-trit to move a sprite across the screen! No VBLANK yet so there's just a delay of 100 cycles between each update 😅 #ternary #fantasyconsole #emulator 000
Sam Abbott-Kennedy @samothyk.bsky.social · 13/08/2026Having 3^6 (729) possible opcodes absolutely mogs the gameboy's 2^8 (256) 000
Sam Abbott-Kennedy @samothyk.bsky.social · 13/08/2026Still loads of room left but the optable for the ternary CPU is filling out nicely! you can do lots of things with just arithmetic, jumps, loads, and tritwise operations. Heavily influenced by the gameboy optable of course gbdev.io/gb-opcodes/o... #ternary #fantasyconsole #emulator 100
Sam Abbott-Kennedy @samothyk.bsky.social · 13/08/2026Adding input to my ternary console emulator, what's neat is a single trit can represent a whole axis, -1 for left/down, 0 for released, and +1 for right/up. The other buttons are disappointingly binary, however #ternary #emulator #fantasyconsole 010
Sam Abbott-Kennedy @samothyk.bsky.social · 04/08/2026I've gotten to the point where my ternary CPU is good enough that writing roms for it by hand is getting cumbersome. So logically I need to invent an assembly language for it. I have managed to write the rom for a single sprite moving though 🎉 #fantasyconsole #ternary #odinlang 010
Sam Abbott-Kennedy @samothyk.bsky.social · 03/08/2026I switched the ternary emulator's tilemap to 3 trits per pixel. Now figuring out how to draw tiles with code is much easier. Also this means they can have a colour depth of 27 colours! All with space for more tiles in VRAM than a Gameboy #fantasyconsole #ternary #emulator 000
Sam Abbott-Kennedy @samothyk.bsky.social · 02/08/2026The "ROM" is behind it, instead of hexadecimal which encodes 4 bits per hex character, I needed to use heptavigesimal (base 27) because it can encode 3 trits per character... 000
Sam Abbott-Kennedy @samothyk.bsky.social · 02/08/2026Most insane project yet, a ternary CPU based emulator for a console that never existed. I have the CPU and PPU working well enough to transfer tiles to the screen, but working out the ternary encoding of each tile by hand is melting my brain 😅 #fantasyconsole #ternary #odinlang 110
Sam Abbott-Kennedy @samothyk.bsky.social · 23/07/2026Dabbling in #odinlang once again, I forgot how nice of a language it is. No llm no Google just the docs on one screen and the text editor on the other like god intended 010
Sam Abbott-Kennedy @samothyk.bsky.social · 23/07/2026Well I'm glad you're still here, and making cool stuff! 110
Sam Abbott-Kennedy @samothyk.bsky.social · 23/07/2026How on earth do you have so many cool projects? 110
Sam Abbott-Kennedy @samothyk.bsky.social · 18/07/2026I can recommend posting your stuff to immediately find everything wrong with it, the 4th level hierophant ability completely eclipses the 12 level one for turning undead lmao 000
Sam Abbott-Kennedy @samothyk.bsky.social · 18/07/2026Continuing OSR-posting, this is the class I'm happiest with (it's also the most complete class besides the Warrior). The Devout covers the cleric/paladin archetypes with a unique casting mechanic that I should really test. Favour rolls feel a bit jank and maths heavy but I like what they're doing 100
Sam Abbott-Kennedy @samothyk.bsky.social · 18/07/2026This also stops it from being a combat option, so they can't just king Midas an enemy's weapon 😂 I just wanted the option of alching something instead of having to find a merchant. I'm running Arden Vul right now and not having to travel to Gosterwick to sell would be very convenient sometimes 😄 000
Sam Abbott-Kennedy @samothyk.bsky.social · 18/07/2026Yeah I've nerfed it a bit, now it takes 1 turn (10 mins) to cast and it uses the item's "true" value (i.e. the price in the book). Also it's a 3rd tier spell so they can't cast it endlessly at low levels. Not sure why I'm worrying so much about balance in a game that's not even playtesting yet 😅 100
Sam Abbott-Kennedy @samothyk.bsky.social · 17/07/2026Another spell I quite like that absolutely cannot be abused in any way, nope not at all 100
Sam Abbott-Kennedy @samothyk.bsky.social · 17/07/2026In my everlasting quest to start new projects I'm trying to design a sort of OSR TTRPG. I'm having fun with the spells section, can you guess which games are inspiring me? #OSR #TTRPG 231
Sam Abbott-Kennedy @samothyk.bsky.social · 08/05/2026The Firered romhack with only gen 5 pokemon is still going. The increased level curve and power creep is really refreshing. Also figured out how to change the overworld pokemon sprites! #pokemon #romhack 010
Sam Abbott-Kennedy @samothyk.bsky.social · 06/04/2026It's surprisingly refreshing, the higher power from the 4 generations of scope creep means everything is stronger, and because everything in unova evolves so much later there needs to be more XP everywhere raising the power level even more. It's quite fun tbh! 000
Sam Abbott-Kennedy @samothyk.bsky.social · 06/04/2026Working on something completely different, what if the unova dex was the OG 151 #pokemon #romhack #frlg 120
Sam Abbott-Kennedy @samothyk.bsky.social · 20/03/2026Spent a few days playing with the game of life program, fixed a lot of bugs in the language doing so. I should make more projects like this to stress test the language, any ideas for what else I should try coding? #compiler #programming #raylib 060
Sam Abbott-Kennedy @samothyk.bsky.social · 18/03/2026The code is a bit longer than the usual snippets I post, if you're curious what it looks like: pastebin.com/shtUPVkipastebin.comimport "raylib.os"let width: const i32 = 1280let height: const i32 = 720 - Pastebin.comPastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time. 000
Sam Abbott-Kennedy @samothyk.bsky.social · 18/03/2026Managed to build a cheeky little game of life simulator in my programming language! #programming #compiler #raylib 140
Sam Abbott-Kennedy @samothyk.bsky.social · 17/03/2026Anonymous structs have blown open a whole new slew of features. Multiple return values and tuples basically for free #compiler #programming 031
Sam Abbott-Kennedy @samothyk.bsky.social · 17/03/2026Been noodling on how my language will handle anonymous structs. They're not done yet but I think they'll be pretty loose, able to coerce between compatible named structs. Plus they'll basically act like tuples once you can create anonymous struct literals, which is nice! #programming #compiler 010
Sam Abbott-Kennedy @samothyk.bsky.social · 15/03/2026Gave in and added function receivers, and I think they look pretty swanky. Just means that &self is automagically converted into a parameter `self: &Vec` 010
Sam Abbott-Kennedy @samothyk.bsky.social · 15/03/2026For instance, for this small program to compile I had to add hexadecimal integer literals, and fix struct defaults not being recognised in imported types 000
Sam Abbott-Kennedy @samothyk.bsky.social · 15/03/2026Getting to the point where I can write semi-serious programs in my language. It's a great way to find a bunch of subtle bugs and missing functionality. E.g. here's a ~totally functioning~ gameboy emulator #programming #compiler #raylib 170
Sam Abbott-Kennedy @samothyk.bsky.social · 14/03/2026Had to implement some name mangling when emitting functions to lay the groundwork for interfaces, and I noticed this gave me function overloads for free. Take that, C! #compiler #programming 010
Sam Abbott-Kennedy @samothyk.bsky.social · 12/03/2026Sounds like a game mechanic waiting to happen 😜 110
Sam Abbott-Kennedy @samothyk.bsky.social · 12/03/2026It's all coming together. Now I have unions I can implement the optional type ?T which is just a tagged union. In addition I could implement rust style try-unwrap of optionals basically for free with all the parts I have! Here opt_return only prints x if it's some, else it returns early! #compiler 030
Sam Abbott-Kennedy @samothyk.bsky.social · 11/03/2026Now with the fancy struct syntax, implementing tagged unions was relatively easy. Also got rid of all those pesky semicolons messing up the place #compiler 010
Sam Abbott-Kennedy @samothyk.bsky.social · 10/03/2026Blew apart my struct and function parsing to allow default values and named arguments. Pretty swanky imo #compiler 010
Sam Abbott-Kennedy @samothyk.bsky.social · 09/03/2026Not sure it's the greatest use of it but the new `with` statement works nicely with raylib 😅 #raylib #compiler 110
Sam Abbott-Kennedy @samothyk.bsky.social · 09/03/2026Added a defer statement to my language, but I didn't like how the resource acquisition and disposal had to be separated. So I added a with statement that just desugars to defer, and I kinda like it! #compiler 030
Sam Abbott-Kennedy @samothyk.bsky.social · 08/03/2026Starting on the memory management for my language. Nothing fancy but just a few more guard rails than C. Every pointer has an "origin": Stack, Param, Heap, or Global. Only Heap can be freed, and Stack can't be returned from functions. Maybe this will cause problems but we'll see! #compiler #llvm 110
Sam Abbott-Kennedy @samothyk.bsky.social · 04/03/2026Osmium Raylib ffi speedrun #compiler #llvm #raylib 020
Sam Abbott-Kennedy @samothyk.bsky.social · 04/03/2026Decided the next logical step from modules was ffi, surprisingly straightforward to implement! Now I can tuck all that nasty ffi code in a libc.os or something #compiler 110
Sam Abbott-Kennedy @samothyk.bsky.social · 04/03/2026The way it works is horribly inefficient, it takes the main file and parses it and gathers every type and function declared. Then it takes every import statement, finds the file it points to and then repeats the process recursively to build a graph. Then the graph is DFS'd to emit one llvm file! 000
Sam Abbott-Kennedy @samothyk.bsky.social · 04/03/2026I managed to implement a somewhat halfway decent module system. I'm not thrilled that the import needs the relative path but it'll do for now. Plus it handles the same file being imported multiple times across the compilation graph 😌 #compiler #llvm 120
Sam Abbott-Kennedy @samothyk.bsky.social · 01/03/2026Added strings to my language, since they're just backed by a slice of u8's all the regular slice operations just worked out of the box Again nothing real languages don't do but it's so satisfying seeing it work! #compiler #llvm 040