ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.07k stars 778 forks source link

Timing/bug (?) on https://625.uk.com/tv_logos/flash/rediffusion_black_clock.asp ? #2119

Open aswiseman opened 3 years ago

aswiseman commented 3 years ago

There's a strange bug with the following Flash clocks...

https://625.uk.com/tv_logos/flash/rediffusion_black_clock.asp https://625.uk.com/tv_logos/flash/rediffusion_clock.asp

Wasm versions: https://625.uk.com/tv_logos/flash/rediffusion_black_clock.asp?wasm=1 https://625.uk.com/tv_logos/flash/rediffusion_clock.asp?wasm=1

These feature analogue hands with a digital display underneath. The digital display is meant to be a split-flap type.

When the Flash file starts, it sets the time and the digital display animates to show the digits 'rolling' (as you would see on an old airport / railway indicator board).

But with the Ruffle emulator, only the first frame of animation happens, which means each digit is one behind (so if it's 12:34, the display shows 01:23).

The analogue hands continue moving as normal throughout. And once every minute, the digital display updates correctly - so if you leave the clock running long enough, each digit will correct itself.

Interestingly, I have another split-flap clock and that's working just fine in the emulator...

https://625.uk.com/tv_logos/flash/westward_clock.asp https://625.uk.com/tv_logos/flash/westward_clock.asp?wasm=1

Herschel commented 3 years ago

This is a frame execution order bug; the order that Ruffle runs the clips in: Digits reel frame (stop) Clock.onLoad (tells digit to gotoAndPlay)

Ruffle runs it in this order: Clock.onLoad (tells digit to gotoAndPlay) Digits reel frame (stop)

Similar to #1818.