Posts for EricS


Experienced Forum User
Joined: 2/7/2012
Posts: 15
That doesn't explain why the change was made, though. It's a really inaccurate description.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
Why was the branch changed to "all levels"? The TAS plays only the Mayhem and Sunsoft levels.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
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.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
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.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
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:
unsigned char prngvalue1;
unsigned char prngvalue2;

static unsigned char lynx_prng(void)
{
    unsigned char n;

    n = (prngvalue1 >> 2) - prngvalue1;
    if (!(prngvalue1 & 0x02))
        --n;
    prngvalue1 = (prngvalue1 >> 1) | (prngvalue2 & 0x80);
    prngvalue2 = (prngvalue2 << 1) | (n & 0x01);
    return (prngvalue1 ^ prngvalue2) & 0xFF;
}
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
Blobs have random movement which changes with each play of a level, in contrast with walkers, whose random movement is always the same. On the Atari Lynx, this was done by having the blobs' random numbers augmented with the current timer value, which meant that there were really only four possible random-number sequences for the blobs, and it could be controlled by controlling the stepping.
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
Experienced Forum User
Joined: 2/7/2012
Posts: 15
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.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
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.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
Without an encode I can't see the run, but I'm wondering: does this run meet the "standout from non-assisted play" requirement?
Experienced Forum User
Joined: 2/7/2012
Posts: 15
Tristal wrote:
got4n wrote:
If I'll remember fast the impossible version only removes all check point;
Yes, which your video abuses considerably.
IIRC the run was done in Medium specifically to maximize the opportunities to abuse the checkpoints.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
got4n wrote:
This does not beat the current WR, so No vote.
That's a run on Medium difficulty. This run plays the game on Impossible.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
ALAKTORN wrote:
http://www.youtube.com/watch?v=vV9MV13w2U8 oh my god actually I recall this being found some time ago, why did no one try it?
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.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
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).
Experienced Forum User
Joined: 2/7/2012
Posts: 15
Nice getting past the Shockshunds so efficiently, especially compared with the previous run.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
Man, it seems that Mario 64 runs are cursed to have improvements discovered after submission.
Experienced Forum User
Joined: 2/7/2012
Posts: 15
turska wrote:
Entering a door that's not on a surface transports you out of boundaries, completing the level instantly. This saves gobs of time in CotD.
But if you do that in CotD, then you haven't rescued the Council Member in that level and the game is now unwinnable.