Submission #7051: Noxxa's O2 AMOK! in 02:24.55

Odyssey 2
baseline
(Submitted: Amok (1998)(Dondzilla, John).bin unknown)
BizHawk 2.6.1
7223
49.970017989206475
6069
Unknown
Submitted by Noxxa on 4/1/2021 12:00 AM
Submission Comments

Odyssey2 AMOK! in 2:24.55 by Noxxa

  • Emulator used: BizHawk 2.6.1
  • Aims for fastest time
  • Aims for highest score as a secondary goal
  • Manipulates luck
  • Clears endless game until no new content appears (all stage layouts passed) - more on this below

About the game

AMOK! is a homebrew Odyssey2 game, developed by John Dondzila and published in 1998 - the first O2 game to be released in 15 years after the console was initially discontinued. As with many later O2 homebrew games, it also had a limited cartridge release. Various cartridge variants have been released, with the title screen of the game displaying a special message to some limited-edition buyers. The game was sold through John Dondzila's website (advertised via Usenet) as well as on conventions like Classic Game Expo.
The gameplay has been likened to that of arcade classic Berzerk (1980). The player has to shoot their way through enemy robots in top-down maze-like rooms and make their way to the exit. The walls are also electrified hazards, and running into one is instant death. This repeats indefinitely, with rooms getting increasingly harder to traverse and enemies getting more difficult. After a certain amount of time, the invincible Smileybot will also chase the player, who can only be escaped by making it to the next room in time.
The game has 12 unique room layouts. Once those stages are cleared, the stages will repeat in the same order, while the level counter continues to increase. It also has a progressively increasing difficulty slider, which affects the timing of enemies - the lower the value, the less time enemies wait before they start acting. This value starts at 32 and decreased by 1 for every level completed until it caps down at 4, upon reaching level 29.
Due to programming limitations, only one enemy can act at a time - which enemy it is and what exactly they do (shooting or walking a short distance) can be RNG-manipulated through player actions. Smileybot meanwhile appears at a set time after the level has started (also dependent on the difficulty slider), at one of a fixed set of positions based on the player's location.

About the run

