1 2 3 4 5 6 7
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
DrD2k9 wrote:
Bummer it appears that we can't avoid the spider. Do you think we could we delay it's arrival until we get to the east portion of the mesa? If so, I wonder if the dialogue would show up if we made it underground before the spider lands and sprouts legs.
Yes that would block the dialogue; but no I don't think it's possible to make it there in time. (edit) check the random() call at the top of logic 30, that's the one you're looking for. But the maximum is only a few seconds more than the minimum.
c-square wrote:
One thing I noticed was that in your run, you were able to do small movements and stop in the middle. How did you do that? I'm finding I can only go all the way over to one side or all the way over to the other. I can't stop in the middle or do short adjustments.
Tap the direction button once to start moving, once more to stop. Do not hold it down.
Editor, Expert player (2073)
Joined: 6/15/2005
Posts: 3282
Great that there was a surprisingly easy way to fix the emulation errors. This TAS is looking good now.
c-square wrote:
Doing this requires three extra slot pulls and six 'Y-enter' rng skips. It takes 8 frames for a losing slot pull, 10 frames for a winning slot pull and 7 frames to do a 'Y-enter' skip. In the end, this route costs 70 frames in RNG manipulation:
Assuming I understand how the random() calls work, I found a strategy that costs only 32 frames:
00272 30384 99 2
00273 62193 04 3 bet 3 (DDD)
00274 52862 77 0
00275 09191 97 0
00276 45180 05 0
00277 09549 05 0 bet 3 (EEE) +10f
00278 33834 75 2
00279 06307 88 3
00280 23816 86 1
00281 56169 79 2 bet 1 (SSE) +8f
00282 55958 77 0
00283 26399 21 0
00284 02132 93 0
00285 12613 17 0
00286 15810 56 3
00287 35675 09 0
00288 65120 59 2
00289 00737 28 3
00290 55726 20 3
00291 49495 51 2 Y-enter +7f
00292 19244 04 3 bet 3 (DDD)
00293 60477 10 1
00294 39514 93 0
00295 01299 23 2
00296 47800 03 2 bet 3 (EEE)
00297 18777 17 0
00298 11206 38 1
00299 04751 58 1
00300 55556 22 1 Y-enter +7f
00301 13877 04 3 bet 3 (DDD)
(first number is index but is different from yours; mine has 0 at index 0) By the way, how many frames does it cost to exit and re-enter the machine? How about saving and restoring?
Active player (378)
Joined: 9/25/2011
Posts: 652
Radiant wrote:
Tap the direction button once to start moving, once more to stop. Do not hold it down.
Hmm... I tried that and it doesn't seem to work. The skimmer registers the first keypress and starts to move, but it gets to the other edge of the screen before it registers the second keypress.
FractalFusion wrote:
Assuming I understand how the random() calls work, I found a strategy that costs only 32 frames:
00272 30384 99 2
00273 62193 04 3 bet 3 (DDD)
00274 52862 77 0
00275 09191 97 0
00276 45180 05 0
00277 09549 05 0 bet 3 (EEE) +10f
00278 33834 75 2
00279 06307 88 3
00280 23816 86 1
00281 56169 79 2 bet 1 (SSE) +8f
00282 55958 77 0
00283 26399 21 0
00284 02132 93 0
00285 12613 17 0
00286 15810 56 3
00287 35675 09 0
00288 65120 59 2
00289 00737 28 3
00290 55726 20 3
00291 49495 51 2 Y-enter +7f
00292 19244 04 3 bet 3 (DDD)
00293 60477 10 1
00294 39514 93 0
00295 01299 23 2
00296 47800 03 2 bet 3 (EEE)
00297 18777 17 0
00298 11206 38 1
00299 04751 58 1
00300 55556 22 1 Y-enter +7f
00301 13877 04 3 bet 3 (DDD)
(first number is index but is different from yours; mine has 0 at index 0)
Nice find! Unfortunately, the early index numbers are very hard to hit because once the rng generator hits a seed of zero, it reseeds the game based on the clock value, it's rare that it's reseeded in the first few thousand numbers. If you can find a way to get it to reseed early enough, that'd be great. Otherwise, I encourage you to keep searching for good combinations. I just searched for instances with four DDD values. Three DDD and two EEE values works too, and there's likely another better combination out there.
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
c-square wrote:
Wow.. I have even more respect for your run now, DrD2k9. That skimmer sequence is a real pain! I've made it through a couple times, but sometimes get stuck in situations where, no matter what I do, I get hit by a rock. One thing I noticed was that in your run, you were able to do small movements and stop in the middle. How did you do that? I'm finding I can only go all the way over to one side or all the way over to the other. I can't stop in the middle or do short adjustments.
Movement control at 'Fastest' speed is generally insane in this game. The key is using the number pad for directional inputs. Normally Roger will take 3 steps (frames) in a given direction before changing directions regardless of which of the 3 frames the new direction key is pressed. This includes pressing the same directional button to stop moving. HOWEVER, pressing '5' on the number pad halts Roger's movement on the frame pressed and doesn't wait for the 3 frame cycle to end. Thankfully this trick also works in the skimmer sequence, allowing you to stop motion at any desired frame. Without this stop-movement input it would be impossible to complete the game at 'fastest' speed because the 3 frame cycle would force Roger to jump off cliffs constantly.
Active player (378)
Joined: 9/25/2011
Posts: 652
DrD2k9 wrote:
HOWEVER, pressing '5' on the number pad halts Roger's movement on the frame pressed and doesn't wait for the 3 frame cycle to end. Thankfully this trick also works in the skimmer sequence, allowing you to stop motion at any desired frame.
Sweet! With being able to make small adjustments, I've written a lua bot to autopilot the Skimmer sequence. The goal here is to have a deterministic run of the skimmer so we can guarantee the number of rng-seeds that are spent in this part. Link to video Unfortunately, it only works up to 'Fast'. At 'Fastest', the rocks come too quickly to dodge. Tomorrow I'll work at upgrading it to look at the upcoming rng seeds to anticipate the rocks instead of just looking at the existing rock positions. The hardest part of that will be figuring out when the random in this bit of code is called:
if (v6 == 0) {
  if (!isset(f32)) {
    random(2,10,v38);
    if (v38 == 5) {
      set(f32);
      v37 = 3;
      v36 = 0;
      reposition(o1,v36,v37);
    }
  }
  else {
    reset(f32);
    v37 = 253;
    v36 = 0;
    reposition(o1,v36,v37);
  }
}
I haven't been able to find when v6 gets set and when it gets changed. If someone has time, could you find out what causes v6 to become 0?
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
c-square wrote:
I haven't been able to find when v6 gets set and when it gets changed. If someone has time, could you find out what causes v6 to become 0?
Ok, I did a quick search of rooms up through the skimmer sequence for places where v6 is directly written. The only thing I can find is in LOGIC.024 which is Orat's cave.
if (isset(f30)) {
  reset(f30);
  set(f43);
  print("\"What have we here?\"");
  v6 = 0;
  stop.motion(o0);
  program.control();
  v64 = 5;
  cycle.time(o1,v64);
  set.view(o1,128);
  set.cel(o1,0);
  erase(o0);
  end.of.loop(o1,f31);
  v30 = 2;
}
"What have we here?" is displayed when Orat catches Roger. So unless there is another place where v6 gets a value of 0, it appears that a death is necessary to accomplish this. That also assumes that nothing else changes v6 between Orat killing you and reaching the skimmer sequence. I did not search for situations where v6 may be written as part of a function like a random(min,max,v) command.
Active player (378)
Joined: 9/25/2011
Posts: 652
Can you search for an increment or decrement to v6? Also, how do you search in multiple files?
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
c-square wrote:
Can you search for an increment or decrement to v6? Also, how do you search in multiple files?
I'll do a deeper search as soon as I can. I don't search multiple at once. I just did a basic search for "v6 " and hit F3 a bunch of times bouncing between logic files.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
c-square wrote:
Unfortunately, it only works up to 'Fast'. At 'Fastest', the rocks come too quickly to dodge. Tomorrow I'll work at upgrading it to look at the upcoming rng seeds to anticipate the rocks instead of just looking at the existing rock positions. The hardest part of that will be figuring out when the random in this bit of code is called:
v6 is the direction EGO is moving in. 0 for still, 1 for up, 3 for right, 5 for down, 7 for left.
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
Radiant wrote:
v6 is the direction EGO is moving in. 0 for still, 1 for up, 3 for right, 5 for down, 7 for left.
So every time we stop the skimmer, it calls that section of code?
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
DrD2k9 wrote:
Radiant wrote:
v6 is the direction EGO is moving in. 0 for still, 1 for up, 3 for right, 5 for down, 7 for left.
So every time we stop the skimmer, it calls that section of code?
Every tick that the skimmer is not moving horizontally, there's a one-in-nine chance of its shadow jumping three pixels down. So random() is called each tick for that. Except that if it jumps down, it will not call random() on the next tick, and instead have it jump up again. This is visual only and doesn't affect anything else; it's easy to spot in the video if you know it's there.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Something else that came to mind. Almost all words in the game have synonyms, sometimes lots of them, and sometimes really weird ones. On the one hand this means that several commands can probably be typed shorter; however I don't think that's actually going to save time (however, 'lever' is a synonym for 'throttle' in case it helps). On the other hand, if you have extra time, it does mean that you can type in commands in the most ridiculous way possible. For instance, instead of "get keycard", "swipe every credit card" is a valid input. "Put keycard in slot" can be written as "fill credit card from slot machine". A next command may be "press inside from first airlock". "Get up please, rock me now" is recognized. And so forth. It's silly, but if it wastes no time... :D
Active player (378)
Joined: 9/25/2011
Posts: 652
Ha ha ha! That's hilarious! That would certainly add to the entertainment of the run. As for the v6 issue, it'd be helpful to know when the Ticks happen. I'm pretty sure it's not one Tick each frame. Is there a variable that can be used to track Ticks?
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
c-square wrote:
As for the v6 issue, it'd be helpful to know when the Ticks happen. I'm pretty sure it's not one Tick each frame. Is there a variable that can be used to track Ticks?
Each tick is one frame of updating the game state, yes.
Active player (378)
Joined: 9/25/2011
Posts: 652
Radiant wrote:
c-square wrote:
As for the v6 issue, it'd be helpful to know when the Ticks happen. I'm pretty sure it's not one Tick each frame. Is there a variable that can be used to track Ticks?
Each tick is one frame of updating the game state, yes.
Hmm... I was playing the game in JPC-rr on slow, keeping the skimmer still, and watching the rng seed value. It took numerous frame advances for the game to change the seed (I.e. call random). When I was talking about a frame, I meant the JPC-rr frame. Do you mean the same thing? If not, is there a way we can know when what you're referring to as a frame is going to happen next?
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
c-square wrote:
When I was talking about a frame, I meant the JPC-rr frame. Do you mean the same thing? If not, is there a way we can know when what you're referring to as a frame is going to happen next?
Not necessarily, no. If I recall correctly, AGI games run at 12 frames per second, whereas JPC-rr can be set to whatever you want. Point is, AGI has a fixed speed for how often per second it updates the game state. This should not be hard to measure.
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
Radiant wrote:
Something else that came to mind. Almost all words in the game have synonyms, sometimes lots of them, and sometimes really weird ones. On the one hand this means that several commands can probably be typed shorter; however I don't think that's actually going to save time (however, 'lever' is a synonym for 'throttle' in case it helps). On the other hand, if you have extra time, it does mean that you can type in commands in the most ridiculous way possible. For instance, instead of "get keycard", "swipe every credit card" is a valid input. "Put keycard in slot" can be written as "fill credit card from slot machine". A next command may be "press inside from first airlock". "Get up please, rock me now" is recognized. And so forth. It's silly, but if it wastes no time... :D
In the final version, I'll definitely consider rewording commands when extra frames aren't necessary to accomplish it. I believe there's a limited number of key presses allowed for text input per frame, but I never counted it.
Active player (378)
Joined: 9/25/2011
Posts: 652
Looks like I'm not going to have time to work on this until the weekend, but I'll keep you posted. Or feel free to go ahead without me if you don't want to wait. Though it looks like you may have some tasks on hand already polishing your SQ2 run, which was great BTW.
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
c-square wrote:
Looks like I'm not going to have time to work on this until the weekend, but I'll keep you posted. Or feel free to go ahead without me if you don't want to wait. Though it looks like you may have some tasks on hand already polishing your SQ2 run, which was great BTW.
No problem...I think we've accomplished quite a bit in a very short amount of time as it is.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
DrD2k9 wrote:
In the final version, I'll definitely consider rewording commands when extra frames aren't necessary to accomplish it.
I'd be happy to find the most ludicrous lists of inputs for you :)
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
Radiant wrote:
DrD2k9 wrote:
In the final version, I'll definitely consider rewording commands when extra frames aren't necessary to accomplish it.
I'd be happy to find the most ludicrous lists of inputs for you :)
I glanced at the words.tok file, there's quite a bit of variability in what is accepted. I'm sure we could come up with some strange stuff.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Arcada control room. (1) Push these out of the airlock. (2) The press is all that is left. (3) A little push for me, old sir, right? (4) Rob is flashing another sarien uniform. (5) A little swipe now at the translator. Shuttle bay (1) Push for third base now, I guess. (2) I stand now under the little rocket. (3) Push me over to the second power. (4) First from the press, autopilot is in. (5) Shut up, out of the door with you! (6) The buckle is flashing on that belt. (7) Move now to throttle me for a second. Kerona (1) Will you pick me for a little survival. (2) Another open second, out of supplies. (3) Get down for the belt will please you. (4) Get off first, craft a little for you. (5) I pick up that hunk from the mirror.
Active player (378)
Joined: 9/25/2011
Posts: 652
Radiant wrote:
Arcada control room. (1) Push these out of the airlock. (2) The press is all that is left. (3) A little push for me, old sir, right? (4) Rob is flashing another sarien uniform. (5) A little swipe now at the translator. Shuttle bay (1) Push for third base now, I guess. (2) I stand now under the little rocket. (3) Push me over to the second power. (4) First from the press, autopilot is in. (5) Shut up, out of the door with you! (6) The buckle is flashing on that belt. (7) Move now to throttle me for a second. Kerona (1) Will you pick me for a little survival. (2) Another open second, out of supplies. (3) Get down for the belt will please you. (4) Get off first, craft a little for you. (5) I pick up that hunk from the mirror.
<claps> Ha ha ha! Well done! These are going to be great. I look forward to what else you find.
DrD2k9
He/Him
Editor, Judge, Expert player (2213)
Joined: 8/21/2016
Posts: 1090
Location: US
Radiant wrote:
Arcada control room. (1) Push these out of the airlock. (2) The press is all that is left. (3) A little push for me, old sir, right? (4) Rob is flashing another sarien uniform. (5) A little swipe now at the translator. Shuttle bay (1) Push for third base now, I guess. (2) I stand now under the little rocket. (3) Push me over to the second power. (4) First from the press, autopilot is in. (5) Shut up, out of the door with you! (6) The buckle is flashing on that belt. (7) Move now to throttle me for a second. Kerona (1) Will you pick me for a little survival. (2) Another open second, out of supplies. (3) Get down for the belt will please you. (4) Get off first, craft a little for you. (5) I pick up that hunk from the mirror.
These are hilarious. Unfortunately not all can be used due to time constraints, but any that I can get on the screen for any length of time I will! Side Note: I'm FINALLY through the shuttle sequence in SQ2 after trying to make it entertaining. Now just to finish the Asteroid portion itself. Finished the SQ2 run. Just have to make the temp encode and submit.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
DrD2k9 wrote:
These are hilarious. Unfortunately not all can be used due to time constraints, but any that I can get on the screen for any length of time I will!
Great, happy to help :) I suppose that the now-cancelled run can give me an idea of where these time constraints are for commands in later parts of the game?
1 2 3 4 5 6 7