Hello All,
I run an online Tecmo league and there is one problem that is difficult to detect.
TURBO.
I was wondering if there were any rom programmers out there who could design a rom who detected how fast the buttons were being pressed. The rom should just have player 1 and player 2 and the speed and total presses they press the A button.
I am trying to run a solid league, but cheaters are bringing it down.
Thanks all.
When do you need this program by?
It is not a major priority, but the sooner the better.
We found a cheater by loading a nesticle movie from one rom to a different rom. It desynched and started doing weird things (which was expected). We were just waiting for it to show rapid a button taps (which it did eventually). So we had to fire a guy from a league.
Thanks for the quick response.
sois wrote:
It is not a major priority, but the sooner the better.
We found a cheater by loading a nesticle movie from one rom to a different rom.
"nesticle movie"? Which emulator is your league using? I want to know if I have to make my ROM compatible with obsolete emulators or if I can just target emulators with decent support for NES hardware.
It sounds like mofifying tecmo bowl to detect turbo might be difficult. Maybe it would be easier to standardize your league onto one specific emulator, and modify that emulator to detect turbo. You'd probably need to have the emulators detect modifications to themselves as well, as is common with many networked games.
We use netsicle cause it supports movies, save states and online play.
All we would need is a rom that just shows the button presses per second. It doesn't need to have anything to do with the tecmo rom.
What my plan is to do is this:
random steroid "turbo" testing.
Take a movie, play it with this new rom and it will just show the button presses. I think nesticle movies are just recorded button presses.
And an initial save state, which would probably make your tester blow up.
If all you are doing is testing the movies for rapid button presses, writing a native program that parses the movie file should be a lot easier than programming a NES game that polls the inputs. Plus, it will be able to scan faster than real-time.
I thought about writing a php script to look at the movie file and see if someone is turboing, but I don't know what snippet of code to look for.
I worked at reverse-engineering the Nesticle movie format fairly recently and it was simply (as I remember) a save state followed by joypad data. The joypad data seemed to only be added for every frame that the joypads were strobed, so it wouldn't get added during pauses where the game wasn't polling them. A tool could easily be written that scans the joypad data and reports the minimum number of polls between presses of each button, but it wouldn't be able to determine the time interval due to the conditional recording mentioned above; to get the time interval the movie would have to be played back.
Can't you discourage cheating through other means, i.e. make it less fun than it's worth? Adding this kind of screening of movies (especially if it's random and unannounced) might make cheating more fun since it adds to the challenge.
blargg wrote:
Can't you discourage cheating through other means, i.e. make it less fun than it's worth? Adding this kind of screening of movies (especially if it's random and unannounced) might make cheating more fun since it adds to the challenge.
Any ideas on how to do that? It doesn't have to be random testing. It can be every game if i can write a script to detect turbo.
blargg wrote:
The joypad data seemed to only be added for every frame that the joypads were strobed, so it wouldn't get added during pauses where the game wasn't polling them. A tool could easily be written that scans the joypad data and reports the minimum number of polls between presses of each button, but it wouldn't be able to determine the time interval due to the conditional recording mentioned above; to get the time interval the movie would have to be played back.
This is precicely why I wanted a rom that just shows the button presses. Cause you have to watch the movied to detect the cheating.
The reason I know this works is because we played a movie meant for a specific rom on a different rom. It desynched and you could see the super turboing in action on the screen.
What I would do is record the game in nesticle and play it back on this cheating test rom.
I would have to watch the movies but that is no problem.
Quote:
What I would do is record the game in nesticle and play it back on this cheating test rom.
If you think this will work, you could try it on one of the already-available NES test ROMs that display the current joypad buttons pressed. I guess they might need a slight modification to skip past the menus.
sois wrote:
We use netsicle cause it supports movies, save states and online play.
Not to get too far off topic, but this should be a wakeup call for all of us here developing emulators. The best tool available for this league is Nesticle, which is a real shame. I think it's concensus around here that Nesticle is not preferred, but we haven't produced an alternative that is sufficient for these users. How hard would it be to add the missing things to FCEU?
FCE Ultra supports movies, save states, and online play (though it requires an additional 'server' program). What else do you need?
Nesticle also supports PCs that are considered slow today but which were affordable during the late 1990s bull market, when unemployment was low. A lot of people haven't been able to afford a new PC since. FCE Ultra, on the other hand, has the (nice-sounding but CPU-hogging) Festalon audio engine.
Quietust wrote:
FCE Ultra supports movies, save states, and online play (though it requires an additional 'server' program). What else do you need?
The 'server' problem is the main issue.
Also, there was a version of FCE that supported direct connect, but it often desynched during gameplay.
Sadly, nesticle is the best option. I'd love to use a new emulator. Maybe the tecmo community can come together and commision you guys to get us an emulator that does:
turbo check
movie recording
save states (possibly even allow save states on disconnected games)
direct connect online play
So, i think the simple rom that only detects button presses will do to finish the situation.
Anyone want to take on this project?