• Please review our updated Terms and Rules here

Was it worth it?

carlos12

Experienced Member
Joined
May 10, 2020
Messages
220
Location
Madrid, Spain
That's also the title of a great song by Pet Shop Boys, but I'm not here to talk about that.

Sorry, no TLDR, I needed to tell a lot of things. If you read it, thank you, but if you don't feel like reading it, it's fine too

I need your opinions, fellow retro coders. But first, I need to tell you a story and my feelings:

I've being working 6 years, on and off, onto a huge project. It's huge because I the only developer and because now, on its current pre-alpha state, already counts around 50,000 lines of C and assembly language code, plus also several tools needed to convert and generate assets. The project is still far from being completed because although is quite advanced and is already playable, I still need many hours of coding, polishing and, most important all, now I lack the fuel of motivation. Or maybe it's close to be finished, if I'd had being as motivated as in the beginning. I just don't know.

As I have a day job, and also many other things to fill my life's time, this started as a hobby. I'm a former software programmer, not because I'm retired but because I decided to quit and make a life with a job that has nothing to do with computer programming. I just got tired of dealing with databases, C#, Java and web languages like PHP or ASP, you name it.
It all started with the pandemic lock down of 2020. I had too much free time. So I started to code a little demo of a character taken form the sprite rips of a famous arcade machine moving on the screen with cursor keys, on MCGA 320x200 256 colors mode. It was certainly unoptimized: it required a Pentium to move 70 FPS without delays. This little demo became sooner onto a real project: I would recreate the entire arcade machine, and it would run on any DOS based computer.

The project was kind of a gift to my 13 years old self, my brother who is one year younger than me, and all the people of any age that enjoyed the arcade machines at the end of the 1980s and early 1990s. We all enjoyed going to the Arcade saloons but also wanted to have the real games, not the cheap conversions we were used (disappointed) to, on our home computers/consoles. So my intention was to recreate, as faithfully as possible, a full arcade machine for computers similar to the one I had in 1990. An arcade machine running not on a Pentium 150 with MAME, but an arcade machine running on a PS/2 Model 30 8086, Amstrad PC2086, EPSON PSE-30/Equity or Turbo XT with a VGA card!

So all these years, as I said on and off, I have been coding this arcade machine conversion. It has being in some sense very satisfying, but in other ways very daunting. In order to run on an 8086 with only 640Kb of RAM, with absolutely no hardware sprites, requires an extreme optimization that is very time consuming. The fact there's very little RAM makes everything even more difficult as you should blit the sprites not only fast, but also saving RAM by compressing. Thanks to this forum I discovered RLE sprites. But I also had to code how to flip them realtime as there's just not enough RAM to keep fliped and non-fliped versions of the same sprites. I also did CGA and EGA versions. Oh my god, how difficult is to program them, specially if you want a decent performance! In brief, it has been a huge ammount of work, quite maddening some times. I stopped one year ago. Since then, I only did some minor bug fixing.

So now I have an unfinished version of the game and I ask myself "was it worth it?". Thousands of hours to do something MAME already does, and it does better as it just interprets the original machine's ROM code. I had to recreate EVERYTHING. All the game's physics, the enemie's AI (this is still pretty much incomplete, thugh), etc. The only thing I didn't have to recreate was the sprites and music rips. If I had dedicated that time to build an original game without having to scratch my head for extreme optimizations, it probably would have being finished a few years ago. But now I have an unfinished project that I also don't see an easy way to monetize.

In a few weeks I plan to publish a video of the game, running on emulators but also maybe running on real hardware. I also plan to release the executable in order you people test it, although it's, as I said several times, incomplete. Let's see...

So my question to you, my friends, is: do you thing is worth the great effort to achieve good performance things for these retro computers almost nobody cares (or even knows) anymore? Is it worth knowing you are probably not going to get a cent from the project? It's good to be a romantic or an idealist, but taxes and bills still need to be paid...

If you reached to here, thanks for reading.
 
Last edited:
What a great post, and thank you for sharing. First of, congratulations on what you achieved. As you have noted yourself often these types of projects are no small feat. I can't speak for all of the community, but I can say personally I have been down this path many times on many of my projects. Some not even making it past the ideation stage. The important thing to take away the enjoyment of journey. It's attempting to push our abilities and often the previously understood limits of these machines. You even said it yourself; "It has being in some sense very satisfying, but in other ways very daunting", and I would almost believe if these things were trivial and easy I doubt many of us would even care to do them just because of the fact that the reward completing them would barely draw us in. So with that being said I think the value of these projects are in what they provide us though the experience. Not to mention, are projects ever really "finished"? 😂 If they were I think I'd be quite unemployed at my job RN.

