Thought I'd post a quick update on the ZX Spectrum game reverse-engineering, since the last few posts have been off-topic and you'd be forgiven for thinking that I'd been irretrievably diverted from the task at hand.
Quite to the contrary I've done a few short sessions here-and-there and am progressing somewhat, chipping away at my understanding of the screen rendering and what is done where. This has, for the first time, involved running MESS and patching code. I think I've got a reasonable view of the code structure now - I've identified the main game (nested) loops and the purpose of most of the routines called from there - and it will probably be in the next session or two that I will have sufficient information to be able to return to the screen rendering in C.
The rendering code deals with all the major game data structures and whilst it means that there's a reasonable amount of work involved in re-implementing it, even in C, it of course implies that a lot of the game's core engine code will then be complete.
Once I have the rendering complete I'll post a brief description of the main engine structure because I think it's interesting, as well as the requisite eye candy.
From there the task gets a little harder as the remainder will involve the 'AI' aspects of the game and a multitude of specific-purpose variables and flags that are hard to deduce from the listing alone. This is generally where you have to start actually playing the game (more) and poking around in memory.
I've got two weeks overseas travel (USA) for work coming up this weekend, which will actually mean I'll get more time to work on this project (sad, lonely nights in a foreign motel room) so I'll ensure my laptop is up-to-date with the latest tools and source before I go.
I've also had an interesting idea about what could be done with this project once the reverse-engineering and/or porting is complete which I think will particularly interest Coco fans, but I'll save that for another post.
No comments:
Post a Comment