DOS Aro "100%" in 19:45.038 by Noxxa
About the game
Aro is a platforming game for DOS, released by D'India Software in 1996.
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.
Whereas
#10551: Noxxa's DOS Aro in 16:25.898 simply aims to beat all 43 levels as quickly as possible, this run aims for full completion, by collecting every point sphere in every level. Point spheres are arbitrarily scattered throughout each level - some levels have up to 10, whereas some other levels have none at all. Their point total also varies, with point spheres giving either 10, 50, or 100 points, with the higher points generally being more out of the way or harder to get. In total, across the 43 levels there are a total of 183 point spheres, adding up to a total score of 4730.
Naturally, collecting all the spheres also means that instead of just going right for justice, there's a lot of little detours and alternate paths that add a lot of new optimization challenges. Timing differences with enemies and obstacles also means that waiting periods are different - sometimes it helps, but often times it doesn't.
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.
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
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:11.156 |
| Level 2 | 00:07.875 |
| Level 3 | 00:13.563 |
| Level 4 | 00:16.531 |
| Level 5 | 00:17.188 |
| Level 6 | 00:32.438 |
| Level 7 | 00:14.844 |
| Level 8 | 00:26.875 |
| Level 9 | 00:29.313 |
| Level 10 | 00:29.688 |
| Level 11 | 00:17.875 |
| Level 12 | 00:33.750 |
| Level 13 | 00:38.125 |
| Level 14 | 00:11.156 |
| Level 15 | 00:32.125 |
| Level 16 | 00:15.781 |
| Level 17 | 00:19.344 |
| Level 18 | 00:17.125 |
| Level 19 | 00:07.281 |
| Level 20 | 00:07.938 |
| Level 21 | 00:32.844 |
| Level 22 | 00:09.031 |
| Level 23 | 00:15.156 |
| Level 24 | 00:07.875 |
| Level 25 | 01:25.719 |
| Level 26 | 00:20.469 |
| Level 27 | 00:20.781 |
| Level 28 | 00:30.813 |
| Level 29 | 00:58.469 |
| Level 30 | 00:34.625 |
| Level 31 | 00:23.406 |
| Level 32 | 00:42.156 |
| Level 33 | 00:20.250 |
| Level 34 | 00:54.844 |
| Level 35 | 01:02.031 |
| Level 36 | 00:13.406 |
| Level 37 | 00:25.531 |
| Level 38 | 00:19.719 |
| Level 39 | 00:43.063 |
| Level 40 | 01:00.938 |
| Level 41 | 00:43.281 |
| Level 42 | 00:38.844 |
| Level 43 | 00:18.438 |
| Total | 19:42.438 |
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)
Right at the start, there's a few point spheres on a couple platforms that need to be jumped to, so there's an immediate difference from the any% run. There's also a point sphere behind the exit, so a bit of backtracking is required. This adds about 2 seconds in total. These kinds of small detours will be a very recurring trend.
Level 2 (Day)
All point spheres in this level are pretty much in the way, so run right for justice.
Level 3 (Sunset)
There's a branching path at the end with a point sphere at the end, taking about 2.5 seconds.
Level 4 (Sunset)
Some waiting for moving platforms required again. There's a point sphere directly behind the exit - it's possible to collect it by landing on both at the same time, but it's a bit precise.
Level 5 (Night)
Introducing the red potion again, enabling high jumps. There's a short wait on a moving platform to grab a point sphere, and another point sphere behind the exit, but nothing too crazy here.
Level 6 (Night)
This level introduces the green potion, and unlike the any% run, this time it can't be skipped because of a point sphere below the platform which requires reversed gravity to get. Which means we get a cool 18 seconds of waiting here. We don't even get to make forward progress because the other point spheres here specifically require non-reversed gravity to be collected.
Level 7 (Night)
This time, taking the top route is actually required to get all the points.
Level 8 (Day)
About 10 seconds of extra waiting here - in any% the slime can be bypassed pretty quickly, but having to collect the point sphere at the top means there isn't enough time to pass it on the initial cycle, so we have to wait for it to traverse all the way to the left side.
Afterwards, we get to the final potion power-up, the blue potion. The blue potion enables flight by holding up in mid-air. Besides traversing the empty air, it also is required to collect a point sphere near the top, as well as a secret point sphere a full screen length beyond the exit.
Level 9 (Castle)
The waiting for the horizontal platforms at the start is the same as before, but due to the point sphere before the vertical platform I have to wait for another cycle there as well, adding up around 6 seconds of waiting time.
Level 10 (Castle)
The point spheres along the branched paths make for some interesting routing to collect them as fast as possible. The spike balls add some extra challenges there as well.
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, and the point spheres in this level don't require any detours to collect, so it's effectively identical to the any% run.
Level 12 (Castle)
This level introduces the spring (boing!), and has another key. However, it doesn't have any point spheres at all, so it's identical to any%.
Level 13 (Day)
Green potion level. Still a lot of waiting time until it wears off, although the path after it wears off is a bit different due to needing to collect a few point spheres. The red potion is also collected, which saves time collecting the final point sphere just before the exit.
This is the last level of the shareware version, meaning the maximum possible score in that version is what I got here (1370 points).
Level 14 (Castle)
Falling blocks level. No point spheres here, so it's a straight dash to the right for justice.
Level 15 (Night)
Some platform cycles here again. In the middle section there's a branched path with point spheres both at the top and at the bottom, so I go from top to bottom to collect both in one go. This doesn't actually cost any time, because I need to wait for the next platform cycle anyway.
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.
The level itself is a pretty straightforward dash to the right. No point spheres.
Level 17 (Day)
Large variety of enemies here. Some RNG manipulation is required (by entering the previous level's exit at different heights) to get past the Droppers (vertical bird enemies) without losing time. Other than that, this level doesn't have any point spheres, so it's identical again to any%.
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. Only the point sphere behind the exit makes any difference compared to any%.
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 jump near them. Some precise jumps are needed to get past here. The point spheres are all within easy reach, so no time loss 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. No point spheres here.
Level 21 (Castle)
Blue potion level. First part getting past the lava floors and ceilings is straightforward enough, but then there's a lot of point spheres at awkward places, requiring a lot of shuffling around to collect them all.
Level 22 (Day)
With specifically timed jumps, it's possible to jump over the flying bird enemies while they dive underneath you. No point spheres.
Level 23 (Psycho)
Once again, some luck manipulation to get past the Droppers. There are a few moving platform cycles here, but it's not so bad. The spike balls are a pain though. Also, again no point spheres in this level - but don't worry, after this level, they all have point spheres again all the way until level 43. Expect a lot more divergence from any% after this.
Level 24 (Sunset)
There are a lot of jumping enemies here, and their jumping patterns are random, so a bunch of luck manipulation was required to be able to pass through quickly. The point spheres are all along the way, but this won't continue to be the case for a decent amount of time.
Level 25 (Sunset)
This level is insanity. It's already long in itself, but at least in any% the waiting wasn't so bad. Here, though, because of some point spheres that are decently out of the way, we miss some cycles, including a slime slowly trudging through a narrow area that we can't easily bypass now, causing a grand 30 seconds of waiting time just by itself. Then later on, the same thing happens again - by collecting point spheres, I narrowly miss another slime cycle, leading to another 20 seconds wait as it trudges back and forth. In total, this level loses a grand total of 53 seconds to any%, almost tripling its run time. Wow.
Level 26 (Castle)
Blue potion level. The obstacles here with Aro flying through the middle make it look like Flappy Bird. The only notable challenge with point spheres here is the ones that are on the same horizontal position on the floor and ceiling.
Level 27 (Day)
There's a few point spheres that are a bit hard to get quickly, but conveniently we don't need to wait for any platform cycles later on, so not much time is lost.
Level 28 (Day)
There are a few branched paths here, but usually one is rendered much slower because of spike ball paths. In general, these spike balls were major nuisances throughout this level.
Level 29 (Psycho)
Green potion level. Three long periods waiting for potions to wear off again, so time for some more dance moves again. The jump after the third gravity potion wears off is a bit different in order to be able to collect the point sphere while also still landing on the platform below.
Level 30 (Psycho)
Pretty fun strategy here. In any%, I jump over the top of the screen to skip the push block puzzle. Here I can't quite do that, because there's a point sphere on the path you're supposed to create. However, I still bypass the puzzle anyway, by pushing only the last block and doing a frame-perfect jump to jump off it just before it falls down, allowing me to skip the puzzle but still backtrack to the block to collect the point sphere. Unfortunately, this is barely slow enough that I can't make the vertical platform cycle directly afterwards, but it's still much faster than the intended route.
Also, these spike balls are a major pain all throughout the level.
Level 31 (Castle)
The beginning is mostly the same as any%, but due to the extra detours to collect point spheres, the gravity potion wears off soon enough that I don't need to wait for it.
Level 32 (Sunset)
This level has the most point spheres out of any level, at 11 in total (worth 150 points in total). You don't really notice it though, because they're all spaced out between waiting for platform cycles or otherwise between relatively long platforming sections. All the waiting at the start is still a huge pain.
Level 33 (Night)
Lots of moving platforms again, but much less waiting here. All the point spheres are along the way too, so this is one of few remaining levels that is identical to any%.
Level 34 (Castle)
The point spheres near the spring at the start are surprisingly annoyingly positioned, and it took a lot of effort collecting them while also having a good spring jump, as you need to land at the very edge to skip the bouncing animation.
Then there's a green potion again. While any% can take this gravity potion to the end of the stage, here the detours are large enough that there isn't enough time to collect all point spheres (also definitely not helped by the spike balls) and still reach the end part. So I collect a bunch of point spheres, then grab the second gravity potion after the first one expires, collect the remainder, and still have to wait at the end for it to wear off anyway. Pretty annoying way to lose around 19 seconds.
Level 35 (Castle)
Here we are at the longest level in any%, although in 100% level 25 has it beat by a massive amount. Since we have to wait for a long platform cycle in the middle of the stage, I collect the point spheres along the way first, as it doesn't cost time then.
After the moving platforms, we reach the green potion, and come to one of the most crazily tight sequences of the entire run. The any% route can take the gravity potion to the key section without too much trouble (and with some spare waiting time), but now there's a point sphere at the far side of the level to complicate things. I use the vertical wavy motion of the potion to collect it while already running right to maximize usage time, jump past the moving platform, the ridiculously precise fire jump, jump past the jumper enemy, collect the point sphere, go back, use another very precise jump to reach the ceiling without losing full speed, and then just as the potion wears off, jump and use the jumping gravity mechanics to launch Aro over the fire in an arc and reach the key. This only has maybe 1 or 2 frames of leniency with the gravity potion, or otherwise this final jump would've been impossible and I'd have to wait for a really long platform cycle.
Then it's time to backtrack to the exit, which is much less complicated, although there was still a really annoying spike ball.
Level 36 (Castle)
Blue potion level. The spike balls are pretty devious again. The point sphere near the end is pretty tricky to get optimally, especially with the spike ball below interfering with the path as well.
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. The point spheres are all directly on the way, so no extra detours there.
Level 38 (Castle)
Blue potion level. Pretty much the same as any%, except the spike ball near the end is on a slightly different cycle, making it more difficult to go around.
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 use the waiting time time to play around with the push blocks again, but this time I can't skip the spring because there's a point sphere there. A very slight amount of pushing is required to be able to make the jump while also collecting the point sphere.
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, collect the point spheres (including a sneaky one past the exit), and then go to the exit.
Level 40 (Sunset)
Long moving platform waits at the start, followed by a few segments with Runners in tight spaces where you have to use specific escape spots to avoid them. At the end there's a key and a green potion, with the gravity potion only really being needed for one specific jump. Since there's downtime waiting for the gravity jump to end, I collect the gravity potion first and then collect all the point spheres in the maze area. 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 running bird enemies and avoid any further waiting.
Level 41 (Night)
Many, many moving platforms here, a flying bird enemy just to make things annoying along the way, and some green potions around. Unlike in any%, here I can't traverse the entire stage on one gravity potion, so I collect the first one as soon as possible, spend more time waiting for the platform cycles, and then after it expires I grab a second gravity potion, with which I have more than enough time to grab the remaining point spheres and go to the exit.
At this point, after every level, a high score prompt appears, because I now have enough points to reach the top 5 scores in the default save file (which includes a bunch of scores by "jp", presumably John Paul D'India himself). This can be skipped immediately though.
Level 42 (Psycho)
This level has the most amount of points available in a single level, with 330 points spread across 7 point spheres. The level starts with a green potion, followed by waiting time, so it's time to break out the dance moves again. Unlike any%, there is some waiting time here in the blue potion section because of detours collecting point spheres. At the end, there are a few secretly passable blocks, which are required to go through to collect the remaining point spheres. One is moved off so far to the right that you can see the level background end on the right side when you get there.
Level 43 (Day)
The final level, oddly enough, has no point spheres. So this is just like any%, a straight dash for the exit. For the high score prompt at the end, I input "TAS" in a single frame, but the screen is cleared so quickly that you can't see it on screen at all. Unfortunately the game also doesn't display the high score table at the end (only if you go to the credits page in the main menu) but trust me, the score is listed there - first place, with 4730 points!
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
Thanks for watching!
Darkman425: Much like the
previous run the optimization and movement look quite good. I don't really need to repeat myself, so all I can add is that the extra movement to collect all of the point items (plus the extra cycle waiting due to the time needed to get the point items, but that lets the music play more) add a nice bit of extra routing considerations that seem solid here. Nice work!
Accepting to Standard as a new branch for full item collection completion.