I am excited that you intend to publish what you have. I have no doubt that it will inspire others and may even give your project a life of its own that others can expand and build off. I encourage you to even write up a post or create a video sharing your journey in detail, what your experience was like, what you discovered, and how you went though the process. You might even want to consider sharing your source on a repo like github and place it under a GNU license.

Thanks for sharing!
 
I was also looking for a way to spend time on my hobby during the covid lockdowns, and decided to do something I had been considering for many years: create a game for my first home computer. It was a well known small DOS game from which, coincidentally, I only took some art and wrote everything else from scratch.
For a platform I'd never coded at that level (C + Assembly), without the conveniences I'm used to with today's tools.

It got to ~90% of what I wanted to achieve and, with the lockdown situation changing, everyday life prevailing and the initial excitement passing, I stopped. I just couldn't deal with an obsolete, unforgiving development environment anymore and the effort it required.

Fast forward a couple of years later, I forced myself to complete it because, come on, I just had to make a tribute to my first computer. It was now or never. But it took the promise that I'm never dealing with such a thing again. Small projects that can remain enjoyable throughout? Sure. Thousands of lines of code at the margin of a machine's capabilities? No thank you, not again.

I'm writing all this because I got the feeling that my experience is similar to yours, so hopefully what I have to propose will be useful: I never regretted completing it and it also took the urge to attempt anything similar in the future away. So my suggestion is to not abandon it now, when the frustration is gone you'll regret it but it'll be difficult to catch up again. Give it a last push and be done with it forever. No, the effort is not worth it and it absolutely won't pay back, at least economically. But most of us are not tinkering with old computers expecting money.
 
do you thing is worth the great effort to achieve good performance things for these retro computers almost nobody cares (or even knows) anymore? Is it worth knowing you are probably not going to get a cent from the project?

Yes, yes, a thousand times yes.
It is not about some dry, vague thing like performance / optimization in engineering. It's about doing things you love, and getting better at them each day, which is self-satisfactory, and doesn't need external approval. 99% of people who run, even in younger age, won't ever compete. Yet they care about their "work", the routine, the performance.

Edit : about the return value; I tend to not mix time crunch and engineering. The time I "waste" on 0 return hobby projects and just messing with the computer in any possible way, are most valuable experience there is.
 
As someone with stacks of unfinished projects, and, arguably, a single finished one, I can only say that finishing these projects is really hard, at least for me.

For, it all becomes minutiae. Very fine details. And thats something I'm not very good at. As they say, 90% of the project is writing it, the other 90% is finishing it. ESPECIALLY if there's any UI involved. Services are easy in contrast.

I can't speak for you. I do know that all of these projects that I've moved on from, I enjoyed while I worked on them, but, I've left them behind. And that doesn't bother me. It's OK. Most of the time I'm trying to learn something, work my way through it, learn it, build it, got a framed house, roughed in some dry wall, and "ok, now you get to mud the walls, put in the trim, frame the doors, spend far too much time the paint book to pick out colors so you can paint the thing and then, and then, and then....(and don't forget the sanding!)"

Very difficult. For me. There's a reason I leave all of those decisions to my wife.

I do not believe in sunk cost. It's all learning, so its easier for me to move on to the next adventure.

I can't speak to doing highly optimized games, but I'm surprised by this time you don't have a solid engine upon which you can now just "pound out" levels (or whatever it is your game does). It surprises me that each stage is a unicorn.
 
First all, thanks all for your very valuable responses. I'm glad some of you found my post interesting. Thanks for reading it and for taking the time to participate.

Second, I'd like to add something I forgot on the first post (but it's ok as it was already too long, LOL). As I said before, initially I didn't have any intention neither to expand the little demo nor make it playable on the 8088/86. What I didn't say before is that shortly after doing this, I started to read Michael Abrash's Zen of assembly language and Black book. That was coupled with the great inspiration that meant watching 8088 MPH demo and forum member Mills32's Little Game Engine. All that opened my eyes about what was really possible on the first generation of IBM PCs and compatibles so I thought "maybe it's possible to port accurately an arcade machine into the 8086/88 instead of needing a 486 or a Pentium". We really stand on the shoulders of giants, as without the inspiration of both projects and without the Abrash's writtings, Richard Wilton's and others, nothing of this would have been possible.

