6

There was a number of ZX-Spectrum games that had loadable levels - e.g. R-Type, Gauntlet, Short Circuit (48k).

I wonder if those loadable levels only contained graphics / music / game data for the level, or was it commonplace to include executable code as well?

  • 1
    It would depend a lot on the game. I don't know if it was true for the ZX Spectrum version but the Commodore 64 version of Bard's Tale had a small amount code that was part of each level file. – Ross Ridge Feb 8 at 8:03
  • It's a hard question to answer unless you were a developer or hacker, as z80 code and data would be indistinguishable until used. – Mark Williams Feb 8 at 20:49
  • 1
    @MarkWilliams depends on what you mean by "used". A trick I used many times when I was a teenager was copying a block of code/data in question to video memory. If the bytes copied were code, they would form a pretty random pattern reminding TV "no signal" noise. But sprites and level data usually resulted in visually recognizable patterns with frequent repetitions. – DmytroL Feb 11 at 14:54
8

For games with very distinct playstyles per level, such as Ghostbusters II https://m.youtube.com/watch?v=4wnPZEM1IvQ (sewer drop, side scroller) and the 128k version of Short Circuit (exploration mode, side scroller mode), the segments of the game were closer to different games entirely than a common engine into which things could be loaded. (This is especially obvious in a for A View To A Kill on the C64: driving, exploring, side scrolling platformer)

I haven't loaded the games up and put a watch on memory to prove it (if someone could that would be great), but it would be nonsense to keep the backing code providing the engine of one play-style around when it's totally different to the current game phase. Only things like maths code (I doubt these games are as sophisticated as Elite, but...), a music player, or a font could be common, but it would simplify loading immensely if the entire active memory space (save the player's score/lives and the loader itself) were just blasted with the new phase every time.

|improve this answer|||||
  • 1
    It varies on game. AgentX or it's sequel (I forget which) contained code as it was a three part game. OutRun just the level data afaik. Athena also just level and iirc some sprite data. The latter personally confirmed as Crash mag gave a 1 level demo of it in a covertape once and I remember discovering said demo would happily accept full game levels provided you loaded the header from the demo then the new level data, apart from last level which was a different length. A mixed bag as to what each game did however interest of efficiency it does not seem likely to reload existing data twice. – AndyF Feb 7 at 11:09
  • 1
    To add to the above it would not be commonplace to add code unless it was needed for that level. Generally speaking just for different levels you would keep the "core code" all the time in memory and just load in level or room data sometimes with sprites and game dependent possibly some small code routine specific to that level i.e. special control routines for "end of level baddies" ... Trouble is all games are different. – AndyF Feb 7 at 12:17
  • 1
    Plus many games might load the engine in sections, such as Times of Lore where the intro, game and outro were separate. – Mark Williams Feb 7 at 12:33
5

Most games, eg Gauntlet, Leaderboard loaded level data from the tape or disc, but the code engine stayed the same. Some multi part games had separate games that were connected, eg Game Over, Freddie Hardest, Ghostbusters 2. These generally had no data exchanged between the parts. A few games loaded code, but maintained data, for example They Stole a Million.

|improve this answer|||||
  • 1
    Yes slightly similar to my comment it's a bit of a mixed bag as such, more dependent on game type than anything else. – AndyF Feb 7 at 16:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.