39

For those of you who don't know, Billy Mitchell, the former Donkey Kong world record champion was caught cheating due to differences between the original Donkey Kong format, and MAME. In other words, he had been using an emulator to fabricate his scores. Whether or not this is the case is not an issue to be discussed on StackExchange, however, I would like to ask why the Donkey Kong transition screen is so atypical.

Here here is an image of what I mean:

Animation of curtain closing

Notice how the screen loads kind of like a curtain closing animation. This is not a part of the game's code, and is not present in M.A.M.E.. What causes this?

  • 5
    How is the first paragraph relevant to the question? – The Vee Nov 7 '18 at 8:56
  • 8
    Just adding some background. Is that not appropriate? I'm asking honestly. – Jack Kasbrack Nov 7 '18 at 14:40
32

Ken's answer is close but not quite right.

On the real arcade hardware the signal sent to the CRT monitor is read directly from RAM as the electron beam scans over the screen. That means that whatever is shown on screen is whatever is in RAM at the moment the beam passes that area. The game's CPU takes a few frames to draw the entire play area (the girders, ladders and other graphics) and during those frames the video signal will be created from the partially drawn data in RAM.

It's actually even more subtle than that though. Look carefully at this frame:

enter image description here

You can see that girders 3, 4 and 5 on the right are partially drawn. Ignore the ones on the left, they are actually from the next frame. The beam is scanning left to right, and the CPU is rendering the girders top to bottom. The strange diagonal tear is actually due to the way the camera scans top to bottom.

Girders 1 and 2 are fully rendered by the time the beam scans over them. Girder 3 was about half way drawn, so the left half of it is not visible. At the time the beam was scanning over that area and the video signal was being generated the graphics for that girder had not been written in to RAM yet.

Girder 4 was drawn next, and you can see that the beam has moved a little further to the right by the time it began rendering. Same thing with girder 5.

MAME works a little differently. Because it is both difficult to implement and requires a great deal of processing power, rather than simulate the way the video signal is generated as the beam moves the emulator generates the entire image simultaneously. When the emulated beam is at the left hand side and about to begin generating the display, MAME reads the entire video RAM in one go. So the effect of the beam reading the RAM as it moves across the screen is lost.

Some emulators do simulate this effect, notably Amiga emulators.

  • 2
    When the emulated beam is at the left hand side and about to begin generating the display, MAME reads the entire video RAM in one go. So the effect of the beam reading the RAM as it moves across the screen is lost. To me this sounds like MAME is an extremely inacurate emulator, much like Nesticle for the NES. Many NES games uses tricks by updating video registers mid-frame - I'm surprised MAME can get away by ignoring this completely. – Bregalad Nov 6 '18 at 12:38
  • 7
    @Bregalad it depends if it is necessary for the game. Donkey Kong doesn't deliberately do any tricky beam synchronization like that, this is just an accident and doesn't affect gameplay at all. Games that use it emulate it, although they are often not really cycle-accurate, just close enough to produce identical gameplay and graphics/sound. – user Nov 6 '18 at 12:50
  • 15
    @Bregalad MAME is multi-game emulator, so they can drop precise emulation where it is not strictly necessary on per-game basis. – Oleg V. Volkov Nov 6 '18 at 14:41
  • 1
    @Bregalad MAME is actually surprisingly accurate for the amount of range of hardware it needs to support. sytems like the NES have a single system, with vast ranges of software to test against, so can exploit the time volunteers have to optimize and create specific hacks to replicate certain effects if necessary. – Ryan The Leach Nov 7 '18 at 0:07
38

This isn't a deliberate animation, it's an accident of the way the screen is being photographed, combined with the fact that a Donkey Kong arcade machine uses a CRT turned on its side.

A typical CRT draws an image by drawing many successive horizontal lines, starting at the top and working towards the bottom. The "refresh rate" indicates how many times this is done per second, so a 60Hz refresh means the screen is redrawn 60 times per second. A 60Hz refresh also means that it takes around 1/60th of 1 second to draw 1 "frame". During this 1/60th of a second, the electron beam needs to paint the entire screen top to bottom, then move back up to the top of the screen in time for the next frame.

In the Donkey Kong cabinet, the CRT is turned sideways so that instead of drawing frames from top to bottom, it's done side to side. When you take a picture of the screen, you might see that only a part of the screen is drawn; how much appears drawn depends on when precisely the picture was taken compared to where on-screen the electron beam happened to be. Cameras are typically fast enough to capture this, but the human eye won't notice.

So the 'curtain' effect is actually due to a slight timing mismatch between how fast the camera is capturing images of the screen, compared to the rate at which the screen is being redrawn. Sometimes the camera will capture the screen mid-frame, which is what you're seeing.

EDIT: There is an additional factor at work here. While the CRT is scanning from one side to the other (reading display memory as it goes), the CPU in the arcade machine is updating that same display memory in the opposite direction. If a photo is taken of the screen when the electron beam is halfway across, one side will show the current frame being drawn, while the other side will show the previous frame which hasn't completely faded from the CRT yet. This effect is clearly visible when the girders are being drawn and makes it look like the screen is being painted from both edges towards the middle.

  • 3
    So if the alleged cheat had just bothered to mount his CRT sideways, he might have gotten away with it? – Tommy Nov 5 '18 at 18:15
  • 8
    Even with a sideways CRT there are still some differences in how MAME works compared to real hardware. In real hardware, the electron beam reads memory as it goes, so changes made to the display memory might appear immediately or delayed by a frame, depending on where the electron beam happened to be when the change was made. In MAME, a 'snapshot' of the display memory is made at a particular instant, and the electron beam draws from the snapshot. This leads to screen updates appearing in much larger 'chunks'. – Ken Gober Nov 5 '18 at 22:59
  • 5
    @Tommy Using MAME itself isn't exactly equivalent to cheating persay, but it's certainly suspicious for someone attempting a WR, especially if they claim it acts like the original, and should be inspected. IIRC the only reason it was even called cheating, is that the rules of the record, was that it be performed on original hardware. MAME prides itself on accuracy, so unless intentionally modified, any differences should be fixed where possible. – Ryan The Leach Nov 5 '18 at 23:16
  • 6
    There were two cheating issues. First he said that it was real hardware, either by mistake or deliberate, which invalidates the score and casts doubt on all his other ones. Second with MAME it is possible to use save states to cheat and then play back a fake run for the video, so even if MAME were verifiably identical to the real hardware no MAME run that wasn't witnessed live could be trusted. – user Nov 7 '18 at 9:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.