Steel Ball(s) Sept 1, 2015 9:17:17 GMT
Post by rmartins on Sept 1, 2015 9:17:17 GMT
I'm using this thread like a development blog, so that others can know what it takes to code a game, the steps forward, the steps backwards, the thrills, the bugs, the hacking, etc...
Coding this game, as been a blast so far but with the usual setbacks of code development in assembly.
I have been coding all my life, so in that regard, it's not that different.
I have been coding for Arduinos too, but in C, I haven't touched assembly in a few years.
But I'm finding new stuff almost every day, in regards of the internals and quirks of the machine.
The only major difference I notice in workflow, is that if I try to apply object oriented concepts or at least some structure to assembler code, it has a huge toll on performance, since it implies a lot more calls (methods).
Since CPU performance is very limited, we have to give up on some structure, and sometimes duplicate/unroll/inline some code, which becomes a nightmare when you do have to change some fundamental data structure, since we gave up partially on encapsulation concept, hence one fundamental change can affect a lot of duplicate/unrolled/inlined code, which is the worst developer sin.
Something else that I have noticed while working with Zeus, is the concept of working with line-numbers, which is not as easy as copy & paste in a modern editor or IDE.
Zeus has a re-number command ("R") which could help, but it can only renumber from a location (start) to the end, which is not very useful, when you need to renumber just a single routine, so I have to do it by hand.
I could hack an ASM routine to do it, if I knew the internal format.
Or I can hack Zeus own routine, to do what I want, but it would take some reverse engineering to do that.
Anyway, I'll keep working with Zeus, for now, due to the fast work flow (except renumbering).