thefox1980 said:
Not to mention, are projects ever really "finished"?
Beethoven used to say "I don't finish my works, I abandon them". So you are quite right. As they say, better done than perfect. Anyway I think there's a minimum for a project to be presentable to the public. Even not being a perfectionist, the product should be minimally polished to be publicly released.

I have no doubt that it will inspire others and may even give your project a life of its own that others can expand and build off. I encourage you to even write up a post or create a video sharing your journey in detail, what your experience was like, what you discovered, and how you went though the process. You might even want to consider sharing your source on a repo like github and place it under a GNU license.
Sorry, I don't intend neither to let other people to take the baton and finish the project, nor releasing the source code. What I am doing, but it's taking forever, is writing a book similar to Oscar Toledo's Boot Sector Games, explaining the techniques and maybe including some source code there for the most specialized parts but not the entire source code. Maybe I'll finish it also some day...

konc said:
Fast forward a couple of years later, I forced myself to complete it because, come on, I just had to make a tribute to my first computer. It was now or never. But it took the promise that I'm never dealing with such a thing again. Small projects that can remain enjoyable throughout? Sure. Thousands of lines of code at the margin of a machine's capabilities? No thank you, not again.
Thanks for your testimony. I see I'm not alone. I would love to know which is your project, I you don't mind to share it with us.

So my suggestion is to not abandon it now, when the frustration is gone you'll regret it but it'll be difficult to catch up again. Give it a last push and be done with it forever
Thanks for the encouragement. I really would like to finish it.

zare said:
Yes, yes, a thousand times yes.
It is not about some dry, vague thing like performance / optimization in engineering. It's about doing things you love, and getting better at them each day, which is self-satisfactory, and doesn't need external approval. 99% of people who run, even in younger age, won't ever compete. Yet they care about their "work", the routine, the performance.
Loved to read this. Thanks.

whartung said:
As someone with stacks of unfinished projects, and, arguably, a single finished one, I can only say that finishing these projects is really hard, at least for me.
Thanks. I see again I'm not alone. Some decades ago, I started a few games that remained unfinished mainly by the lack of knowledge at that time.

whartung said:
I can't speak to doing highly optimized games, but I'm surprised by this time you don't have a solid engine upon which you can now just "pound out" levels (or whatever it is your game does). It surprises me that each stage is a unicorn.
Yes, there's an engine and a game's main loop. The mechanics of the game are just the same for all it, so the same engine runs stage 1 and 3 just changing the background tile maps, collision tiles, triggers etc. The game, as I said, already runs but there are some things still missing or not completed compared to the original arcade machine. I will reveal the arcade machine soon when I prepare the videos and a decent executable. Maybe around 85% of the VGA game is done. CGA works but has a few bugs, and EGA works but it has no sprite flipping yet.
 
Last edited:
My corner of the hobby at present is a pretty narrow slice: I got a mid-1980s PC laptop and it's become my favorite hobby computer, so I mostly write programs for that machine. Technically the software would run just fine on almost any PC but it wouldn't look right except on machines with wide, inverted CGA monochrome displays, like the Toshiba T1100, Tandy 1400, or HP100LX. So I wouldn't say writing code that other people can use is necessarily high on my list of priorities. :)

As for whether it's worth it... kinda tough to say. It's fun, and in that sense it's worth it. But I do have other demands on my time, other things I want to accomplish. Of course, I spend far more of my free time on less-demanding stuff (watching videos or playing games, etc.) so if I want to get more hobby stuff done it probably makes a lot more sense to diminish my idle time, rather than shift which hobby pursuit gets that narrow slice of "productive idle" time...

One thing that's occurred to me lately is that I was at my best as a professional programmer when my enthusiasm for hobby programming led me to engage with all this stuff and learn useful things that I could apply professionally. From that perspective... having my hobby programming not align with the kinds of things I do professionally might not be good for my career skills. And from that perspective, it could be very valuable to me to find ways to make my hobby work (or some of it, at least) relevant to my professional work again. That might mean making more time to create more things for modern computers, or more things that are in line with possible future jobs I'm interested in. I think that's kind of tricky, though, kind of a different beast. Like for hobby stuff I tend to like to write most of it myself - and that does eat more time of course. To do impressive things with modern computers, I think much more of the time it's necessary to accept and incorporate other people's work, and I'm not sure if that's still fun for me. At least, I think it'd be a very different kind of fun - like maybe less about the process and more about the results? And then bringing in generative AI feels like it'd be that, but more so...

