TASVideos

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

Submission #6035: link_7777 & EZGames69's NES City Connection "warps" in 10:21.99

Console: Nintendo Entertainment System
Game name: City Connection
Game version: JPN
ROM filename: City Connection (Japan).nes
Branch: warps
Emulator: Bizhawk 2.2.2
Movie length: 10:21.99
FrameCount: 37381
Re-record count: 17948
Author's real name: Phillip Grimsrud
Author's nickname: link_7777 & EZGames69
Submitter: link_7777
Submitted at: 2018-07-14 06:09:38
Text last edited at: 2018-07-16 16:23:00
Text last edited by: feos
Download: Download (9854 bytes)
Status: judging underway
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:

City Connection

City Connection is a side view driving game. The game was originally developed for the arcade by Jaleco in 1985, it later received a port on the NES in 1988. The story is fantastic, and oddly specific. You've broken into an exclusive paint store in New York City and are now on the run whilst carrying leaking 10 gallon cans of paint. You must inexplicably drive over every mile of highway in order to make your escape.

Just another day in the city.


(Link to video)

Game objectives

  • Emulator used: Bizhawk 2.2.2
  • Complete all 16 unique stages. True to the arcade style, the game loops indefinitely (the stage rolls from 255 back to 0). The stage number is masked so if you keep playing you'd actually repeat stages 9-16 until the counter rolled over and took you back to the first stage. The backgrounds for the 6 cities rotate and are tracked independantly from the stage counter.

Game Mechanics

Controls

  • up - hold up when jumping to jump to a higher platform
  • left - turn left
  • right - turn right
  • down - makes the car fall down faster, doesn't work when jumping
  • B - shoot oil can
  • A - jump
  • select - select 1 or 2 players
  • start - pause

Backgrounds

  • New York
  • London
  • Paris
  • Frankfurt - not seen in this run
  • New Delhi
  • Tokyo

Items

  • Oil cans - You can collect and shoot these at police cars to take them out, but any extra left over are counted for extra points at the end of a stage, costing some time. So we want to end each level with no cans left (only acception is the last stage)
  • Balloons - collecting 3 balloons rewards you with a warp. The warp takes you to the next "stage" (increments the stage counter), but strangely it also tries to increment the background counter by 2. Additionally the memory address that stores the controller inputs is involved in the calculation, so by manipulating with the select button you can get it to increment by 3 instead.
  • Hearts - under certain specific conditions hearts will spawn in Paris. Besides spawn conditions and the sprite the hearts are the same as balloons. I may be missing some criteria, but it seems you need to press B when your speed is 4 or less (while you're turnning around). I'm a little unsure if it requres that you have 0 oil cans.
  • UFO - if certain specific criteria are met a UFO will spawn. Collecting a UFO nets you an extra life. Unfortunately the UFO is not seen in this TAS. It looks like you again need to hit B when you have speed 4 or less (not sure about having 0 oil cans), but your X position must also be greater than 0xE0. Also there is what appears to be a shot or kill counter that must be 10, the counter does seem to get decremented sometimes, but I didn't really quantify when that happens.
  • Rabbit - if you jump over a spike in Tokyo a rabbit can spawn. It uses the same slot as the UFO, but if you collect the rabbit it is treated as a balloon. Also not seen in this TAS.

Enemies

  • Police cars - you lose a life if you hit them, but you can take them out with oil cans
  • Cat - you lose a life if you run into a cat. Cats are impervious to oil cans
  • Spikes - these appear if you spend too long on the same level of platforms, but they're not seen in this run.

Strategies and Tricks

The most difficult part of this TAS is the routing. The route is simple enough that stage by stage details probably aren't necessary, but the high level strategy is to keep turning and changing platform levels to a minimum. It turns out that the best way to achieve this is to work from top down, finishing each layer as you go. The second to last stage in this run is the exception. The stage has platforms so small that you don't have time to jump (unless you do some pause manipulations) because the cooldown animation is still going when you hit the end of the platform.

The other part of the route is the warp route. The warp animation is extremely long. So long that it isn't worth using the normal balloons that spawn when the spawn counter hits 0x700 and 0xE00 (the counter resets after a completed stage). You can manipulate a heart spawn right at the beginning of the stage if you're on the Paris background, and 2nd heart even spawns right after. The early heart spawn makes the warp worth while, even though you're actually only skipping to the next stage (rather than over the next stage). Since we can get the background counter to increment by 3 this means we can warp on the 3rd stage and every 4th stage after that if we want. It turned out to be most efficient to get one balloon in the first two stages and then two hearts on the 3rd stage, but because the spawn counter keeps running across a warp for the rest of the background loops it made more sense to collect two balloons in stages and just one heart in Paris for the next warp. Lastly to end as soon as possible it was much faster to head to New Delhi for once and shift the last warp to the 16th stage so we could end on a warp.

If you hold up and jump, you can jump towards the next layer up, but if there is a platform in your way you'll bonk against the ceiling. It turns out that you gain control to turn around about 5 frames earlier when you bonk into a ceiling, so this is used as much as possible to save time.

You can gain a little extra hang-time during a jump by pausing and unpausing at the right time. This is used to avoid wasting time switching platform levels in a number of places, especially in later levels. Conversely it is possible to us the pause buffering to buy more time on a platform to run out the cool down animation and allow for a jump. Credit to L33Tz0rs (ツ ツ) on youtube who used this strategy in his good, but slightly slower TAS of this game.

Improvements

  • Route testing was by no means exhaustive, so I wouldn't rule out the possibility of saving a few frames with an improved route, but I think what we came up with is pretty good.

Thanks to:

  • EZGames69 for the collaboration and for suggesting this project.
  • Takanawa for his WIP showing how warps could save time and how to manipulate hearts and the UFO.
  • mtvf1 for pointing me to Takanawa's WIP and advocating for a warps route
  • Alyosha for doing more research on finding the difficulty cap.
  • LackAttack24 and other RTA runners for their interest in the project
  • my Twitch chat for the ideas and encouragement
  • The TASMania team

Screenshots:

372, 2600, 4204, 6133, 7389, 29080


Memory: Claiming for judging (and redemption)

Similar submissions (by title and categories where applicable):