Some 60 tapes out of my collection went from successful playback under 4.1.4.2 to failure under 4.2.0.0. I told you that some were failing because of the addition of wraparound: in the case I saw, the player had been pushing against the steel wall at the edge of the level, so wrapped around in the new playback. I suggested you recognize tapes from older RnD EMC engine and disable wrap when playing them back. You reported that this fixed 22 of the problem tapes.
Since then I've watched playback of the other 38 problem tapes and characterized the problems as follows:
Code: Select all
Tapes that succeed with 4.1.4.1 but fail with 4.2.0.0 + selective disable of wrap
=================================================================================
emc_amiga_mine_18 22: ACM ??
emc_bond_mine_16 41: IRM
emc_diamond_mine 28: ACM ??
emc_elvis_mine_4 14: ACM ??
emc_elvis_mine_5 19, 37: RND
emc_elvis_mine_6 18: ACM ??
emc_elvis_mine_6 56, 71: RND
emc_elvis_mine_7 3, 35: ACM -> RND
emc_elvis_mine_7 30: ACM???
emc_elvis_mine_8 3, 11, 23, 33, 73: ACM??? -> RND
emc_elvis_mine_8 34, 48: ISM (48 not solvable because spring blocks passage?)
emc_elvis_mine_8 55: UNK
emc_emc_mine_3 60: ISM or ACM -> RND
emc_emc_mine_4 52: ISM + MBD
emc_emc_mine_4 75: ACM
emc_emc_mine_5 28, 32, 64: ACM?
emc_emc_mine_5 54: RND
emc_emc_mine_5 66: IBM
emc_emerald_dash_32 0: ACM -> RND
emc_emerald_dash_34 44: ISM
emc_emerald_eater_2 34: FAM / ACM?
emc_emerald_mine_03 42: ACM -> RND
emc_emerald_mine_08 74: YMC
emc_emerald_mine_20 77: YMC
emc_exception_1 25: BXP
emc_down_under_mine_17 68: ACM
emc_emc_mine_2 17: ACM ??
ACM: acid mobility differences (difference in timing or order things fall in?)
BXP: packed-bug explosion differences (pattern of emeralds vs diamonds)
FAM: fake acid mobility differences
IBM: initial bomb movement \ these things move into a space when they're created, even if
IRM: initial rock movement | player's there (player dies). also other differences in when
ISM: initial spring movement / or whether they are allowed to move at game start or creation
MBD: magic ball destruction
RND: something caused random sequence to differ
YMC: difference in interpretation of yam contents out of level file?
The ones about 'initial movement' and MBD look like probable bugs in the new engine. When something like a spring is suddenly created (e.g. by magic ball or yam), it starts out moving; this is normal. But that initial move is allowed to go through things it wouldn't normally be able to traverse. This kills the player in some of the tape problems. In one (emc_elvis_mine_8 48), created springs penetrate into a passage and block access, making the level unplayable at all -- strongly implying this behavior did not exist in this exact form back on the real EMC engine.
And on emc_emc_mine_4 52, springs being created by magic balls actually end up destroying those magic balls, surely not correct operation.
The one about yams looks like a bug in the old EMC engine. The new one 'sees' various contents in yams (visible in the level creator) which just aren't present in the old engine. For correct playback of old-RnD-EMC tapes, emulation of that bug is necessary.
'RND' is sort of a cop-out, all I can see is that random actors like yams are operating off a different random sequence. Sometimes the cause is apparent, other times I shrug... Hopefully, once the actual bugs are fixed + backwards-compatible playback hacks added, those will just mysteriously start working...