💾 Archived View for kvothe.one › gemlog › 2020-08-15.gmi captured on 2020-11-07 at 00:55:37. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2020-09-24)

-=-=-=-=-=-=-

another plan.

the plan.

A few days ago, I launched a journey to implement the Another World VM on Plan 9. This is probably the most ambitious personal programming project I've ever embarked on for funsies, though I am no stranger to the work. I've cut my teeth programming for a paycheck. This time I want to do something frivolous and fun, just to explore and see if I can do it.

The last few days, I've been getting my programming environment ready to go. 9front, the `acme` editor, `git9` for version control, mkfiles for builds, `games/catclock` to keep watch, that sort of thing. Plan 9 isn't the UNIX I'm used to, but I didn't set out to do this on Linux or BSD. I'm doing this to learn and get comfortable with Plan 9!

At any rate, I've stubbed out the skeleton project and laid claim to a home on tildegit.org for it:

https://tildegit.org/kvothe/anotherplan

Once I've actually got something that kinda works, I'll start mirroring the releases and source code here on kvothe.one. Or maybe implement or use a git->gemini bridge of some sort. But I digress. I'm working on `anotherplan`, not fleshing out my gemini server. :^)

another world vm details.

Fabien Sanglard has written a few phenomenal articles on the Another World VM, most notably "'Another World' source code review":

https://fabiensanglard.net/anotherWorld_code_review/

He's also shared a C++/SDL implementation of the VM, which I'll be using as a reference implementation for `anotherplan`:

https://github.com/fabiensanglard/Another-World-Bytecode-Interpreter

The gist of the Another World game engine is that it's implemented as a bytecode interpreter, where the asset files (BANK01..BANK0D, MEMLIST.BIN) are both static assets AND the code for rendering the game. The job of the VM is to translate the bytecode's rendering and I/O calls to native system calls. As it turns out, the game design made it really easy for Another World to be ported to all sorts of systems, like the 3DO, SNES, Game Boy Advance, and Apple IIGS.

personal life.

I don't intend to be myopic about working on `anotherplan`. It's a project I'm doing for fun, it's exploratory, and there's nobody to answer to for it. It's not a sprint, it's a journey, and sometimes I might stop to smell the roses.

Once such rose-smelling stop is this:

Last night, C. and I had a really good conversation about relationships and how we might handle pursuing polyamory. I'm of the opinion that if this isn't a "hell yes!" from both of us, it's a "no." I feel this isn't something that can work as a "sure, maybe I might try this." So we talked for a while last night, and I think we both agree that this is, in fact, a "hell yeah!" Of course, we have plenty of reservations: COVID, making sure we do the right thing as parents, how to handle pop-up jealousy and reassurance. But, this isn't some tepid past-time, we both want to explore our identities and build relationships. And we're on the same page and support and love each other very much.

Other than that, this is the first weekend that I've properly had off in over a month and I'm really excited for that. I've just finished my coffee, it's a little past 9am, and I think I'll go for a run. I haven't been able to keep up with the running w/ work and COVID, so it's high time I paid that piper!

Until next time, be well!

kvothe.

return to the KVOTHE-ONE gemlog.