Jump to content

Adventure Kingdoms: a new functional, graphical hack of Adventure


Recommended Posts

In mid August last year I decided to teach myself Atari 2600 programming for the fun of it. This February, I'm proud to introduce my first hack:




Adventure Kingdoms is a functional and graphical hack of Warren Robinett's game, Adventure. Some new features of AK include a new and larger player world, sprite upgrades, five new items, a new dragon, a new objective, a role selection screen, background colors, dragon reflection, a new secret challenge, a new game+ feature, and various under-the-hood improvements. Many of these new features replace features in the original game such as level select, difficulty select, black and white support, and missile walls.


I learned a great deal in the creation of this hack. My first month's work was done entirely in a hex editor because I didn't realize there was an assembler for Atari 2600 games. Most of the hack was programmed and tested without the aid of debugger, which I discovered in my emulator in January. I taught myself about opcodes, addressing modes, reserved RAM variables, the TIA, and all the little idiosyncrasies involved with them. I learned many things the hard way: Don't squeeze in too many subroutines per drawing frame of the screen will shake; Don't define graphics over a page break or they will distort; Don't define state-keeping variables anywhere near $FF or the stack will overwrite them; most importantly I learned how precious my RAM, ROM, and cycles were, how to juggle them, and when to sacrifice one for the other when resources grew scarce.


I would have never been able to complete this without all the hard work that others had already put into the resources I used, so I'd like to give thanks where it is due.


Special thanks to:

  • Warren Robinett, for creating the original Adventure
  • Joel D. Park, for providing a thoroughly commented copy of the source online.
  • John Picken, whose opcode directory taught me the 650(7) opcodes, their lengths, and cycles.
  • Mark Andrews, whose online book taught me what addressing modes were and when to use each.
  • Steve Wright, whose guide taught me the functions of the reserved RAM variables
  • Andrew Davie, whose tutorial sections on the TIA helped me resolve many cycling issues
  • Steve A. and the Stella Team for their awesome emulator and debugger
  • Matthew Dillon and all other contributors and maintainers for the DASM assembler
  • Everybody responsible for the success of the Atari 2600 home video game console
  • Everybody on the atariage forums who plays my hack. Please leave feedback!

The bin and manual files are attached below. Cheers!





  • Like 3
Link to comment
Share on other sites

Seems like you put a lot of effort into this, so I wanted to post some kudos briefly here! It does feel like Adventure but with totally re-imagined mazes and new stuff. I tried it out briefly just now, and I got lost in the new mazes of course. I figured out what the Shield and Magic Carpet were on my own but didn't have enough time to grab the sword (I need the carpet or magnet to reach it) and to kill anything just yet. Awesome hack of Adventure !

Link to comment
Share on other sites

I'm glad you think the hack feels like the original- that was a big goal of mine, to improve upon the original while staying true to the spirit of it. I recommend that beginners start with the carpet as their chosen object to help get a feel of how the realm is organized. Once you learn the mazes, the sword or shield become more appealing options. If the darkness of the catacombs is slowing you down, tracing the outer walls will lead you to a different next kingdom rather quickly- the whole realm is connected! Also, many of the new items are multi-purpose, and that old shield may have yet a few surprises for you. Thank you for giving the hack a test run!

Link to comment
Share on other sites

I love this. I'm having a great time, it's like discovering adventure all over again! I would change a couple things:


  • I would change the look of the sword. It looks like a weird dildo now. Maybe take a look at other hacks? Even the old arrow sword was better.
  • I could live without the screen where you pick your heirloom at the beginning, or perhaps thing of another way to integrate that into the game without having to press select.
  • I would try to diversify the color palate if possible. At times, the game looks a bit washed out.
  • Your dragons look AMAZING. Whatever you do, don't change them
  • The magic carpet is a brilliant addition!
  • Love the maze layouts and the new screens.


Have you ever played "Adventure Enhanced"? There are little touches from that game which would be great to see in Adventure Kingdoms.


Bravo! People need to play this hack! It's really a great accomplishment!

Link to comment
Share on other sites

