Street Gang is a mean 2D Amiga game from 1988.
I repeat, this is not Cheetahmen II. This is Street Gang.
I did the whole TAS three times to cut frames.
This is my first Amiga TAS, so unexpected technical issues are welcome.
Game objectives
- Emulator: BizHawk 2.11.1
- Aims for fastest time
- Genre: action / beat 'em up
- Manipulates luck
- Sacrifices lives to save time (coincidentally)
- Speed/entertainment tradeoff (extended input)
- PAL
Settings
NTSC is faster but feels weird, so I use PAL. The game was designed for PAL.
Controller port 1: None
Controller port 2: Joystick
Story
Mickey's life was dull and boring until his parents decided to move to New York. Here he encountered the street gangs and decided he wanted to be a part of them. To prove he was worthy of becoming a member of the gang, he accepted a daring challenge. To test his courage, he had to cut the beloved tuft of hair from the notorious Curl's head.
Gameplay
Mostly we just run and jump right and hope that the enemy does not hit us by accident. Hitboxes are all over the place, so we can die seemingly from nothing.
One jump saves 4 frames compared to walking, so we want to jump as much as possible.
Enemy spawns are randomized so we can wait a few frames before entering the next screen to get more favorable enemies. This can save a few frames throughout the run by reducing lag, and it is not trivial to optimize, but this tweaking is overshadowed by our greater need to manipulate short animations for the three bonus stages.
Due to a delicate game design we can immediately die in the beginning of level 2 and level 4. The enemy can spawn on us and we can't do anything about it, but thankfully we can manipulate RNG to avoid it.
This TAS is coincidentally pacifist because killing wastes time.
Bonus stages
This is the hardest part of the run and gives some headache.
The bonus stages are all identical 'reward' screens. There are four trash bins that give random rewards or penalties. The player must choose one trash bin. It looks like the player has a choice, but all the trash bins are the same, just like real life. The prize is decided when we exit the previous level. The prizes are '5000 score' or unavoidable death with varying animations. We need to manipulate RNG so that we get the shortest animation in every bonus level unless manipulating it wastes too much time.
By coincidence short animations are for prizes that reduce lives, so we lose 3 lives during the run, one in each bonus stage. I'm not sure if this should be tagged as 'uses death to save time' because losing lives is coincidental.
Here are the bonus stage animation durations:
Happy animation is 140 frames.
Skull animation is 96 frames.
Frown animation is 84 frames.
Flame animation is 80 frames. We want this. Probability 25%?
So depending on luck we can lose 0, 4, 16 or 60 frames to the bonus stage trash bin animations.
In this TAS we get: Flame, Frown, Frown.
So we lose frames in bonus stages like this: 0, 4, 4.
One in-game frame is 4 frames, so this result is only 2 in-game frames from perfect RNG.
Feel free to start Amiga tasing and save those frames!
But you have to find a way to manipulate a more favorable RNG without losing more than 1 in-game frame...
Framecount
1375 Level 1
3230 player disappears, flame get
3311 fadeout
We got perfect RNG result in level 1 by changing player movements randomly without losing any time.
3879 Level 2
5764 player disappears, frown get
5849 fadeout
4 frames lost to RNG manipulaion and 4 frames lost to longer animation. Current total loss: 8.
6365 Level 3
8143 player disappears, frown get
8228 fadeout
0 frames lost to RNG manipulation and 4 frames lost to longer animation. Current total loss: 12.
We can get a bad enemy spawn in the beginning of the next level but there is hitbox weirdness that allows killing the enemy in 1 in-game frame when the level is loaded. In this third iteration of my TAS I get good RNG by coincidence and no bad enemy spawns.
By another stroke of luck we also spawn a mysterious levitating man. Blink and miss it.
I tested all reasonable routes with the ladders in the final level, but there could be some hidden frames left to save because we can get different lag frames if we tweak jump timings throughout the run.
8735 Level 4
8891 up
8991 climb end
9813 up, final ladder
9912 climb end
9993 fadeout
Please compare future runs to this 9993 fadeout frame because extended input after this point can be left to author's artistic choice.
Speed/entertainment tradeoff and encode art direction
I extend the input by about 740 frames. First I show the ending cutscene image for 100 frames. Then I insert the player name to the highscore table so that we return back to the title screen. I do this to showcase the amazing art that was skipped when the game started. The title screen art gives a more cinematic ending compared to ending at the haircut image.
10074 begin haircut
10173 end haircut
10720 end input
13845 maybe end encode somewhere around this frame?
Feel free to extend the encode for another song loop to make a director's cut encode if you want. The title screen is the best part of the run anyway.
I dedicate this TAS to TASVideos encoders who are a mean street gang.
Suggested screenshot frame: 9046 (levitating man)
CasualPokePlayer: Replacing movie file with itself (as it was not zipped due to a site bug)