I recall the audio in this game being finicky in general. Though it's been long enough that details are hazy, either sound effects or music (I can't remember which) would not play or vanish after a while. So I suspect the issues are with the game itself and not jpcrr.
Excellent work! Especially on beating the records. I probably should have mentioned this before (sorry), but the Lynx records were achieved on the Tile World reimplementation of the Lynx behavior. Tile World doesn't allow for all the kinds of block slapping achievable on the original game. (In particular, I don't think your route on level 2 can be performed in Tile World.) So block slapping may well allow for more record breakage. The RNG for blobs (but not for walkers) is also different in Tile World.
This TAS will be nice, even if the mazes can be boring.
Here's some information about the randomness and other things. This is a lot easier thanks to Brian Raiter, who created the open source "Tile World" clone that aims to emulate both the MS and Lynx rulesets. It contains an RNG that duplicates the behavior of the RNG on the Lynx. Copied and adapted from the Tile World source code:
When a walker hits an obstacle, the RNG is called and the two lower order bits are interpreted as an integer from 0 to 3, dictating the number of 90 degree clockwise turns to make to find the walker's new direction. For example, 1 means turn right and 2 means turn around. The only way to manipulate walkers is indirectly, by doing something that affects when they run into something.
Using this information, it's possible to find that the RNG state is a 16-bit field at address 0044.
As for blobs, Brain Raiter states in http://www.muppetlabs.com/~breadbox/software/tworld/tworldlynx.html
So, we should find the timer. There are multiple locations that appear to be timers, but the relevant one is an 8-bit field at address 002F. It is incremented every 3 frames, which is essentially this game's resolution. The two low bits in the timer are used together with the RNG to determine blob movement. The timer is only incremented when a level is being played. This means that (contrary to my previous suggestion) it is not possible to manipulate blobs by pausing. The only way is to alter the time spent on previous levels or restart the current level. Increasing the timer by 1 makes the blob directions rotate a quarter-turn counter-clockwise.
Incidentally, the movement of teeth also depends on the timer. Unless they're being forced to move (ice, exiting a bear trap, etc.), teeth only initiate movement if the 4-bit in the timer is set (equivalently if the timer is 4, 5, 6, or 7 modulo 8.)
So, levels with blobs have effectively 4 starting conditions, and levels with teeth have 8.
By the way, here are some memory addresses I found, though I think most of them are useful more for cheating than TASing per se. The RNG and Timer are the major ones. The Multi Force Floor Direction controls the direction things are ejected from the "random" force floors. In the Lynx ruleset this is a complete misnomer since the directions just cycle clockwise. The direction persists between levels.
Domain RAM
SystemID Lynx
000A b u 0 RAM Level Number - 1
1180 w u 0 RAM Time Left
0026 w u 0 RAM Chips Left
0064 w u 0 RAM Total Score % 2^16
0066 b u 0 RAM Total Score / 2^16
002A b u 0 RAM # Red Keys
002B b u 0 RAM # Blue Keys
002C b u 0 RAM # Yellow Keys
002D b u 0 RAM # Green Keys
0020 b u 0 RAM Have Cleats
0021 b u 0 RAM Have Magnet
0022 b u 0 RAM Have Heat Shield
0023 b u 0 RAM Have Water Shield
0044 w h 0 RAM RNG
002F b u 0 RAM Timer
004A b u 0 RAM Multi Force Floor Direction
The RNG on the Lynx Chip's Challenge is initialized to the same state when a level is (re)started and called as needed. Walker movement depends only on the RNG and so their movements will be hard to manipulate. Blobs are a bit easier since they move based both on the RNG and the timer. (Pausing the game is perhaps useful.)
Some quick comments about your WIP:
Level 9: When pushing the second block into the bomb, you can save time using block slapping (though you might lose it later with the bugs anyway).
Level 15: Near the finish, it is faster to have the thief take away your ice cleats.
Level 20 (unfinished): It's not needed to take any chips as there's no chip socket.
A question:
If this version is TASed, how should the secret levels be handled? They can only be reached by entering a password, which seems to require resetting the Lynx. I think the best thing would be to have two TASes: one which plays the 144 regular levels, and another which plays the 4 secret levels via the password. The alternative approach would get the ending after the 144 levels, power cycle, and then play the secret levels and get the ending again.
I'm a big fan of Chip's Challenge, but I'm not sure it would make for a good TAS. Many of the levels are either mazes (trivial to optimize) or block pushing levels (extremely nontrivial to optimize, but long and for many people uninteresting to watch). A run of the entire game would be rather long; I estimate between three and four hours.
That said, the Sokoban TAS was accepted, so a run of Chip's Challenge presumably would be, too.
Amazing.
Would you still have to activate the cannon in a 120 star run for "Somewhere over the Rainbow"? If so, it might unfortunately be slower to use this.
I very much like the idea of a "minimum presses" category, as there is much potential for creative ways of reducing presses (as the present run exemplifies).