3 ms·
Ah, this is great. I first learned assembly programming to modify one of my favorite video games, Earthbound. To my surprise, the game was a cult classic, and e
by s_q_b 13y ago
Ah, this is great. I first learned assembly programming to modify one of my favorite video games, Earthbound. To my surprise, the game was a cult classic, and extensive efforts had been made to develop tools to modify every aspect of the game.
As part of that effort, I learned 65816 assembly, a 16-bit descendant of the 6502. The day I modified the code to add a run button, thereby eliminating one of the most annoying aspects of the original game, I was ecstatic.
I checked back on the community, PK Hack, a few months ago. The level of development was amazing. Virtually the entire game was mapped, byte for byte. There's a sophisticated visual map editor, and a cross-platform data editor.
The coolest part was to see a tool I envisioned, for which I developed a lackluster proof of concept, come to full fledged fruition.
Earthbound, as it turns out is a rather uniquely developed game. The second game in the Mother series, which is enormously popular in Japan, ran into severe difficulties. Co-developed by HAL and Ape, the coding was rather schizophrenic from the outset. Eventually large parts were rewritten by Shigesato Itoi himself, as the legend goes. The end result is a spaghetti soup of code generated by some type of macro system, compiled from some variant of C, and written in assembly itself.
To manage this complexity, many of the events in the game used a text scripting language that abstracted away the underlying routines. This scripting was a series of in-line hex sequences, each its own set of instructions for how sprites, character entities, etc. were supposed to act when the code appeared, which we termed "control codes."
12-year-old me, supremely confident in his abilities and utterly lacking in all technical knowledge, suggested we build a scripting language on top of the control codes so that manual text editing would be eased. The result was a slapdash Visual Basic job that used a BASIC like syntax for simple substitutes for control codes. Of course at the time, I had no knowledge of parsers, DSLs, language design, or really basic computational knowledge. The result was a wreck.
But that wreck stuck in someone's mind. Years later, after obtaining his computer science degree, one of the hackers with whom I had worked implemented a full-fledged language on top of the control codes.
In retrospect, I don't remember the vast amounts of time I ostensibly wasted learning an obsolete game's design and building tools with which to modify it. I remember the heady moment when you suddenly knew how a data field worked, or after a whole night of hunting with a hex editor the data you wanted appeared, and the sheer giddy thrill of discovering new knowledge and seeing it implemented right there, like a physical mark on the world.
I recognize this has been a long and tangential exposition, so if you've read any of it thank you for indulging me. Another glimpse of that low level assembly, like the smell of home after a very long time away, brings back so many vivid memories.
- Roritharr 13y agoI remember a similar sense of joy when i was tinkering with the battlefield 1942 Wake Island Demo, before there were any kind of indication of mod support. The sheer joy to be able to change simple but undocumented variables to have a plane moving like a jet or having bombs which behaved rocketlike inspired me to learn programming to a deeper degree. Oh the pure joy of exploration and creation. Later we had flying aircraft carriers which had its fighterplanes "docked" on the sides and would "fall" down towards the battlefield, the fighters had shields which had a blue glow once shot upon... All scripted ontop of 1942... Once in a while it would be worth a fortune to be young enough again, not used to thinking in terms of projects, roi, timelines and goals...
- s_q_b 13y agoOnce in a while it would be worth a fortune to be young enough again, not used to thinking in terms of projects, roi, timelines and goals... I keep promising myself that when this project is finished, or when we hit this sales target, or when this sprint is over, then I'll get back to that off-the-wall idea... I truly believe that anyone of any age can get back to this place. But it takes leisure time, carefree brainstorming, full creative freedom, all of which seem in short supply lately. But the sprints aren't ever really over anymore. I don't mind. My work fascinates and delights me, and I consider myself lucky to be able to earn a comfortable living (sometimes from my couch!) while having the financial backing to pursue a brand new business venture as well. By all external metrics, it's a good life. But I can't help but feel that pure creativity, the type of coding that's more akin to art than science, is falling away from my life. So, it's time to change that. I suppose I need a blog for side projects, unrelated to work in any way, shape, or form. I need to get back to why I started coding: so it wouldn't take Ness so goddamn long to walk from Threed to Fourside, so I could animate my middle school teacher as a giant pile of puke and attack with my psi powers, and most importantly, engage deeply with a team not just to reiterate, or even to create, but to discover. I wish there was something akin to a creative fellowship for hackers. Research grants, in academia or private R&D are too tied up in the work-a-day return schedule to provide the creative space for truly new ideas. It reminds me of a line from FDR: Happiness lies not in the mere possession of money; it lies in the joy of achievement, in the thrill of creative effort. The joy and moral stimulation of work no longer must be forgotten in the mad chase of evanescent profits.