Need help detecting cheaters.

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

sois
Posts: 13
Joined: Wed Nov 23, 2005 11:30 am

Need help detecting cheaters.

Post by sois »

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.
Image
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

When do you need this program by?
sois
Posts: 13
Joined: Wed Nov 23, 2005 11:30 am

Post by sois »

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.
Image
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

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.
User avatar
teaguecl
Posts: 211
Joined: Thu Oct 21, 2004 4:02 pm
Location: San Diego

Post by teaguecl »

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.
sois
Posts: 13
Joined: Wed Nov 23, 2005 11:30 am

Post by sois »

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.
Image
User avatar
kode54
Posts: 67
Joined: Mon Jun 06, 2005 12:47 pm
Contact:

Post by kode54 »

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.
sois
Posts: 13
Joined: Wed Nov 23, 2005 11:30 am

Post by sois »

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.
Image
User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg »

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.
sois
Posts: 13
Joined: Wed Nov 23, 2005 11:30 am

Post by sois »

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.
Image
sois
Posts: 13
Joined: Wed Nov 23, 2005 11:30 am

Post by sois »

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.
Image
User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg »

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.
User avatar
teaguecl
Posts: 211
Joined: Thu Oct 21, 2004 4:02 pm
Location: San Diego

Post by teaguecl »

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?
User avatar
Quietust
Posts: 1920
Joined: Sun Sep 19, 2004 10:59 pm
Contact:

Post by Quietust »

FCE Ultra supports movies, save states, and online play (though it requires an additional 'server' program). What else do you need?
Quietust, QMT Productions
P.S. If you don't get this note, let me know and I'll write you another.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

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.
Post Reply