So for instance recently I started learning more about ARM - in part because I think it's an interesting CPU architecture (I should try Gameboy Advance programming sometime!) - but it's also maybe something I could apply to my professional work, where we need performance and our code's almost exclusively run on ARM64 now... I actually had some fun digging into some of our text processing code with the debugger to see if we could SIMD-optimize is better... It was good times but after a few days of it I had to get serious and look for pre-existing libraries to do this stuff, and immediately found something way better than my first attempt was... and then it's no longer about me digging through CPU instruction references trying to think about how to use those tools, it's about pulling in and benchmarking this code, which.... well it's a win but it doesn't quite feel like my win any more, you know? Like pulling in a library makes sense, but it's boring, anyone could do that. I guess the fun part right now is learning how the library does what it does...

Building an arcade machine around an old PC sounds like a fun project. I'd enjoy seeing what you come up with.
 
Thanks for your testimony. I see I'm not alone. I would love to know which is your project, I you don't mind to share it with us.
Sure it's nothing impressive though, just a rewrite of the popular DOS game "Arcade Volleyball" for the Amstrad CPC. Here's a bit more info + visuals, I didn't mention it initially because it's irrelevant to the discussion, but also it's of no interest to most people.
 
I've now spent 3 years on RealDOOM. I do think it's probably somewhat close to finished, but it can also be unfinished for as ever as I might want to keep piling on. I won't make a cent from the project (the license literally forbids it) but that's not why I work on it. It's not the most popular project but that's not why I work on it either. I work on it because I think it's interesting and I've had fun doing it. At the same time I suppose I could have been doing X Y or Z during the last 3 years instead, but this has also led me to do a lot of things I always wanted to learn but didn't have a good excuse/proper motivation for.

Anyway, whether or not it's worth it is your own personal judgment. My next project after this will probably be a game boy emulator for x86-16, which also won't make money, and I will also only do because it's fun. But yes, it's nice if your personal project is also one that makes money, or to convince yourself to get passionate about such a project. Probably hard to do in the vintage computer realm though.
 
My next project after this will probably be a game boy emulator for x86-16, which also won't make money, and I will also only do because it's fun. But yes, it's nice if your personal project is also one that makes money, or to convince yourself to get passionate about such a project. Probably hard to do in the vintage computer realm though.
That would be very nice!

The problem with my project is I may had underestimated the amount of time and effort needed to finish it. So, 6 years later (not literally, as I've been working on it on and off) and ~50,000 lines of code, I'm totally burned out and frustrated. Maybe a better approach should have been to build an ultra optimized emulator to just read the ROM's code, or transcoding the 6800 machine code to 8086, so it could be avoidr having to rebuild all the game's logic. But I think that's impossible given the power and RAM restrictions of the 8086/88. Anyway, that's not something I'm gonna even try.

I would have been very happy if on this large time I'd had managed to finish it, even if not "perfect".
 
So my question to you, my friends, is: do you thing is worth the great effort to achieve good performance things for these retro computers almost nobody
Last year I embarked on a quest to re-write F19 stealth fighter, a fantastic and underrated game for its unique concept, as the player has to sneak around and avoid 1:1 confrontations. It ran at ~ 2 fps on a humble 8088 with an amber EGA monitor, so I set that as a personal benchmark. I used to program in the 90s, and while memories of that time are fond, by any sane measure, it was torture. Writing for an old platform doesn't mean any more having to write on the same platform. My setup is VS code, on Linux, with open watcom 2 and plenty of AI which keeps my mind free to concentrate on architecture and features. The project has many unit tests and an extensive regression test suite where the program is run in a DosBox, screenshots are taken automatically and compared with reference screenshots. I wrote an AI agent which visually compares the screenshots and infers error sources, which works surprisingly well and saved a lot of debugging time. I don't care what all the AI haters say, I have seen the light and ain't going back. Although not feature complete, the demo currently runs at ~ 10 fps on an emulator spec'd around the target platform. So yes, for me it's been a worthwhile ride. PS I'm looking for collaborators :)
 

Attachments

  • f99_000.png
    f99_000.png
    2 KB · Views: 4
Back
Top