I initally started working on this run in early February. At the time, there was no O2 submission or publication yet. I could have pushed through to get a first submission or publication for the system, but I opted to wait for this date instead, for lack of anything else to submit. (Incidentally, Super Cobra was my second option for an O2 game to TAS. It's not a great system for speedrunnable games).
This run goes through 12 levels, thereby passing every unique room layout in the game once. I chose this as an ending point as it adheres to the movie rules for game ending for endless games, by ending when no new content is left to complete.
I considered other ending points based on difficulty, but it is difficult to pin down a definite ending point here. This is because the difficulty cap (RAM address 0x49) is not synchronized with the level loop. As well as that, the difficulty increase itself is less than impressive - while it forces some minor pathing changes due to different enemy actions (as well as RNG), as well as a little bit of variation in the score sub-goal, it does not affect the game enough in TAS conditions to make significant differences to the routing. Every stage would continue to be following the same general path, and would be beaten in exactly the same amount of time regardless of difficulty. I don't believe watching multiple loops of the game like this adds anything to the viewer experience.
Because just running towards the exit as fast as possible without any other consideration felt like it was a bit too straightforward of a goal (even if it is difficult in unassisted conditions, because the controls and instant-kill wall hitboxes are not very lenient), I added a secondary goal to go for high score in every room (as long as no time is wasted). This amounts to killing as many enemies as possible in each room for 10 points each, as well as gaining 100 bonus points if all enemies in a room are defeated.
In terms of controls, the player character can move in cardinal and diagonal directions, as well as shoot in each direction. Pressing the shoot button will normally stop the player, but there is a convenient caveat: the player can only move every other frame, so pressing shoot for one frame on an in-between frame will not stop movement. Aiming will also not lose time on those frames, which means that effectively the player can shoot in any direction without losing frames on aiming or shooting.
The player does still have the limitation of only being able to have one bullet on screen at a time. This is important when aiming for score without losing time, as a bad target selection can result in having too much time spent with bullets flying around to be able to shoot every enemy while moving past.

Stage-by-stage notes

Level 1

Going via the top is slightly faster than going via the bottom.
There are too many enemies here (a few of which out of the way due to the branched path) to be able to eliminate all of them in time. We have to settle with 6 enemies shot.

Level 2

This level has two exits, one of which is pretty close to the player's starting position (who can just start moving up straight away), which again means there's simply not enough time to shoot everything. We can still shoot 4 of them along the way.

Level 3

From here on, the levels start forcing a longer path, and all the enemies are close enough along the way, so we get the first full clear here.

Level 4

This room is long enough that Smileybot will appear for the first time, although it is late enough and far enough away to be of any inconvenience. We get another full clear here.

Level 5

The final enemy is luck-manipulated to shoot in the wrong direction, because otherwise it could have been rather annoying. Another full clear.

Level 6

The top exit is slightly faster to reach than the bottom exit.
Quite a bit of luck-manipulation had to be done for this one, mostly to avoid having bad enemy shots getting in the way. Also, the bottom-most enemy had to be luck-manipulated to move into a certain spot for it to be shot without having to go out of the way. Yet another full clear here.

Level 7

The top route is slightly faster than the bottom route.
This is a difficult level for enemy shooting purposes. The bottom-left enemy has to be fired at immediately, and has to be manipulated to not move. One of the other enemies also has to be manipulated to walk into the path of the bullet, so that there is still time to fire a shot for the last one. All in all, there simply isn't enough time to shoot all of them, so we settle for 6 enemies shot.

Level 8

There isn't enough time to shoot both enemies at the start here - but one of them can be luck-manipulated to suicide by running into a wall, which still allows us to get the full clear bonus.

Level 9

As in the previous level, there isn't enough time to get all enemies at the start, so one of them is luck-manipulated to suicide into a wall again. With that, we can get a full clear. Smileybot appears again, but again it is too late and far away to be relevant.

Level 10

As usual, the top route is slightly faster than the bottom route.
This level is very difficult unassisted because there are very narrow passages to go through - remember that walls are instant kills in this game. Optimizing score is also very difficult, because being able to shoot my way past the early enemies requires shooting early and luck-manipulating the enemies to walk into the bullets for a shorter path. Then, more luck-manipulation was required to make sure that the enemies that are along the way wouldn't kill themselves into walls, and instead an enemy that is out of the way would kill itself into a wall instead. This is all while there is very little wiggle room for luck-manipulation (literally) because of the narrow passages.
By the time there are only two enemies left, there simply aren't enough options left to manipulate for one of the remaining enemies to not kill themselves, so that is an unfortunate point loss. The remaining enemy can still be shot and we can get a full-clear bonus.
This is also the first level where Smileybot becomes a relevant factor - a pixel-perfect path is needed at the time of Smileybot spawning in order to spawn it on the left side while not running into a wall. If it were to appear on the right side, it would be impossible to dodge with how narrow the path is.

Level 11

Going low first through the maze is slightly faster. The level layout here is difficult to traverse - there is barely not enough room to clear this in perfectly diagonal paths. Due to the little room, however, luck-manipulating enemies to do the ideal things for us became quite a challenge. I would need the bottom-left enemy to suicide by wall as there is not enough time to shoot it, but I would also need other enemies to not be shooting at the player or suiciding themselves. Meanwhile, the middle top enemy also has to move in certain ways in order to be in the way to shoot.
By doing all of that, it's possible to get a full clear without losing time and without losing points unnecessarily to enemy suicide.

Level 12

The enemies are neatly along the way of the path here, so it is an easy full clear. What makes this level difficult is Smileybot. I must manipulate it to appear on the right side of the screen, as if it appears on the left, it's basically impossible to reach the exit. However, if I just follow the optimal path, I will be far enough to the left that Smileybot will always appear on the left side. A slightly sub-optimal path, losing 2 frames compared to a theoretical optimal path, is taken here to ensure Smileybot appears on the right side, so that it is far enough out of the way and it is possible to reach the exit.
After Level 12 is completed, the game will cycle back to stage 1, and input is ended.
The final score after clearing 12 levels is 1710 - accumulated from 81 enemy kills and 9 full clear bonuses.

Final notes

Screenshot:
Thanks for watching!

Samsara: is this amok us???
Samsara: Aw, here it goes.
Samsara: Short and nicely paced run of a rare good find in the O2 collection (though I'm not sure if it actually counts since it's homebrew). The choice on difficulty/loop looks clean, and the additional goal of maxing the score without wasting time pushes the entertainment up, so I'm accepting this to Moons.
fsvgm777: Processing.
Last Edited by adelikat on 9/24/2023 3:26 PM
Page History Latest diff List referrers