Hey guys. I did some experimenting yesterday and today.
First thing: A while back I was impressed how Windeu's Lolo 3 .fmv walkthrough manages to run in FCEU for at least a few levels. I figured maybe the mechanics of deterministic properties of this game would make it easy to completely convert, so I tried my hand at that. Big mistake! This game has so many little lag spots that I had to insert about 100 bubbles to make it all the way to the end. I didn't want to quit after making it partway through, so I finished this last night:
windeu-lolo3.fcm
I had to redo the Medusa fight due to her teleport destination apparently being affected by prior events, so I played crappily there and copypasted it, but all the other fixes were done just by inserting bubbles with nesmock. At the very least this might help for anyone who needs a reference for the later levels and doesn't want to open Famtasia. Next time I have a whim to dedicate time to converting a whole .fmv, I promise I'll instead do a published movie that people have a desire to watch.
Second, I've been wanting to test my theory that something like a Lolo game could work well with a coordinated copypasting effort, much like the full runs of Super Mario World and Super Demo World were handled. I wrote a program that automates concatenation of .fcm files through calls to nesmock. I figured a good candidate to demonstrate it on would naturally be the enormous puzzle world of Lolo 3. Alas, another bad idea! Even within FCEU past this game changes the way lag bubbles appear later depending on how earlier levels are completed. Here is the end result, a full game demo based on pieces from Food's twitch run, Randil's run, and Windeu's walkthrough:
combined.fcm
And, here is an explanation of my proposed tool and the format used to build it.
# Sample nescat input clips list file.
# Usage: ./nescat <clips file> <output file>
#
# Tells which .fcm files and the range of frames to concatenate into one movie
#
# requires a list of entries in this format:
# <movie file> <start_frame> <end_frame>
#
# <end_frame> is actually the first frame _after_ the last frame in a clip.
# It's done this way so that the number of frames added by each entry can be
# calculated by subtracting <end_frame> minus <start_frame>.
#
# Also, this makes your frame of reference the same for both start points
# and endpoints. For instance, if the <end_frame> of your first clip is when
# the screen touches black. Your <start_frame> frame for the second clip should
# also be when the screen touches black, not one frame more or less.
#
# Use -1 for <end_frame> as an indicator to read a clip all the way to the end.
bomf.fcm 0 2625 # Food's twitchy 1-1 through 1-3
randil.fcm 2618 13929 # Randil's 1-4 through 3-3
windeu-lolo3.fcm 14860 42940 # Uses Windeu's walkthrough for the rest
windeu-lolo3.fcm 42939 42940 # account for 1 frame of lag on 4-3
windeu-lolo3.fcm 42940 63943
windeu-lolo3.fcm 63944 66994 # account for 1 frame less lag on 6-2
windeu-lolo3.fcm 66991 69700 # account for 3 frames of lag on 6-3
windeu-lolo3.fcm 69701 70465 # account for 1 frame less lag on 6-4
windeu-lolo3.fcm 70466 77531 # additional disjoint 1 frame less lag on 6-4
windeu-lolo3.fcm 77530 82014
windeu-lolo3.fcm 82030 82047 # account for 16 frames less lag on 7-4
windeu-lolo3.fcm 82060 117524 # account for 13 more frames reduced lag
windeu-lolo3.fcm 117523 117721 # account for 1 frame of lag on 9-5
skull.fcm 0 166 # boss battle from save-state
skull.fcm 165 493 # gosh, even this one has an unexplained desync
windeu-lolo3.fcm 118202 130924 # Windeu's resumed an extra 20 frames later, maybe I
# press start/select at some point?
windeu-lolo3.fcm 130925 154464 # account for 1 frame of lag on 10-5
windeu-lolo3.fcm 154465 155751 # remove the formerly lag-masked press of the A button
windeu-lolo3.fcm 155752 156961 # account for 1 less frame of lag on 12-2
windeu-lolo3.fcm 156960 160952 # and 1 more frame too
windeu-lolo3.fcm 160950 162721 # account for 2 less frames of lag on 12-4
windeu-lolo3.fcm 162722 164856 # another 1 less frame
windeu-lolo3.fcm 164857 174580 # 1 frame less lag on 12-5
windeu-lolo3.fcm 174578 174994 # 2 frames of lag on 13-3
windeu-lolo3.fcm 174996 179533 # then 2 frames less lag
windeu-lolo3.fcm 179532 197895 # 1 frame of lag on 13-5
windeu-lolo3.fcm 197894 207000 # 1 frame of lag on 13-10
windeu-lolo3.fcm 206999 225697 # 1 frame of lag on 14-2
windeu-lolo3.fcm 225698 229395 # 2 frames less lag on 15-3
windeu-lolo3.fcm 229394 230506 # lag, so pause to get the second shot off on 15-4
windeu-lolo3.fcm 230505 237350 # another 1 frame of lag
windeu-lolo3.fcm 237348 237542 # 1 frame of lag on 16-1
windeu-lolo3.fcm 237541 251174 # and another
windeu-lolo3.fcm 251172 254281 # 1 frame of lag on 16-5
windeu-lolo3.fcm 254279 265115 # 2 frames of lag on 17-1
windeu-lolo3.fcm 265116 280100 # 1 frame less lag on ?-?
windeu-lolo3.fcm 280099 -1 # 1 frame of lag on 17-8
bomf.fcm (bubbles inserted with nesmock to avoid desyncs after power-on
randil.fcm (same one he posted above)
windeu-lolo3.fcm
skull.fcm
As you can see about 30 desync points resulted as a consequence of changing earlier parts of the run. This amounts to about one third of the levels, and playing levels again is generally much easier than trying to fix the desync points with nesmock anyway. Lolo games are relatively easy to re-play through once puzzles' strategies are known, so a tool like this might not help much here. Any idea of other long games--that maybe aren't unfriendly with randomness or lag--for which this tool might be of good use?