Was the game played on unmodified hardware? No.
On that basis alone I can understand why a decision may be made to reject the submission. Robbie is an AWESOME DK player and he hasn't tried to hide anything, but did he stick to the expected norm of playing the game on unmodified hardware? Apparently not.
Do the following reasons allow for an exemption to playing on unmodified hardware?
- "He was trying to cheat", or
- "He was trying to cheat, but it didn't work"
I think it's disingenuous to provide a special exemption for someone trying to cheat, when they can simply opt to play on unmodified hardware.
5. DKF members as well as players from across the world claimed outright that it is IMPOSSIBLE to affect gameplay by lowering voltage. The code was analyzed by a great young man (Tanner) and it was confirmed.
6. Nobody knows the affect that power voltage could have on the inner physics of the electronics on these 40 year old machines. Not unless they take multiple machines and study them forensicly, running test code through them over and over. I would seriously love to take part in that.
I would LOVE to read/watch/hear about Tanner's analysis! I figure I have missed out on this so please fill me in. I must admit I would have thought the processing of a DK board would fail spectacularly if voltage was altered beyond a certain point, however this video -
https://www.twitch.tv/videos/469199132 (the 20M+ DK game) suggests that meddling with the electronics can create multiple glitches but yet allow the game to be playable.
Point 6. above seems to contradict point 5. We don't know if changing the voltage has an effect. I don't think it is reasonable that a player should be allowed to meddle with the hardware and then move the onus of proof (that it didn't affect gameplay) onto the community. As you say, no one knows. It is like Billy Mitchell demanding that every possible DK hardware setup in the known universe has to be tested to show that it doesn't show "the finger".
I think the basic suggestion is "How can changing the voltage effect just the RNG on barrels?" Well, I am a total noob at this but have done a bit of analysis myself (using the popular disassembly). I'm not sure who else has looked at what but I am happy to learn and happy to be corrected if I am mistaken anywhere. The RNG is DK is quite interesting. It's not consistently applied, but locations #6018, #6019, #601A are used in various situations to provide RNG. For example #6018 is used for blue barrel smashes (300 Vs 500 Vs 800) and wild barrels, #6019 is used to animate the oilcan fire, whereas a subroutine from #0057 (below) combines the lot for pie production -
; #6018 = constantly changing ... timer of some sort?
; #6019 - constantly changing timer - very fast
; #601A - Timer constantly counts down from FF to 00 and then FF to 00 again and again ... 1 count per frame
; this subroutine takes the value of #6018 and adds into it the values from #601A and #6019
; it returns with A loaded with this result and also #6018 with the answer.
; random number generator
0057 3A1860 LD A,(#6018) ; load A with timer
005A 211A60 LD HL,#601A ; load HL with other timer address
005D 86 ADD A,(HL) ; add
005E 211960 LD HL,#6019 ; load HL with yet another timer address
0061 86 ADD A,(HL) ; add
0062 321860 LD (#6018),A ; store
0065 C9 RET ; return
I think the fireball / ladder RNG is determined by #3221 in the code:
; fire is moving left or right, not on a ladder
3216 DD7E19 LD A,(IX+#19) ; load +19 value. has 2 when random event occurs when firespeed > 2
3219 FE02 CP #02 ; compare with 2. has this fire been targeted with reversal
321B CA7E32 JP Z,#327E ; if equal jump away, check for firefox change direction, returns to #3229
321E CD0F33 CALL #330F ; call check to change direction. randomly reverses direction if timer is correct
3221 3A1860 LD A,(#6018) ; load A with random number
3224 E603 AND #03 ; mask bits, now between 0 and 3. is it zero?
So this particular aspect (fireballs changing direction up a ladder) appears to rely solely on #6018. But what is #6018? I suspect it is the Z80's refresh register, which increments with
every line of instruction / machine code. This seems to me to be a terrible overhead, but it does provide a great source for semi-random numbers. So as the game plays and loops through various lines of code the last two bits of #6018 will provide a decent RNG. If, for example, #6018 was affected by a voltage change and reset several times a second we could end up with a quite non random RNG, which WOULD affect gameplay. I see no way we could rule this out as a possibility (unless of course the game was played at a standard voltage). I would suggest that #6018, #6019, and #601A are not mere memory locations in the code but are key memory locations tied to the essential operating of the chip.
We can't test every possibly in the known universe, but I would be interested to know if the function of memory registers #6018 and #6019 change when voltage is altered.
PS. I love Datagod's question of whether praying would be cheating! I guess if it was phrased as "I sold my soul to the devil for an extra 5% in points!" there would be devout people saying "No! Deals with the devil are not allowed!"
TLDR: Was the game played on unmodified hardware? No.