I started a thread initially in the Newbie Corner, and at the recommendation of the folks there I am moving my questions and updates to a thread here to track the specific progress of the game.
I've found some very good resources already on routing and tactics for Crystal Caves. The version I am using is what comes packaged with the Steam version that runs via DOSBox, which contains all 3 episodes. Eventually I would like to create a TAS for each, but my initial goal is to complete Episode 1, which we all know and cherish from the early days of shareware.
To test things initially, I dumped my test recording and successfully converted it to an avi. I learned a few things in the process, most notably that the sound for the game appears to be working correctly (even though you don't hear anything on JPC-RR) and that the video plays back at the correct framerate and aspect ratio. My biggest concern, of course, is the really ugly artifacts that appear up through the beginning of the actual gameplay. These were visible while running JPC-RR itself, so I don't know if it's an issue with the emulator, the game, or something else.
Link to video
This is my first exposure to TAS and JPC-RR, so I'm sure I've already missed something during the initial setup. Any commentary is welcome. This video is not intended to be anything more than a proof of concept; I will be starting a new recording to perform the actual run.
My current JPC-RR configuration is as follows, again let me know if I should deviate from the defaults on anything:
You can't see the full module line in the image, but it's just the default values that came with the software:
If there are any additional modules that are standard or recommended for running DOS games, please let me know. I am also using the current 11.7 release, though I have been pointed to c-square's enhanced fork and should probably investigate that. Thanks in advance for all the assistance; I'm already standing on so many shoulders that I'll need to maintain a sub-post just to provide proper thanks to all the people who are making this possible.
I was able to replicate the glitchy video as you are experiencing it. Using the same settings as you.
The video issue is somehow tied to the version of FreeDOS.
I then tried running the game with a newer (and more robust) version of FreeDOS. The video was clean.(I'll post a video as soon as youtube lets me upload).
The version of FreeDOS I used is the newest version available from the FreeDOS website. I had previously created a new image with this version for CD testing. My new version, however, is an HDD image instead of a Floppy image.
So to use my version in JPC-rr, you have to mount the FreeDOS image in hda and change the boot setting at the bottom of the assembly window to hda instead of fda.
Mount the game image in hdb. hdb will be drive D:
I can get you guys this new FreeDOS image if you like. I do not have an account anywhere that offers indefinite file hosting, otherwise I'd just post a link to the image here.
Other features of my FreeDOS image:
1) More memory settings/options upon bootup
2) CD-ROM support (if the fdconfig.sys and autoexec.bat files aren't skipped).
3) 1:1 mouse support as default instead of accelerated mouse movements
Any runs using my version of FreeDOS will have slightly longer boot times than those using the current FreeDOS.
If you guys get and like the new version, I'll contact the site admins and see what it would take to update the JPC-rr page to include my version as an option.
Moderator, Senior Ambassador, Experienced player
(906)
Joined: 9/14/2008
Posts: 1014
Let me know what changes you want. We can probably also arrange for you to be an editor so you can update it yourself (assuming you're talking about the WIki entry on TASVideos at Wiki: EmulatorResources/JPC that is).
I sent you a PM with details.
Also, I may be able to update the current Floppy image of FreeDOS to default the mouse to 1:1 as well. I'll let you know asap.
I can get you guys this new FreeDOS image if you like.
Yes, please!! The 1:1 mouse ratio is reason enough for me to go to this.
I sent you a PM with details.
Also, I may be able to update the current Floppy image of FreeDOS to default the mouse to 1:1 as well. I'll let you know asap.
Thanks for the tips, friends! I downloaded the latest floppy image from FreeDOS, which did clear up the artifacts. This recording went through the first level:
Link to video
There's probably a few frames worth of improvement; because Milo jumps a fixed height there are a lot of jumps and bumps that appear to lose a lot of momentum. I tested a lot of different angles and distances on each jump to minimize frame loss, but I will not be surprised if someone with more experience could trim a few frames off this.
I've been warned by the runners in the Crystal Caves speedrunning Discord server that RNG for enemy movement and falling rocks will probably present issues on future levels. I've noticed that the movie I've recorded has identical movement for the green slimes each time that I've run it, so I would like to know if a movie uses the same RNG seeds each time it runs. I really hope I don't have to dig into doing RNG manipulation and memory editing if I can help it.
I've been warned by the runners in the Crystal Caves speedrunning Discord server that RNG for enemy movement and falling rocks will probably present issues on future levels. I've noticed that the movie I've recorded has identical movement for the green slimes each time that I've run it, so I would like to know if a movie uses the same RNG seeds each time it runs. I really hope I don't have to dig into doing RNG manipulation and memory editing if I can help it.
The RNG should always be the same for each play of the movie because the factors that alter the RNG are the same. Factors can include (but aren't limited to) any previous key presses as well as RTC time. JPC-rr sets the RTC to a set time at assembly, and that information is saved in the movie file; so the movie played back will always have the same RNG.
Some notes/thoughts on your test run:
1) I believe the intro video of the ship flying around in space can be skipped.
2) There is a glitch that allows for skipping two of the stages. I'm not sure how it works, but i've seen RTA runners do it, so they may be able to help explain how to perform the glitch and maybe even why it works.
Yeah, the intro can be skipped just by pressing enter. Other than that, the run seems pretty sound so far.
As far as RNG, I wouldn't sweat it too much. From a first glance it looks to me like there isn't any easy way of doing RNG manipulation, so you may just have to deal with the hand you're dealt. If you really want to alter the RNG for the whole run, you could change the initial time in the movie file (line 13) and see if that changes anything. Another thing that might work is delaying entering a level by a certain amount of frames to get different enemy/rock patterns for that level.
My heart sinks at the reminder that the movie can be skipped, since that means I'll need to start the whole run all over, lol. On the other hand, it means I can fix the small errors that I know I made in the first couple rooms. I lost a frame in level 2 for getting the Perfect Health bonus by not damage boosting off a spider, and I'm sure there are some jumps that I can improve.
That's awesome news about the RNG not changing between runs, though. As long as my timed shots will always connect, there's plenty of ammo to spare.
While I rebuild the run and cut out the intro, here are the results of my learning run:
Link to video
I get to play Chicken with a couple boulders, and I really like how the timing works out for the reverse gravity in the boulder level as well. Making this is even more fun than I was expecting!
I made some nice improvements to the first room, but the RNG for the falling rocks level is significantly worse. Waiting a few frames (or even a few seconds) before entering the level doesn't seem to change the rocks that fall, so for right now I'm just going to play the hand I've been dealt. Just watching them on replays it seems like there's a fixed cycle of rocks that fall once the level begins, and I don't think I'm likely to save time spending extra seconds hoping for a different (not necessarily better) rock seed. I've already hit 3 rocks that I'll have to wait on, and I can only damage boost off 1 since I need to damage boost off the spiders at the end of the level. I guess this means I should focus on making those segments entertaining rather than optimal since I can't just plow through them.
Joined: 6/9/2005
Posts: 171
Location: Southern California
Are you sure the time saved taking damage twice in the Reverse Gravity stage is faster than saving a hit for later, in the upper right of the level?
Looks nice so far. :) Amazing how much of the levels is optional, if you stick strictly to the crystals!
I wound up re-recording a few levels (which meant playing back the movie and over-writing sections), so hopefully the finished product will be a bit more polished. There are a few sections that I might be able to improve, though it's especially hard to choose damage-boosts because of enemy movement RNG. In general, I've tried to damage boost in areas that are guaranteed timesaves even if a theoretically optimal boost would be better elsewhere based on enemy or obstacle timing. One of my major re-records was to conserve ammo and pick up more guns when I found myself in a level with only 2 shots remaining and 6 shots worth of enemies to get through, so there's also some sub-optimal movement for those reasons.
I'm heavily indebted to pidgezero_one's routing. There a few jumps that I've been able to improve significantly and I have the obvious luxury of frame-perfect dodging and landing, but the overall strategy follows her course very closely.
Also, since this is my first TAS, while I am striving to do the very best that I can to get 100% optimal routing and performance, I'm certain that I will overlook something from lack of experience, or leave a slightly suboptimal movement because they're *really* hard to fix with this tool. There are also likely a few sections that could improved through creative/unintuitive routing, but for a simple game like this one there are fewer opportunities to improve upon the current strats. Even between my abandoned trial and the second run I found spots where I could save a frame or two by adjusting my jump positioning, so I'm not going to be arrogant enough to assume that my very first attempt can't or won't be bested.
Overall, thank you all for the feedback and continued support! I've finished 10 out of 16 levels, but I think I'll wait til I knock out the remaining 6 before I share the final result. Progress is a little slower than I expected (work, children, and my own distractability being the primary obstacles) but it's surprisingly relaxing to calmly work through the levels.
I made some nice improvements to the first room, but the RNG for the falling rocks level is significantly worse. Waiting a few frames (or even a few seconds) before entering the level doesn't seem to change the rocks that fall, so for right now I'm just going to play the hand I've been dealt.
A common implementation of randomness on the DOS platform has the random value only change each time the random() function is called. That means that delaying will not do anything for you unless there is some object or enemy active that has random behavior.
Playing levels in different order may help. Changing the system clock at JPRR startup will usually help.
Looks pretty good.
On the first level, I'm pretty sure getting those translucent gems (from bumping into the ceiling) is optional. On the fourth level, there appear to be two spots where you shoot a block while standing next to it, whereas you could probably have kept your momentum if you shot it earlier. HTH!
Yeah, the transparent gem pickup is purely an artifact of jumping for the gems. Thus far I think those 2 in the first level are the only ones I've picked up.
The timing windows for shooting is kinda weird; when you shoot, you pause for a frame, and it's especially noticeable depending on which portion of the walk animation you interrupt. It's smoother if you fire just while walking. Once you fire, only one projectile can be onscreen at a time, and you can't fire a shot until the explosion from the previous one has completely disappeared, and the collision detection for them is pretty unforgiving if you fire too soon while falling.
Level 6 (Low Gravity) is especially bad because in addition to the paused frame you actually have 2 frames of recoil per shot. Combined with a maze with lots of narrow vertical spaces, there are a lot of repeated jumps that look really wasteful by TAS standards that I found were unavoidable after a lot of experimentation. I've got some pretty neat jumps that I was able to figure out despite that, but in the absolute sense it doesn't actually affect the run because you get stuck waiting for a hovering platform at the end of the labyrinth. The level ends with shooting through 3 blocks in a row, which took the same amount of time whether I fired on approach at the beginning of the level or at the end (thanks to the delays imposed by the 1-shot-on-screen limitation).
I realize I let this thread sit for a long time without updates, but I had to spend a week with my 18-month old in the hospital after he had a terrible allergic reaction and I put this on the back burner while catching up with other lifely duties in the aftermath. He's all back to his adorable normal self now, and I've finally had a little time to get back to this.
Link to video
This is my final result. I think this could be improved if I can find some RNG manipulation to change the seed for the dropping rocks, and on the very last level I might be able to figure out a path that avoids the wait for the platform and heads back over the robots and spikes since there aren't any crystals up there, but the movement cycles and starting positions aren't something I've figured out in the time I've been able to give the project.
I'll submit the JRSR file through the appropriate channel before too long, but I thought I'd revive this thread to share my work! This includes clicking through the closing dialogue screen and entering a high score. Total time for the run from boot is ~20:15, 50 seconds under the current human world record is 21:05, so there's definitely some time saved in being able to make perfect jumps and narrowly avoid collisions.
Looks good, great effort! Also, sorry to hear about your little one, and glad to hear he's better now.
One thing I'm not sure about: at 5:10 and 6:44 in your youtube encode, you jump before the gravity pill expires, so that you're lower down when gravity reverts to normal and you have less distance to fall. But you're not at the apex (nadir?) of the jump when gravity reverts, so it looks like you could be even lower down if you timed your jump more carefully. Would that save time?
At 12:42 it looks like you could save time by jumping a little earlier, but again it might be an illusion.
I enjoyed when you killed the wall enemy with the power pill at 13:45. At first it just looked like entertainment value, since it might not be that well known that those enemies are killable at all, but then on the return journey it looks like it's an actual timesaver. More generally, I enjoyed the enemies you killed with the "splat" on the wall where it looks like you missed at first, only for the enemy to die anyway.
16:03: most annoying air generator in the game! I died so many times to this one!
This was a favourite game of my childhood, and it's enjoyable to see it nimbly beaten. It's also a bit sad in that although I have fond memories of it, going back and revisiting it shows me that it just isn't as good as I remember, especially compared to contemporaries on SNES/Genesis. Nostalgia's a hell of a thing, isn't it? :)