DOS Aro in 16:25.898 by Noxxa
About the game
Aro is a platforming game for DOS, released by D'India Software in 1996 (file metadata suggests June 29th, 1996 - happy 30th anniversary!)
After a lot of time consuming lessons about artists (Wiek, I hope you finally finish school), a few nasty letters with those who see this as a business rather than a fun hobby (hey Patrick, hope you found something profitable to work on), a faltering 2 year project from hell (4gen), many almost forgotten memories of actually finishing a game, and lots of depressing thoughts about wading through the big joke we call college, I decided to pick up an old game, dust it off, paint it, smooth the dents, and present it to all you game nuts... (lots of musician prodding was also required)
I hope everyone is glad I did. In a time where 3d, texture mapped, gouraud shaded, 1st person perspective, 6 DOF, super blow'em'up, dark gushing blood, action games are all that can be seen on the retail rack, I've decided to try something a little different, more classic, less bloody, more smiley. This is a cute little shareware game about a cuddly little red guy named Aro (pronounced Arrow), who wanders around in a zany land filled with slimes, strange bouncing creatures, magical potions, funky trees, blue skies, orange sunsets, twinkly stars, and crumbling castles. There is no shooting of any kind in this game >8)
This game is actually an enhanced version of a game I wrote sometime 'back in the days'. The original was called ZipMan III. ZipMan III was designed and written on a 386sx16, and was thus virtually unplayable on 'powerful' 486dx33s as it went way too fast. So, for those of you who played ZM3, here's a list of some of the new stuff:
- Almost totally new graphics (all drawn by me, JPD)
- A top speed (maxs out at 32 FPS-no more 300 FPS!)
- Quite a few new monsters
- Much improved menu code (more friendly)
- Joystick support (yes!)
- More professional "look & feel", from shareware screen to documentation.
- Slightly improved game mechanics (the running and jumping is smoother).
- and of course, totally new levels (lots of 'em)
This game carries the seal of fun from all Playtesters. It passed the 12 year old kid test, what else is there?
- John Paul D'India
Aro is D'India Software's most well-known game (mostly helped by the fact that it's their only publicly released game that has audio), with a shareware release, a full game release, and a level editor. The shareware release features 13 levels across 4 different environments, with the full release adding an additional 30 levels, 1 new environment, and many new enemy types.
The gameplay is practically as straightforward as a platformer game can be - each level is standalone, there are no hit points, no lives, no checkpoints, no permanent powerups, and no player actions besides running and jumping. Even with all these limitations, the game provides surprisingly much depth in its floaty jumping mechanics, temporary power-ups and item collection, and challenging level designs with all kinds of enemies, moving platforms, puzzles and other kinds of obstacles.
Also, it actually has a very nice soundtrack, courtesy of High Kaliber Music. Sadly most levels are much too short to do the soundtrack any justice, but if you like what you're hearing, I'd recommend giving it a listen.
This TAS aims to beat the game by clearing all 43 levels of the full game as quickly as possible. As a side goal, it also picks up as many point spheres as possible without losing frames, thus also going for max score as a secondary goal. For a run that collects all point spheres, see #10615: Noxxa's DOS Aro "100%" in 19:45.038.
Tricks & Mechanics
Walking/Running/Horizontal motion
Aro accelerates at a rate of 2 subpixels per frame (subpixels being 1/4th of a pixel), up to a top speed oscillating between 12-14 subpx/frame (a frame being 1/32th of a second). Letting go of a side direction decreases speed by 2 per frame, and holding the opposite direction decreases it by 6 per frame until reaching 0.
If Aro stands on a horizontal moving platform, his speed value is fixed at 6, despite actually moving at a speed of 4. Running along with a horizontal moving platform results in a net speed of 8, running against results in a net speed of 0. Acceleration does not apply while Aro is standing on a horizontal moving platform.
Horizontal motion is not affected in any way by being on the ground or not.
Jumping/Vertical motion
Jumping instantly changes Aro's vertical speed to 19, with a gravity of 3 per frame. If Aro continues holding up, gravity changes to 1 per frame instead. This applies at any time, meaning that Aro can effectively change his gravity at will, making a very large amount of potential jump arcs possible. Aro has a terminal velocity speed of 22 - once he has reached terminal velocity, he can no longer adjust his vertical speed.
Vertical subpixels are conserved on landing, so it is actually possible to have up to 4 distinct maximum jump heights depending on starting subpixel. However, this rarely has any tangible effect.
Potions
There are three kinds of potion pickups in levels, which grant Aro temporary power-ups.
If Aro has consumed a red potion (high-jump potion), starting jumping speed is 29 instead of 19.
If Aro has consumed a green potion (reverse-gravity potion), gravity and jumping height are flipped, but otherwise the numbers remain identical.
If Aro has consumed a blue potion (flight potion), his jump is replaced with flight, which increases vertical speed by 1 for every frame it is held, including in the air. Terminal velocity still applies at 22 max.
Potion effects last for 576 in-game frames (18 seconds). At 62 frames left (just under 2 seconds), Aro begins flashing white until the potion's effects expire. Potion effects do not carry over between levels.
Left+right
Pressing left+right makes Aro run to the right while facing left (moonwalking). This has no practical use, but it looks funny at times.
Camera
For whatever reason, the camera only ever scrolls in 100-pixel increments, and it scrolls a bit faster than Aro's running speed. The resulting effect is that the camera constantly stops and goes as Aro is running, which is a bit disorienting at first, though you can get used to it quickly. No practical applications here, but it is interesting to note.
Moving platform edge jumps
Sometimes, jumping on the very edge of a moving platform and holding up allows Aro to jump off it while retaining horizontal momentum (instead of it being cancelled out by the moving platform). This appears to be subpixel specific, and seemingly on certain moving platforms it cannot be done at all (this may be dependent on certain properties of the moving platform, like if it reverses or stalls when Aro hits the side). This can sometimes save a couple frames.
Level ceiling abuse
It is possible to stand on top of blocks at the top of the screen, Super Mario Bros.-style, if the level design enables it. Mechanically, being above the level ceiling can get a bit wonky - if Aro is high enough, he can jump off the top of blocks normally, but if he doesn't reach the correct height (which actually requires vertical subpixel manipulation if jumping from 2 tiles down), he can't jump, and can only walk and fall back down. This still enables a few skips in some levels.
Level notes
Time table
In-game time is calculated by taking the in-game level frame counter at the end of each stage, and dividing it by its original framerate of 32.
| Level | Time (IGT) |
|---|---|
| Level 1 | 00:09.156 |
| Level 2 | 00:07.906 |
| Level 3 | 00:11.063 |
| Level 4 | 00:16.281 |
| Level 5 | 00:15.875 |
| Level 6 | 00:13.844 |
| Level 7 | 00:14.781 |
| Level 8 | 00:11.594 |
| Level 9 | 00:23.625 |
| Level 10 | 00:25.750 |
| Level 11 | 00:17.875 |
| Level 12 | 00:33.781 |
| Level 13 | 00:36.500 |
| Level 14 | 00:11.125 |
| Level 15 | 00:32.156 |
| Level 16 | 00:15.781 |
| Level 17 | 00:19.313 |
| Level 18 | 00:15.406 |
| Level 19 | 00:07.281 |
| Level 20 | 00:07.938 |
| Level 21 | 00:22.219 |
| Level 22 | 00:09.031 |
| Level 23 | 00:14.938 |
| Level 24 | 00:07.875 |
| Level 25 | 00:32.469 |
| Level 26 | 00:19.625 |
| Level 27 | 00:19.688 |
| Level 28 | 00:20.188 |
| Level 29 | 00:58.750 |
| Level 30 | 00:23.281 |
| Level 31 | 00:21.813 |
| Level 32 | 00:38.688 |
| Level 33 | 00:20.250 |
| Level 34 | 00:35.875 |
| Level 35 | 00:59.844 |
| Level 36 | 00:13.125 |
| Level 37 | 00:25.250 |
| Level 38 | 00:19.594 |
| Level 39 | 00:36.094 |
| Level 40 | 00:54.594 |
| Level 41 | 00:34.938 |
| Level 42 | 00:29.031 |
| Level 43 | 00:18.438 |
| Total | 16:23.344 |
Note that levels are not visually numbered or named in game, so the only identifying markers (besides level layout) are the background theme and general visual theming. These can be divided into five categories (day, sunset, night, castle, and psycho). I add the theme category to each level note here, to help roughly distinguish what level you're looking at.
Level 1 (Day)
Pretty standard introductory level to start off with. Some basic enemy Slimes as obstacles, run right for justice.
Level 2 (Day)
Bit more platforming action here, but still just running right for justice.
Level 3 (Sunset)
This level introduces horizontally moving platforms. These have a quite annoying trait where landing on them instantly cancels your horizontal momentum, making one of the jumps a bit slow here.
Level 4 (Sunset)
Some waiting is required here, because there's one moving platform where the next platform is just barely out of reach when you first arrive there.
These moving platforms are based on fixed cycles when you start the level, so there's no way to manipulate them in any useful way in these sorts of situations.
Level 5 (Night)
This level introduces the first power-up: the red potion, which considerably increases Aro's jump height. In these sorts of levels, the red potion is required for some specific tall jumps, but other than that it mostly just makes platforming easier, which is nice.
Level 6 (Night)
The cliff jumps at the start are annoying, as they require some specific back-and-forth acceleration to avoid losing frames.
This level is also intended to introduce the next power-up, the green potion. It reverses Aro's gravity, making it possible to traverse certain obstacles and do some upside-down platforming. Then, usually, you need to wait until the potion's effect wears off until you can proceed to the next part. In this case, however, using a specific floaty jump makes it possible to land on top of the platform without using the potion, so it is skipped entirely.
Level 7 (Night)
You do not actually need to take the top route (other than for points), but I take it because it's more fun that way.
Level 8 (Day)
With specific timing, it is possible to jump over the Slime when it is all the way on the right side (the hitbox is far less generous than it looks). Then we get to the final potion power-up, the blue potion. The blue potion enables flight by holding up in mid-air. Predictably, this trivializes most platforming challenges in the game, although it takes a while to gain height if Aro is falling at terminal velocity.
Level 9 (Castle)
More waiting at the start due to moving platforms. These platforms are clearly very deliberately placed, as they're only a few pixels away from Aro being able to make the jump normally.
This level also introduces a vertical moving platform, as well as a pushable block that can be pushed off an edge. These add some interesting extra challenges.
Level 10 (Castle)
This level introduces the key item, which is required to open the door to the next level. This adds some backtracking to this level. We get a red potion at the start, but the backtracking takes long enough that it wears off by the time we move back (indicated by Aro flashing white), which means that a slight detour is required to reach the exit door.
Level 11 (Sunset)
Another red potion level. Nothing too crazy here, although the enemies are getting more varied and placed in increasingly more annoying positions.
Level 12 (Castle)
This level introduces the spring (boing!). It can be pushed around, but that's not necessary in this level. There are two other push blocks, but only one is needed to pass the obstacle here. After that, it's another key level, so some back-and-forth is required to get the key and then reach the exit.
Level 13 (Day)
Since we skipped the green potion in level 6, this time we are introduced to it for real. You can quickly see the annoyance it causes - after some brief upside-down platforming, there's a significant amount of waiting time until the potion wears off and I can proceed to the next part. While having reversed gravity, if you fall too high up, you die, so a very specifically timed jump is done so that Aro moves forward as soon as possible, ending up just barely high enough to not hit the "death barrier" at the top.
This is the last level of the shareware version, but since we are playing on the full version here, we're not even close to done yet! There's still 30 more levels to go.
Level 14 (Castle)
This level introduces blocks that fall after you stand on them. They're actually the same block object type as the pushable blocks, but if they start suspended in midair, they fall after Aro lands on top of them - you can even push them a bit, although you'd die doing so.
Anyway, for a speedrun this is pretty inconsequential, and it's a pretty straightforward dash to the right for justice.
Level 15 (Night)
Some waiting time at the start due to a vertical moving platform cycle. Then some more waiting due to horizontal moving platform cycles. Not much else special going on here.
Level 16 (Psycho)
The first level introducing the Psycho theme, exclusive to the full version. The name Psycho comes from the official level editor - I guess it's short for psychedelic? That's certainly what this level background feels like.
Anyway, pretty standard platforming level. Don't fall into the lava pools, avoid the floating Spike Balls, run right for justice, and so on.
Level 17 (Day)
Large variety of enemies here. The Droppers (vertical bird enemies) move up and down on random cycles (one of few RNG-based enemy types), so some trickery is required to jump past them without losing time. Also, there's a red potion at the end.
Level 18 (Night)
More Droppers, requiring more luck manipulation to get past quickly. There's another spring here, and this time it requires some pushing to be able to reach the next part.
Level 19 (Day)
This level is full of bird enemies. It gets quite chaotic, because the Runners force you to jump, while the flying Birds can kill you if you try to jump. Some precise jumps are needed to get past here.
Level 20 (Castle)
You're supposed to push these blocks at the start into the lava to bridge yourself across, but just pushing the top ones and doing a big leap across is much faster. Then you're expected to push another block off to create a path, but with some very specific movement and gravity manipulation it's possible to bypass all that.
Level 21 (Castle)
Blue potion level. Enjoy Aro's epic flying skills, because there isn't much else special in this level.
Level 22 (Day)
With specifically timed jumps, it's possible to jump over the Birds while they dive underneath you.
Level 23 (Psycho)
Once again, some manipulation to get past the Droppers. There are a few moving platform cycles here, but it's not so bad.
Level 24 (Sunset)
There are a lot of Jumpers here, and their jumping patterns are random, so a bunch of luck manipulation was required to be able to pass through quickly.
Level 25 (Sunset)
This is an impressively long level - it even has an unique cave tileset that's not used anywhere else in the game. Clearly some special effort was put into this one.
The spring at the start is perfectly placed such that a perfectly spaced jump makes it barely possible to reach the next platform without having to push it.
The cave sections include some parts where you have to wait for Slimes to move, similar to the beginning of level 8, plus some maze-like areas with enemies threatening you all over the place. Remember that Aro dies in one hit, there are no checkpoints, and these enemies have quite wide hitboxes - it's a difficult marathon level to get through casually.
Level 26 (Castle)
Blue potion level. The obstacles here with Aro flying through the middle make it look like Flappy Bird.
Level 27 (Day)
Not much waiting for moving platform cycles fortunately, despite how many there are. The Birds make it a huge pain to traverse anyway.
Level 28 (Day)
The Spike Balls are really close to being in the way several times, but somehow it's just barely possible to get past all of them with minimal time loss.
Level 29 (Psycho)
Green potion level. This is a quite long level, which repeatedly forces you to drop from one gravity potion to another - which means there's a ton of downtime while waiting for the gravity potions to wear off. Thus, it is time to bring back the classic tradition of dancing to the music.
Level 30 (Psycho)
There's a whole obstacle with several push blocks here, but it's skipped entirely by simply jumping above the top of the screen. Sometimes you have to, quite literally, think outside the box. There's another section with falling blocks and a key here, but nothing too crazy.
Level 31 (Castle)
Lots of moving platforms and a green potion here. The gravity potion is the main bottleneck here, so the objective is to collect it as soon as possible even if actually traversing the level takes a bit longer.
To get past the second moving platform section quickly without waiting for a long time, I use a little trick here: hitting a moving platform from the side causes it to switch directions. Not all moving platforms do this, some just get stuck in place instead, and in most cases even if you could hit the side of a moving platform you'd probably die doing so, but this is one of few instances where it's both possible and beneficial to do this.
Then we move on to the next part, and even with some more moving platform waiting, there's still some time left to wait for the gravity potion to wear off before making the final jump.
Level 32 (Sunset)
Another long level with lots of moving platforms, and annoying Spike Balls along the way. It's kind of a painful level casually, simply because you have to go through all the moving platforms again any time you die.
Level 33 (Night)
Once again, lots of moving platforms. Fortunately, much less waiting this time. The jump over the fire at the end is kind of mean.
Level 34 (Castle)
It is necessary to push down the spring at the start before collecting the key, otherwise you get stuck down below. Then there's a green potion again. The game is generous enough to give you a second gravity potion for the Spike Ball maze part, but going through at full speed means that even with just the one gravity potion, there's still some waiting time at the end.
Level 35 (Castle)
We've seen a few long levels before, but this is the true marathon level of the game. Various obstacles with electric beams, Slimes, falling blocks, Spike Balls, followed by a moving platform section along with a green potion. The gravity potion is actually only necessary to bypass one pit, but by moving on ahead and doing a very specific jump over two fires with just one tile of leeway, it's possible to skip the subsequent platforming section, the next moving platform section, and collect the key before still waiting briefly for the gravity potion to wear off and backtracking to the Spike Balls, Slimes, and electric beams.
Even with the skips, this is the longest level of the TAS, even longer than the level that had to wait for 3 gravity potions to wear off. Remember that Aro has one hit point and there are no checkpoints - this level is pain.
Level 36 (Castle)
Blue potion level. The spiked balls can be quite devious, but they're easy enough to navigate around with flight.
Level 37 (Day)
Moving platform section with lots of waiting, then lots of enemies get thrown at you. The biggest nuisance here is the Bird moving to the right - it moves slightly slower than Aro's running speed, but if Aro overtakes it, the Bird will swoop down and kill him. So we have to stay barely behind, avoiding its swooping trigger, until we get to the falling block section and are able to jump over it.
Once there, one very tight jump skips pretty much the entire block section, and also bypasses the Bird all in one fell swoop.
Level 38 (Castle)
Blue potion level. It's very short, but features backtracking with a key, along with some tough navigation through flames and lava on all sides. Remember when I said flying potions trivialize most platforming? Well, this is the exception.
Level 39 (Sunset)
The first screen of platforming features several very toxic jumps in a row, as it's very easy to bonk into a ceiling and fall back down below - the TAS makes it look way smoother than it is.
Then there's a green potion again - I was very close to finding a route jumping over the top of the level and skipping the gravity potion entirely, but even after several subpixel-perfect jumps it's unfortunately it's barely impossible to cross the large lava jump at the end, so we have to tank the gravity waiting time instead. I use that time to play around with the push blocks (which is pretty funny with reversed gravity), then also make use of the gravity potion ending to skip the subsequent spring part.
Then we get to a blue potion section in open air, which isn't anything special compared to what we've seen before. Just dodge a few Slimes and reach the exit.
Level 40 (Sunset)
Long moving platform waits at the start, followed by a few segments with Runners in tight spaces that you have to use specific escape spots for to avoid. At the end there's a key and a green potion, with the gravity potion only really being needed for one specific jump - to spend the downtime, I collect all point spheres in that section just because. Then I use the gravity flip jump to reach all the way to the top of the middle section, so I can just bypass the Runners and avoid any further waiting.
Level 41 (Night)
Many, many moving platforms here, a Bird just to make things annoying along the way, and some green potions around. The combination of having to use a gravity potion and dealing with moving platform cycles creates an interesting situation - I actually deliberately delay collecting the gravity potion, so that I keep it long enough to make it to the end of the level, and don't lose too much reverse gravity time to the moving platform cycles. In doing so, with just the one gravity potion, I have reverse gravity exactly long enough to make it to the end of the level.
Level 42 (Psycho)
Green potion, followed by waiting time, so time to break out the dance moves again. Then there's a few obnoxious enemies, and then another blue potion section. Fortunately, no waiting is required for any of the electric beams here. The final section is a bit puzzle-like, but there are actually a few purple blocks you can pass through. This is the only level that has these - I checked every other level for them.
Level 43 (Day)
The final level is actually a bit of a refresher - no moving platforms, and no potions. Just lots of enemies, and a tricky falling block section with Spike Balls. It's still hard, but not as hard as some of the previous levels. Some running to the right later, we've reached the end! Input is ended just before Aro touches the final exit door, when momentum is sufficient that it is impossible to avoid touching the exit door.
The Ending
The ending actually consists of demos of previous levels, while the ending message and credits scroll across the screen. It might look a bit confusing with the sudden drop in gameplay quality. To be precise, the demos play through levels 41, 29, 10, 4, and 1. After that, the game goes back to the main menu.
Game image info
This TAS uses an .ISO image produced using create_iso.sh. Game version is v1.2 (according to
README.EXE), full game (not shareware).
The game is set up to use Sound Blaster 16 audio, which may or may not be default depending on what version of the game you have (check if
ARO.CFG hashes match). This can be configured through SETUP.EXE in DOSBox before creating the .ISO image.
MD5:
0e99a6bb98a1bf35da83e95365250754 ./ARO.CFG
62ba2e8985fa5ff6b84b2350da64d9bc ./ARO.DCF
76889b121b12b639c2a51287dc71a841 ./ARO.EXE
a4a6dcc386cecab5b8f2ab68ad23d088 ./AROREG.DCF
48dc1ef4443a2211750caea9daf5cced ./DPMI16BI.OVL
7bd97a9926581c05920b3aed4ff26596 ./FILE_ID.DIZ
2923d598acdd6927d9137eeccdd623c6 ./LOR.DCF
06077445125c35ba73ddad1ef0c57743 ./NEWLOR.DCF
e8446c1052de4cb9ba938e7c2c0721af ./ORDER.FRM
f8fc6a902c2bc88dda31fae9c8140c65 ./README.EXE
e4df93e58eda82b3652f6576997e8dfd ./RTM.EXE
178c70bf6ad45f4a28369f770eced646 ./SETUP.EXE
SHA-1:
94791acb26e5194f22e62ca55ef2e6fdef595507 ./ARO.CFG
ee0f8e310f57496eb9b937ea9d358092c4077729 ./ARO.DCF
0f9e2b3b18cd6464a110ac46d41866419e8dc6be ./ARO.EXE
fa4a4f599aa3a70fdde2e35ae9ab0f9f581c31d8 ./AROREG.DCF
7127f58ab9dcb99c212a6aee8d286a8aad706b9f ./DPMI16BI.OVL
1610643cd407f17c5e433d0fb4a91a2aaa56d473 ./FILE_ID.DIZ
6672c4776883bd017801658dc7c24f82bff7e51a ./LOR.DCF
012d3eca3c96ef8d366ca9fbfd159acf2503e874 ./NEWLOR.DCF
2665d5f4432e66d5be97e560b58b86a6ff7302d6 ./ORDER.FRM
6b8db3c03f8df6edfebbaff7f8c3f4a65d27363b ./README.EXE
d104b1c8250175438eced9af5efda13181d7334a ./RTM.EXE
429828c35d937e2927a99dfb9b3eb0aa9b63fd3f ./SETUP.EXE
Wow, it's really been 5 years, huh? Time is a funny thing.
Thanks for watching!
nymx: Claiming for judging.
nymx: Sorry, I need to drop...in need of a break. I was looking forward to judging a submission of yours. Maybe the next time.
Darkman425: Considering that I got this sync verified, I may as well also claim this for judging.
Darkman425: This is a seemingly straightforward game with a few wrinkles here and there to make levels interesting. The movement looks quite smooth and well optimized, especially for the jumps when the anti-gravity potions wear off to perform some cool leaps across the level. Seems like you haven't missed a beat since your last submission 5 years ago. Nice work!
Accepting to Standard.
r3gamerz: Processing...