Submission #7712: eien86's NES Tennis in 11:16.00

Nintendo Entertainment System
baseline
(Submitted: Tennis (JU) [!].nes JPN/USA)
BizHawk 2.8.0
40627
60.0988138974405
1275
PowerOn
Submitted by eien86 on 9/27/2022 5:15 PM
Submission Comments

Introduction

Nobody:
Absolutely nobody:
me: Here's a TAS for NES Tennis
Yeah, so I wanted to do something different from all the movies I've been working on. I was curious to see how a bot can exploit a game so simple as NES Tennis, and indeed some exploits were found. In particular, movements can affect RNG such that serving can always be manipulated to be aces, and returns can always cause the opponent to either let the ball pass or make an unforced error.
I choose level 5 of difficulty. Here the game makes you beat a (normally) relentless CPU opponent twice on a best-of-3 set match. Repetitive yes, perhaps even boring. But I had a blast working on it.

Objectives

  • Hardest Difficulty
  • Heavy luck manipulation

Software + Hardware

Rom Information

  • Name: Tennis (JU) [!]
  • SHA1: 80D99C035E6A5AB9718E413EC25CBE094F085962
  • MD5: 32FB31AE20F0D01BC74BAAD9F3A9672B

Emulator

  • EmuHawk 2.8.0 (Core: QuickNES)
I tried resyncing to the NesHawk core, but immediate desyncs happened. I believe this is due to the way RNG is managed in this game. I identified the value range [0x500 - 0x503], which seems to diverge depending on the emulator. I estimate that this is an RNG value that is updated with PPU/CPU timing, leading to desync.
With a RAM transplant at frame 128 (127 and before fails -- this is exactly at the moment of serving) from QuickNES to Bizhawk, it is possible to replicate the opponent mistakes also in BizHawk More research would be worth doing here, but this is as far as I took it.

Routing Bot

  • Bot: Jaffar
  • Routing Core: QuickNES
  • Platform 1: AMD Ryzen Threadripper 3990X Processor (64 cores, 128 threads) + 256Gb RAM (Average Exploration Performance: 1.4M States/s)

feos: Claiming for judging.
feos: Great run, reaches an ending, accepting.

EZGames69: Processing...
Last Edited by adelikat on 11/29/2022 12:04 AM
Page History Latest diff List referrers