TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #5304: TaoTao's NES Astro Robo Sasa in 04:49.82

Console: Nintendo Entertainment System
Game name: Astro Robo Sasa
Game version: JPN
ROM filename: Astro Robo Sasa (J).nes
Branch:
Emulator: FCEUX 2.2.3
Movie length: 04:49.82
FrameCount: 17418
Re-record count: 32541
Author's real name: Y. A.
Author's nickname: TaoTao
Submitter: TaoTao
Submitted at: 2016-11-26 22:19:59
Text last edited at: 2018-02-08 16:53:30
Text last edited by: TaoTao
Download: Download (3330 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
temp encode


(Link to video)

HUD enabled version is also available.

Essentials

  • Emulator used: FCEUX 2.2.3
  • Aims for fastest time
  • Takes damage to save time
  • 2 players

About the game

"Astro Robo Sasa" is one of exciting retro games. It was originally developed for MSX, as "Sasa". And later it was ported to Famicom. In this game, a robot boy Sasa explores field, warehouses, sea, and universe, with his girlfriend Nana. And finally he will reach a blackhole.

The game goal is to collect all energy packs in every stage. You can clear stages by destroying energy packs instead of collecting them, but when you run out of your energy, the game is over.

The movement of this game is very unique. Sasa moves by the recoil of his prasma gun. It makes this game very interesting (and difficult). This idea sometimes inspires game developers.

When you pause the game, it plays a music, "Love theme from Nana".

This game was never released outside Japan.

Run overview

I chose 2-players mode to save time. 2-players mode is slightly laggy, but still it is faster than 1-player.

This run is based on my testrun in 2009 (encode is available). From then, I have been using a HUD script which displays hitbox and memory value. Here is the screenshot:

In this run, I abused wallzipping trick. I explain it later.

This game manages position and velocity in a curious way. It does not adopt pixel-subpixel method. Instead, it calculates based on the value of internal frame counter. So, if you start from different internal frame counts, you get slightly different results from the same input. And lags make things more complex. Consequently, this game is not so friendly to hex-editing.

Run detail

Stage 1, 2, 3

Energy is not a problem for TAS. So I destroy energy packs to save time.

Stage 4, 5, 6

I used combined wallzipping. On stage 6, I fired some shots to manipulate the movement of enemies on next stages.

Stage 7, 8, 9

These stages have higher gravity than others. Enemy robots carry energy packs, and they become a bottleneck.

Enemy robots sometimes warp. The warp destination depends on the internal frame counter and the last two digits of players' energy. (See $9285)

Probably, Enemy robots always pick up energy pack if they can. And they sometimes drop carrying energy packs. When the internal frame counter becomes 0xB1, they drop carrying energy packs if ( (player1_energy xor player2_energy) and 1) == 1. (See $9350)

In stage 7 and 9, this run is slower than my testrun by 1 or 2 frames. It is due to the internal frame counter value. As I said, the internal frame counter affects movements, and it is not reset when you clear stages.

Stage 10, 11, 12

Sea stages. All of them have floating power, and stage 10, 12 have tidal power.

I used solo/combined wallzipping. You may think you can use solo wallzipping on stage 10, but I did not succeed. I guess the reason may be that stage 10 has less lags than stage 11, 12.

Stage 13, 14, 15

Universe stages - no gravity.

I used combined wallzipping. Solo wallzipping is probably not usable because these stages have twofold walls.

Stage 16

Blackhole stage. The blackhole attracts you. If you touch the blackhole, it kills you instantly.

I had to clear this stage with relatively normal way. This stage has twofold walls (you can see this using my HUD script), so wallzipping is difficult or impossible. So, firstly I destroyed walls at the bottom using up+down button trick, and I destroy one wall at the top. Finally, I used solo wallzipping.

Tricks

Combined wallzipping

When you collide with fragile walls, your velocity is negated. But, if the partner collides you at that moment, their velocity is exchanged and you can zip through walls. Basically, you can zip through only fragile walls. (When you collide with unbreakable walls, your velocity decays)

Solo wallzipping

Sometimes you can zip through walls alone. I do not know its mechanism exactly, but I guess the amount of lags is related, and you may also need unbreakable walls.

Pause to manipulate

The internal frame counter increments even if the game is paused. As I said, it affects movements, so you can manipulate it with pausing.

Up+Down/Left+Right button

When you press up+down, you can move down shooting down. And when you press left+right, you can move down shooting left. So, the players virtually have 6 directions, not 4.

Tips

When you pause the game or break a balloon, sometimes the bgm stops. But the bgm starts on next stage.

In ending, the game displays scores and a string "6502". This string depends on scores, and it was used as a password for a contest.

Reference

Thanks

FCEUX TAS Editor helped me a lot. Without it, it would be very painful to tas this game. Thank you for nice feature!

If possible, I wish it were able to splice 1P/2P inputs separately.


Truncated: Judging.


Truncated: This game has an interesting gameplay mechanic and the TAS is well made. The level design however is pretty bland and generic, with several levels looking very similar, and the downtime between levels is long, which I think contributed to the poor votes. I will accept this for the vault category.

Spikestuff: Happy almost Monthsgiving.


Similar submissions (by title and categories where applicable):