NESBot: SMB2 <-- Now featuring a virtual controller!
I'm hoping to try a few super gameboy games when I get the SNES version of this working too. I don't know enough about how gameboys work yet to give you a definite answer, but I'm not crossing out the possibility of it working. I'll research it more, but of course I'll have to buy a gameboy to hack eventually if I do it. I am curious if it works though!
Until now there was always that bit of doubt in my mind: do emulators really emulate consoles well enough that a TAS movie would work on a real machine? There was no way to know for sure that this stuff would really sync up. That FCEUX emulates even the lag of a real NES is a testament to how great that emulator is.
I was kind of hoping to see a robotic hand or two pressing buttons on a real controller, but this is still an amazing accomplishment. Well done!
Maybe as those Japanese robohands improve, we'll someday get one that can press buttons 60 times per second. I totally want to see Data pwning some old video games!
TASing or playing back a DOS game? Make sure your files match the archive at RGB Classic Games.
I'm glad I finally clicked on this thread.
These videos are amazing.
I know 2 collectors with near-complete nes collections who live pretty close to me, and I myself have about 400 games. I will gladly help in any way I can!
Keep in mind, however, I am not technically inclined so things would have to be fairly idiot-proof.
Personally I approve of this just because of this. Maybe it's just a desire to see the fallout/things they'll demand, maybe it's to shut up their general headstronginess with that.
Funnily enough, there's actually a pretty simple way to demonstrate that the walljump is possible even on the cartridge. It involves the first pipe and the bricks above it, but I forgot the exact technique.
Imagine if SDA made you proof you're not an android during those times. >_>
Also, if I didn't go to the john a few minutes before I first read about this, I think I'd shit my pants over the sheer awesomeness that is this device.
I don't want to claim that I'm someone important over there and I wouldn't say there's a lot of anti-sda sentiment. That was a poor choice of words , but
this isn't the first time I've seen this come up since the nesbot debuted. I'm not trying to start a sda vs tas fight especially since there's so much overlap and collaboration between the two, but it's business as usual over on our front. If anything people are excited to see if glitch X really works on console or if it's emulator only. Except maybe for andrewg who has/had runs on 4 out of the 5 games proven to work.
as far as this goes, it's possible that we might miss some stuff on more obscure games, but it's highly unlikely that the most contested runs would be able to dupe verifiers if some random guy shows up with perfect luck and execution. Maybe if you submit a crappy TAS with bad luck or some screwups, but why would you do that? That will show us? The verified no cheating thing is the same to me as "This movie is a tool-assisted run played on an emulator." It's just a shorter way of saying "This speedrun underwent peer review and to the best of our ability has been determined that it was played in realtime on the original unmodifed hardware (or official emulator such as Wii Virtual Console) with a standard controller.
As far as carts that I own and will be eventually loaning to micro500, I've got:
Blaster Master
Castlevania 2
Castlevania 3 (tas uses J rom so will this sync?)
Cobra Triangle
Contra (tas uses J rom)
Donkey Kong
Donkey King Jr
Dragon Warrior
Faxanadu
Goonies 2
Jackal
Karnov
Kid Icarus
LoZ 1 (not needed)
LoZ 2 (not needed)
Lunar Pool (tas use J rom)
Megaman 1-6 (mm1-3 use J rom)
Paperboy
Rush'n Attack
SMB (not needed)
Solstice
Super C
TMNT
Wizards & Warriors 2 Ironsword
I've been looking to expand my nes collection, so any suggestions? :D
dballin, I hope my post at SDA wasn't seen as negative - I was just trying to let them know about the possibility of cheating.
I appreciate SDA, and would one day love to see the communities have more contact than just sharing members. I tried to clean up this thread as much as possible.
Anyway, thank you for loaning micro500 games. This is a very exciting time for TASvideos.
P.S. This thread is for talking about the device NESbot, what games sync, how the technology can be improved, i.e. the TECHNICAL ASPECTS of the NES Bot.
This thread is NOT NOT NOT for debating the legitimacy of aspects of TASing, the effect this device will have on SDA, or any other debate worthy topic, or whether or not I'm over-modding this thread. Start a new thread if you want to raise these issues. I will continue to purge that stuff from this thread.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Do any NES games use any kind of noise to run it's RNG? I'm not familiar enough with the technical aspects of the NES to know if that is even possible as an RNG technique.
Apparently Blades of Steel reads uninitialized memory to set its RNG state, or something along those lines. There's a thread around here somewhere about it being "impossible to accurately emulate". I'd assume that any TAS of the game would therefore not play back correctly on an actual machine.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Couldn't you make all of these games work if you had a device that initializes any game's memory with all zeros?
Edit: Ok, the ram is obviously inside the NES, not the games, lol.
Do any NES games use any kind of noise to run it's RNG? I'm not familiar enough with the technical aspects of the NES to know if that is even possible as an RNG technique.
To answer this question, we need a lua function called memory.registerread( ) to compliment memory.registerwrite( ). Create a boolean table of all possible ram addresses, and flag every address on its first write, and check every address on read. If a read comes up with a false - the NES read from uninitialized memory.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
To answer this question, we need a lua function called memory.registerread( ) to compliment memory.registerwrite( ). Create a boolean table of all possible ram addresses, and flag every address on its first write, and check every address on read. If a read comes up with a false - the NES read from uninitialized memory.
If that gets implemented it would be a nice addition to a script I'm working on. I'm hoping to collect some metadata on games, things like if they use PCM, if they do sub-frame polling and how many polls it typically does or at least the max and min number, does it start from initialized memory, etc. Info like this may make getting runs to sync easier in the future.
Yes I know games read from uninitialized ram as a source of entropy for the RNG, but do any get from outside noise like how I could use the noise off a Zener diode. In know there was an unused expansion slot on the NES could that have been used to get some sort of signal noise for the RNG?
I suppose such a thing would be possible, but I've not heard of a game doing it. It would seem excessively paranoid given the ready availability of basically random data in the form of uninitialized memory.
Googling about tells me that the expansion slot in the NES was used for an aborted gambling peripheral but otherwise ignored.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Couldn't you make all of these games work if you had a device that initializes any game's memory with all zeros?
Edit: Ok, the ram is obviously inside the NES, not the games, lol.
I believe this is correct, if you had a passthrough device that initializes all the NES memory with 0s, then simply acts as a transparent passthrough for the actual game cartridge, it should render all those games deterministic.
(Basically this would work like a game genie on the hardware level, but the programming would be completely different.)
How fleeting are all human passions compared with the massive continuity of ducks.
Why would it have to be a passthrough device though? Wouldn't a normal cartridge that just writes all zeros to the NES' RAM be enough? You'd just have to insert it prior to the actual game. [URL=http://www.raphnet.net/electronique/nes_cart/nes_cart_en.php]Here's[/URL] a tutorial on how to make a reprogrammable NES cartridge.
Because the way in which RAM degrades while unpowered is not well understood, so if you have to turn the system off to swap out cartridges the states that were written prior are not guaranteed.
I don't see why a 0 would flip to a 1 while unpowered, but it is conceivable that it could be possible, hence I'd recommend a passthrough to remove the necessity for turning the system off in between the initialization and the game running.
How fleeting are all human passions compared with the massive continuity of ducks.
The deal with blades of steel is the DMC controller starts in an unknown state, and thus steals cpu cycles randomly.
AS for the walljump test, it's simply the minus world trick. It proves the possibility of walljump. Also, people have walljumped in a certain super mario brothers 3 level in real time. Nintendo power guide even says it's possible. SUCK IT, haters. :)
As for proof that the console is unmodified, it's simple.
Boot up blades of steel twice before playing back the intended game. :)
Well that isn't a fair thing to say. Some games use uninitialized ram to seed teh RNG. Those would be very hard if not impossible to verify on the console. It's just because we cannot force the RNG to act like it does on the emulator.
As I stated earlier, I'd love to do testing for SNES if / when that time comes. I have a lot more SNES games than NES games, so I don't know if I'd be of any use to volunteer for NES.
How many times would a movie be tested before it is "invalid"?
As far as I'm concerned, you can't. You can only fail to prove that it works. The limiting factor of course is time and how much you want to bash your head into the wall that is a particular run. The reasons some of them don't work are already known and others may become apparent when the videos are uploaded. The suspense is killing me! Can't wait for the DK run...
The only way you could consider a TAS invalid is if the run does not sync on hardware due to an inaccuracy in the emulator. For example, there was a Mario Land 2 TAS that was rejected because a special area of the virtual RAM that was rarely ever used was not emulated properly, and the TAS abused memory such that the game accessed that part of RAM when it normally would not.
In that case, it is the emulator's fault, not the TAS's fault. In a perfect world (i.e. not Mupen), the emulator would be fixed soon after and a new run can be made that will not fail a real hardware test due to an inaccuracy.
Naturally, using uninitialized RAM for the psudorandom number generator would make all efforts to duplicate the TAS on real hardware futile, unless the hardware was modified so the RAM would be powered and initialized to all 0's (or all 1's, which are both likely what deterministic emulators use) before turning on the console. The uninitialized RAM problem is not an emulator inaccuracy.
<ccfreak2k> There is no 'ctrl' button on DeHackEd's computer. DeHackEd is always in control.