regression (or tape compatibility issue)
Posted: Fri Dec 04, 2020 12:54 pm
Regarding The Exception One level 25 (levels/Emerald Mine Club/emc_exception_1/25):
My tape made under 4.1.4.2 (which I believe you have) works under releases 4.0.0.0-4.1.4.2, but fails under 4.2.0.0 and later; i.e. new EMC engine.
The cause is immediately obvious at the start of the level. You don't even need a tape. Oh, you need 'small graphics' turned on so you can see the bad action.
In the lower left corner of the level, there is an acid pool next to a steel wall. On top of the steel is an emerald.
In the old engine, the emerald is fine; in the new, it falls into the acid. Both seem like potentially valid choices, but can the new engine emulate the old when playing an old tape? Or is this one of those things that's too ugly to fix in the engine code?
The level is 10000% solvable without any change; it has plenty of extra coinage, those 2 emeralds aren't needed. The tape fails only because I followed my general policy of only eating as much goodies as needed to exit the level. In fact if I had eaten *1* more emerald, it would have succeeded and I wouldn't have noticed the discrepancy.
That's one of the 5 remaining levels in my tape collection which solve only under 4.1.4.2. There also remain 2 which solve only under 4.0.1.0 (not earlier and not later!)
Wait! I figured out why, and fixed those 4.0.1.0-only tapes, and now they work on 4.2.0.5 and I assume all versions in between. The problem: they were run on a binary which had 4.0.1.0 changes in it, but stamped the save file 4.0.0.2, so future versions applied the wrong engine fixes. I patched the tapes to say 4.0.1.0 and now they work.)
So now just 5 4.1.4.2-and-earlier tapes. I half-remember that we already figured out the problem was acid behavior and it was too ugly to fix in the new engine...?
=====
Another bug I've seen for a long time but never mentioned (that I remember): when interactively playing back a tape, if you die before the end of the tape (as might happen with a tape from a different release), the tape counter resets to length-of-tape after you die. This makes it harder than necessary to figure out the actual death point. e.g. I open a level, hit '555' (warp), die at 3:30, and tape counter says 6:15. The time counter does show the right number, except it's still ticking after death.
My tape made under 4.1.4.2 (which I believe you have) works under releases 4.0.0.0-4.1.4.2, but fails under 4.2.0.0 and later; i.e. new EMC engine.
The cause is immediately obvious at the start of the level. You don't even need a tape. Oh, you need 'small graphics' turned on so you can see the bad action.
In the lower left corner of the level, there is an acid pool next to a steel wall. On top of the steel is an emerald.
In the old engine, the emerald is fine; in the new, it falls into the acid. Both seem like potentially valid choices, but can the new engine emulate the old when playing an old tape? Or is this one of those things that's too ugly to fix in the engine code?
The level is 10000% solvable without any change; it has plenty of extra coinage, those 2 emeralds aren't needed. The tape fails only because I followed my general policy of only eating as much goodies as needed to exit the level. In fact if I had eaten *1* more emerald, it would have succeeded and I wouldn't have noticed the discrepancy.
That's one of the 5 remaining levels in my tape collection which solve only under 4.1.4.2. There also remain 2 which solve only under 4.0.1.0 (not earlier and not later!)
Wait! I figured out why, and fixed those 4.0.1.0-only tapes, and now they work on 4.2.0.5 and I assume all versions in between. The problem: they were run on a binary which had 4.0.1.0 changes in it, but stamped the save file 4.0.0.2, so future versions applied the wrong engine fixes. I patched the tapes to say 4.0.1.0 and now they work.)
So now just 5 4.1.4.2-and-earlier tapes. I half-remember that we already figured out the problem was acid behavior and it was too ugly to fix in the new engine...?
=====
Another bug I've seen for a long time but never mentioned (that I remember): when interactively playing back a tape, if you die before the end of the tape (as might happen with a tape from a different release), the tape counter resets to length-of-tape after you die. This makes it harder than necessary to figure out the actual death point. e.g. I open a level, hit '555' (warp), die at 3:30, and tape counter says 6:15. The time counter does show the right number, except it's still ticking after death.