Saturday, September 27, 2014

Exile for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BBC Micro; some elegant solutions

[Prelude: sorry, this has nothing to do with security whatsoever. Feel free to bail now if you're not interested in a classic 1980's game, and rest assured that non-security posts to this blog will remain extremely rare.]

The BBC Micro game Exile, released in 1988, has a realistic claim for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best game ever. I lost months of my youth to this game. I also lost a fair few days recently re-playing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game under emulation in 2014!

What cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 authors were able to do with just 32KB (for everything, including video RAM) was amazing. The art of coding in this way has simply been lost. The game features:

  • An enormous map featuring fairly open-ended exploration.
  • A full physics engine (gravity, momentum, conservation of momentum, buoyancy, friction).
  • Dozens of fiendish puzzles, characters and objects, with many interactions between entities.
There's even a great disassembly online. I was quite surprised to see that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game really is powered by real 6502 opcodes, and not unicorn tears.

The claim for "best game ever" isn't just about packing so much into such a small resource. Completing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game, even if you know what you're doing, is hours of immersive play that alternates between solving very varied puzzles and arcade-like blowing stuff up. Given how free-form cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also different solutions and orderings to to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game, so you can put your own personal spin on things.

If you want to see what all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fuss is about, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best emulator is probably B-em (part of a webring, remember those??) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Exile game image can be readily found. And do feel free to stop reading to avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 spoilers that now follow.

There seem to be two solutions published on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web. Unfortunately, both have triggered my OCD. Both have solutions for some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more interesting problems that rely on abusing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 limits and corner cases of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game engine, such as:
  • Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 built-in viewport scrolling to sneak around with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 viewport scrolled to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extreme so that an enemy or obstacle does not "see" cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 player.
  • Abusing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physics engine "forgets" objects that are offscreen, causing corner-case and clearly unintentional behavior. (Give cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 poor game a break, it's trying to fit everything into 32KB!)
  • Proposing solutions with low reliability.
More significantly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se problems have such beautifully elegant solutions that once you see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, it's clear that you've worked out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 authors' original intent. So without furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ado, here is a small collection of videos that illustrates some elegant solutions as well as an easter egg:

Getting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 alien weapon


The game features a tricky-to-get alien weapon! In fact you can get it from two different places. Generally, you can feed different types of imps different "gifts" and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might later throw you a gift in return. In this video, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se cyan imps will accept a blue mushroom. Later in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game, dark blue imps accept piranhas. I had found this later exchange, but this earlier exchange was a complete surprise to me -- I only noticed it reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disassembly referenced above.
It's a real boon to get such a powerful weapon earlier in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game. It never runs out of energy and it has good destructive power for some obstacles that are ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise annoying. Just watch out you don't burn yourself and that you don't blow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 weapon up, it's destructible.

Getting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first coronium rocks out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 alcove


There's no need to try and force cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rock past cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blowing bush. Speedy throwing and viewport scrolling are not necessary. There's a simple, elegant sequence that will rescue it reliably and without dubiousness.

Blowing open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rune door

The first two-thirds or so of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game are building up towards opening a very important door into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guy's lair. This door is blown open with a nuclear explosion between two radioactive rocks. Given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 importance of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 door, it's not surprising that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 final puzzles towards opening it have beautiful solutions.
Both published solutions transport radioactive rocks via a route that is clearly not supposed to be an option, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 route only works on account of abusing game engine quirks. Tut tut! Here's a less hacky way of getting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 required rocks, in three parts:




There's a lot going on here:
  • In part #1, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 maggot to "wake up" cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nest of green slimes is fun. Note that this doesn't always work! Game design bug? This is a very busy area of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 map and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game engine often decides cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's too much on-screen to spawn creatures from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nest. I lost a day stepping through 6502 assembler to understand this.
  • Then, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 green slimes appear attracted to sound. So we made some noise!
  • The use of buoyancy to avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sucking bush is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first and only significant usage in a puzzle. Wonderful.
  • In part #2 and #3, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 presence of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 big fish prevents cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (very dangerous) piranhas from coming out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nest and ruining your day.
  • In part #3, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 piranha is actually immune to damage from acid drops -- I believe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only creature in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game that has this trait. (You can even check cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disassembly :-)
Getting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mushroom immunity pill

Again, this puzzle involves blowing a door open with radioactive rocks. The published solutions suggest all sorts of hacks here, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's a really neat solution with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "blaster" weapon that has been recently collected at this stage in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game. Previous weapons were projectile based but this one is force based and it can be used variously: at a distance to gently deviate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 course of an acid drop, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n at close range to reliably launch a rock past a problem area.


Happy exploring.

6 comments:

Unknown said...

Thanks for this post :)

With regards to stepping through 6502, have you seen http://www.level7.org.uk/miscellany/exile-disassembly.txt ?

Also, to relive this all in a browser, check: http://bbc.godbolt.org/?disc=%7CSuperior%2FExile.zip&autoboot

Ian Holmes said...

Thank you for this post. It is always cool to see how true devotees have subsequently developed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir careers. I knew cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 authors of Exile from when I made a game in 1988 along with William Reeve (who later coded cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Amiga version of Exile and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n became a serial entrepreneur). It's great to see your awesome security work here. Exile had some pretty neat copy protection if I remember rightly...

Thanks to this page I also found cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JavaScript BBC emulator linked in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous comment and got to play my own game in a browser: https://bbc.godbolt.org/?disc=%7CSuperior%2FPipeline.zip&autoboot&keyLayout=physical#

All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best,
Ian Holmes https://twitter.com/ianholmes

Chris said...

Hi Ian,

Pipeline!!! I remember it well. From memory, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scrolling was unusually smooth for a BBC game which had me impressed from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical perspective. I sucked at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game though.


Cheers
Chris

William Reeve said...

Wow - can't believe what's involved to enable me to play that 2-years-of-my-life game in a web browser, almost 30 years later.... with hindsight if we'd prioritised gameplay racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than smooth (fast, 2x than better-playing games) scrolling I suspect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game would have sold much better!
Chris - love your post and totally share your admiration for Exile. Thanks a lot.
Ian - I still think what we achieved and when is one of those achievements I'm proudest of.

Chris said...

Hi William,

I have to ask out of curiosity for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 economics of that era: how many copies did Pipeline sell?


Cheers
Chris

oliver said...

Yes awesome game, I remember looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 amiga in game messages " you have killed triax" "she wants you badly", "here is a secret passage" "it has given you special powers", i guess cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se were designed to get you thinking , or were cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y to be implemented? great game !