Thank you Hizzy! I made sure there's lots of subtleties to discover, even with respect to the items and castles. You make some great points- some I can work with, but sadly there's only one byte of ROM and zero bytes of RAM left in AK. Changes are possible but additions are not, at least not without gutting or simplifying other important parts of the program. I'd also like to get lots of feedback before making any permanent changes. But here's what I can and cannot easily do:


  • I can change the graphics for the sword. Players of the original Adventure would debate what end of the "Arrow" was actually the hilt of the sword. I wanted to make that clearer. I gave it a slanted appearance, like the magic sword in LoZ. I suppose when the sprite is monochrome the shape looks a little unfortunate.
  • The Destiny room cannot be changed, for practical, preferential, and... secret... reasons. In the original adventure you would press select twice and reset once to start a random game. A counter would use the timing of the presses to generate the 'random' starting seed. AK uses the player's movement to compound an initial seed, and pressing select 'randomly' distributes the items with a rehashing process. If I removed the select switch, you would get the same game every time you played.
  • The colors help orient the user so they know which kingdom they are in. I could vary the luminosity of the kingdoms without changing the hue, but only to a certain extent. The way the torch is implemented removes two viable luminosity options. If you're referring to the BG colors, those are simply the FG colors shifted darker- a full palette for BG colors required an extra 48 bytes I didn't have. I also tried prevent objects getting "lost" in a wall of the same color, so items and rooms don't share hues.
  • I love the dragons too! I wanted to make them look less like ducks, while at the same time keeping them easily recognizable as the Adventure dragons.
  • Because the AK realm is so huge, I had to do a lot of item balance testing. The new items are all powerful but hard to get if not selected as heirlooms. The carpet makes exploration easier, but accessing objects is less easy than with the bridge or magnet. The torch is useful for both lightning and raiding, but usually out of reach atop a castle. The shield has three important functions, only one of them obvious. The bag is so useful it only spawns inside castles. And that's not even everything.
  • One thing that made Adventure so unique was its space-defying mazes. I wanted to use that to its full potential, and I did so by creating "puzzle piece" rooms that could interlock in any way I wanted. This implementation also saved me three bytes for every room definition so it was win-win! There were other arrangements I considered, but the space was not permitting and the world was already acceptably large.


I've played many of the adventure hacks listed here. Adventure Enhanced isn't on there, but there's still a possibility I've tried it as I've played many hacks over many years. If the author shared it online, I'll (re)visit it! Thank you again for your kind words and helpful feedback.

Link to comment
Share on other sites

Accousticguitar, I checked my directory of adventure hacks, and it looks like I first played Missadventure in February of 2009! I loaded the game for a playthrough and as soon as I saw the brown forests I knew where I was and that I'd better find the princess. Rescuing her wasn't too hard, but trying to remember which castle was her home had me running all over the place! I ended up killing all 5 dragons before I was able to get her to the right castle (and I have the bat to thank for that!) I especially like the dragon hit point system you used, that was a wild surprise! This was definitely one of my favorite Adventure hacks.


Hizzy, The torch works by increasing the luminosity of all rooms by 2 (odd luminosities are always flash.) So if a room was at max luminosity, the torch would actually roll over the color, and the room would become the darkest shade of the next hue- so max luminosity may not be used for rooms. It would also cause any grayscale rooms just below mid luminosity to become invisible. I also use a bitmask which sets the BG of bright rooms to mid luminosity, and the the BG of dark rooms to minimum Luminosity. This excludes any rooms from being min or mid luminosity because then the walls and floor would be the same color- very bad! That rejects a number of luminosity options: The room can't be max, min, or mid luminosity, and if it's a grayscale room it can't be just under mid luminosity either. My implementation of the colors is cheap on both cycles and bytes, but it comes at the cost of reduced luminosity options.

Edited by ZenBiped
Link to comment
Share on other sites

I'm very glad you like it! Since it sounds like you're enjoy several playthroughs, please let me know if you encounter any redundancy with the object placement routine. A good example of this would be, "Does Item X always appear in this place when Item Y appears in that place?" If you ever find yourself answering "Yes" to that question, it means I need to make improvements to the randomization routine.


Oh, and another thing- I have a ton of 'planning' files that I used when the game was in the design phase- one of those files contains a very simplified ASCII map of the realm. It won't tell you how to navigate the kingdoms themselves, but it will show you how the realm is arranged on a larger scale. I can post this map if you'd like, but I don't want to take the fun out of your exploration, so you will have to request it first if you want it. Cheers!


EDIT: I've pasted the ASCII map below in white text. Anyone who wants to see it can highlight the text to make it visible.



1-RR | GG-3
| | |

3-MM | CC-1

Edited by ZenBiped
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...