MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Okay, I'm tired of this. Here are the facts in order of "priority". I wrote some opinions in the details. Keep in mind that this isn't true only for NES, I'm just show that EVEN the NES has these properties I mention (also the number of pros and cons isn't important). Pros - It's a built-in and intended feature in the NES I hope I don't need to write any details for this. - NES games are capable of detecting that the game was reset through the reset button For an instance, Zanac. The game has many cheat codes just like the level selection code: Press 'RESET' button on your NES 13 times then press Start. Use Left and Right on the D-Pad to select the stage. Here's adelikat submission: #1344: adelikat's NES Zanac in 03:26.22. Also there's 2 more cheat codes that makes use of pressing Reset for a various time (9 and 1). One of them: http://tcrf.net/Zanac. By the way this is a very useful webpage for TASers! - Saves time in various games Watch this page: http://tasvideos.org/Movies-C3045Y.html Note that most of them uses an input combination (mostly on the 2nd controller) to reset the game which isn't the same as pressing the reset button! Cons - It's not 100% verified that every NES hardware executes the same reset routine Check out http://nesdev.parodius.com for further info or http://wiki.nesdev.com/w/index.php/Nesdev_Wiki about their experimentations and results. - Save game data corruption (with the reset button) has a chance to fail on the real hardware I tried to search for dissassembled games with saving data but couldn't find anything. I'm not going to details, I think you know why should it fail. If the problematic cons will be verified on real hardwares, I will say that use the reset buttons to play games as fast as possible. Have fun.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
MESHUGGAH wrote:
- Saves time in various games Watch this page: http://tasvideos.org/Movies-C3045Y.html Note that most of them uses an input combination (mostly on the 2nd controller) to reset the game which isn't the same as pressing the reset button!
Somehow I get the feeling that some people are incorrectly thinking that I'm opposing the idea of restarting the game in order to save time. That's not at all what I'm saying. If there is, for example, some kind of in-game menu option to quit to the main menu, or if the game supports some special key combination for the same effect, that's ok. (It basically becomes a choice of style whether the author wants to use it or not.) It's not the idea of restarting the game that I'm opposing. It's the idea of forcing the game to stop by external means (eg. by shutting down the power), possibly causing glitches (usually in the savedata). If, however, the reset button of the NES is not actually a power-cycling button, but instead it just sends the game a signal it can trap (and eg. completely ignore at least in principle), then that changes things. In that case the savedata becoming corrupted is a fault of the game itself because the reset routine was not designed to handle it properly. (After all, making the saving reset-safe would be rather trivial: Ignore the reset button during saving. The saving routine could simply raise a flag that the reset routine could check, and if it's raised, it ignores the reset.) In other words, it kind of becomes bug abuse (although a somewhat special kind).
Experienced player (828)
Joined: 11/18/2006
Posts: 2426
Location: Back where I belong
Warp wrote:
If, however, the reset button of the NES is not actually a power-cycling button, but instead it just sends the game a signal it can trap (and eg. completely ignore at least in principle), then that changes things.
MESHUGGAH wrote:
- NES games are capable of detecting that the game was reset through the reset button[/b] For an instance, Zanac. The game has many cheat codes just like the level selection code: Press 'RESET' button on your NES 13 times then press Start. Use Left and Right on the D-Pad to select the stage. Here's adelikat submission: #1344: adelikat's NES Zanac in 03:26.22. Also there's 2 more cheat codes that makes use of pressing Reset for a various time (9 and 1). One of them: http://tcrf.net/Zanac. By the way this is a very useful webpage for TASers!
If the reset button was akin to just pulling the plug, then turning on Zanac and unplugging the NES 13 times would yield the same effect. I very highly doubt it, but since I don't own an NES to test it myself, but I'm not going to go off on a two page rant based on unfounded assumptions.
Living Well Is The Best Revenge My Personal Page
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
Warp wrote:
(I already know you don't like me. There's no need to repeat that over and over. Just get over it.)
You are almost right Warp, I don't like your attitude. You are intellectually lazy. You have no desire to educate yourself before making long-winded posts defending your position from a place of ignorance. Additionally, you expect others to do the footwork to inform you, rather than take initiative to learn on your own. I'm reminded of this:
<Pahalial> "ignorance more frequently begets confidence than does knowledge" - Charles Darwin
<kionix> wtf? begets isn't a word. quit trying to make up words, fuckface.
Warp wrote:
Of course if I were wrong you would have pointed out my mistake instead of resorting to an ad hominem, ....
Actually, no, I was waiting to see if you would take the time to educate yourself, as I already knew the answer. In the immortal words of Admiral Ackbar - I was giving you a last chance to educate yourself, before displaying that you have no clue what you are talking about. My hope was you would take the time to learn before continuing to argue.
Warp wrote:
so I assume I am right in my assumption.
Well, that isn't happening. Another faulty assumption from a place of total ignorance. Before I school you, why is it my job to pull you out of ignorance? Why can't you take the time to learn for yourself, i.e. the content of a movie, by watching it, or how an NES reset button works? Don't you think the onus should be on you to learn before babbling your position, repeatedly? Alright, here we go. This took all of 5 minutes to educate myself: Google NES Schematic. Wow, first link that pops up is the one we want! Hmmm, if you were right, the reset button would be near the power.... Nope, not there.... Oh wait, here it is, on the furthest possible page on the schematic it can be! That doesn't prove anything! Its not like there is an IC directly there to handle it... ... Oh shit... It creates a reset signal.... But, it isn't like that feeds directly into the CPU, totally invalidating your ignorant argument... Oh... Fuck. So, in closing, once again, you are LAZY. Stop forcing others to educate you.
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.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
You made my day, DarkKobold :D "Schematic"... and I was searching for blueprint, I s*ck hard.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
DarkKobold wrote:
You are almost right Warp, I don't like your attitude. You are intellectually lazy. You have no desire to educate yourself before making long-winded posts defending your position from a place of ignorance. Additionally, you expect others to do the footwork to inform you, rather than take initiative to learn on your own.
I find it quite amusing that you could have in theory pwnd me with information about this subject that is both trivial to find and understand (like a web page directly describing how a NES program can hook to the reset signal), or simply stating as much, but instead you bring up some electronic schematics from which I'm somehow supposed to "educate myself". That kind of fails to have any argumentative strength. You might understand electronic schematics. I don't. I'm a programmer, not an electronic engineer. I have a rudimentary understanding of electronics, and an even more rudimentary understanding of computer processors (from an electronics point of view). Searching for some schematics would certainly not have been the first thing I would have thought of. So the reset button sends a signal to the CPU. Am I supposed to know what that means from the software side? What does the signal do, exactly? Does it power-cycle the CPU or what? Does it cause to reboot itself? What? How am I supposed to "educate myself" from some electronic schematics, exactly? Well, I suppose I could go buy myself some books about electronics and CPU design. (And btw, I still can't understand your obsession with post lengths. You have mentioned that in the past and not explained yourself when asked. Exactly what does it matter how long a post is, or how many paragraphs it may have? Does it somehow change the points and allegations being made? I don't get it. I find that argument outright silly.) Well, I suppose that I will just have to live with the fact that whenever I question some policy, you will always step in to mock me with ad hominems. I wouldn't even mind so much if you just went straight to the point and answered my questions or corrected where I'm wrong, but no. You have to always make it personal. Just stop it already.
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
The NES reset button can not be ignored, as it forces the game to jump to the reset vector, just like powering on. But RAM is not cleared, so the game can read the initial RAM to get some information about the game's previous state. The reset PPU behavior depends on whether it's a famicom or a NES. Famicom keeps running the PPU, so you see a static screen as it keeps whatever scrolling and bankswitching was last selected, but the CPU is frozen while resetting. NES blanks the screen while resetting.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
Dwedit wrote:
The NES reset button can not be ignored, as it forces the game to jump to the reset vector,
What I meant is whether the game can override the implementation of this signal handler and make it do nothing (at least during the duration of saving data). If the game can override the implementation, then it could make saving a reset-safe operation, but if it can't (and hence saving may always be corrupted by a reset no matter what), then my original objection stands (because in that case resetting cannot really be considered to be input to the game).
nesrocks
He/Him
Player (246)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
I believe the problem is how you questioned it, not the questioning per se.
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
Warp wrote:
I find it quite amusing that you could have in theory pwnd me with information about this subject that is both trivial to find and understand (like a web page directly describing how a NES program can hook to the reset signal), or simply stating as much, but instead you bring up some electronic schematics from which I'm somehow supposed to "educate myself". That kind of fails to have any argumentative strength. You might understand electronic schematics. I don't. I'm a programmer, not an electronic engineer. I have a rudimentary understanding of electronics, and an even more rudimentary understanding of computer processors (from an electronics point of view). Searching for some schematics would certainly not have been the first thing I would have thought of.
Translation: I don't know shit about electronics (the very topic I am arguing about) so clearly arguments that have factual basis in electronics are useless on me!
Warp wrote:
So the reset button sends a signal to the CPU. Am I supposed to know what that means from the software side? What does the signal do, exactly? Does it power-cycle the CPU or what? Does it cause to reboot itself? What? How am I supposed to "educate myself" from some electronic schematics, exactly? Well, I suppose I could go buy myself some books about electronics and CPU design.
Oh look, more shit you could easily educate yourself with on Google! But fuck that, continue to argue anyway!
Warp wrote:
Well, I suppose that I will just have to live with the fact that whenever I question some policy, you will always step in to mock me with ad hominems. I wouldn't even mind so much if you just went straight to the point and answered my questions or corrected where I'm wrong, but no. You have to always make it personal. Just stop it already.
Ad hominem assumes that I am attempting to tie my argument to my attack on you. No, I am straight up attacking you for arguing with zero education or information about the topic at hand. This includes watching the movie in question, or learning enough about the electronics of the NES to validate your claim. Remember, you started this whole debate. Once again, WHY DO I HAVE TO ANSWER YOUR IGNORANT QUESTIONS? Why can't you fucking google NES programming, and read up how resets work? Jesus you are lazy.
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.
Player (206)
Joined: 5/29/2004
Posts: 5712
AnS wrote:
And theoretically it's possible to completely disregard Reset button (just return from the reset subroutine to next frame iteration), although it would look strange - player pushes Reset and game freezes, player releases Reset and game continues.
"Hey kids, we put in an extra pause button for you!"
put yourself in my rocketpack if that poochie is one outrageous dude
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
DarkKobold wrote:
Translation: I don't know shit about electronics (the very topic I am arguing about) so clearly arguments that have factual basis in electronics are useless on me!
You seem to have some reading comprehension problems. You implied that finding information about this question is easy and simple. As a demonstration you embedded some electronic schematics. There's a huge mismatch here. (Electronic schematics might be easy to understand and comprehend to you. That doesn't mean their interpretation is common knowledge. Presenting electronic schematics as an answer to a programming question is as a far-fetched and complicated answer as you could possibly get. It could only have been worse if you had gone all the way to quantum mechanics and how semiconductors work.) Comprende now? (Well, why am I even asking? Even if you do understand you won't admit it.) Are you getting some kind of thrills from this? Are you enjoying trolling me? Why are you doing this? I have asked you to stop already, but you won't. If you want to answer a question or correct a mistake, just do that. If you don't, then don't. Stop your stupid personal attacks.
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
DarkKobold wrote:
No, I am straight up attacking you for arguing with zero education or information about the topic at hand.
Which is also not how it's supposed to be done. Cool down, you're a moderator after all.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
AnS
Emulator Coder, Experienced player (728)
Joined: 2/23/2006
Posts: 682
Warp wrote:
What I meant is whether the game can override the implementation of this signal handler and make it do nothing (at least during the duration of saving data).
It can't [make it do nothing]. Saving process will be interrupted anyway. But that doesn't mean that nothing can be done.
Warp wrote:
but if it can't (and hence saving may always be corrupted by a reset no matter what), then my original objection stands (because in that case resetting cannot really be considered to be input to the game).
While the game can't completely ignore Reset, it can detect saving interruption and then repeat saving (while RAM contents are still intact after reboot) instead of clearing RAM and showing title screen. Such saving implementation would stop TASer from using reset to corrupt save data.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
AnS wrote:
While the game can't completely ignore Reset, it can detect saving interruption and then repeat saving (while RAM contents are still intact after reboot) instead of clearing RAM and showing title screen. Such saving implementation would stop TASer from using reset to corrupt save data.
If that is indeed the case, then I suppose I'll have to revise my opinion on the matter. Although it's still more complicated than just abusing a "normal" bug or glitch, I suppose that if it would be theoretically possible for a game to be reset-safe but isn't, it could be considered a valid exploitable defect in the game programming. Btw, how does a NES game detect that it has been reset, if it can't really control what happens?
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
Warp wrote:
DarkKobold wrote:
Translation: I don't know shit about electronics (the very topic I am arguing about) so clearly arguments that have factual basis in electronics are useless on me!
You seem to have some reading comprehension problems. You implied that finding information about this question is easy and simple. As a demonstration you embedded some electronic schematics. There's a huge mismatch here. (Electronic schematics might be easy to understand and comprehend to you. That doesn't mean their interpretation is common knowledge. Presenting electronic schematics as an answer to a programming question is as a far-fetched and complicated answer as you could possibly get. It could only have been worse if you had gone all the way to quantum mechanics and how semiconductors work.) Comprende now? (Well, why am I even asking? Even if you do understand you won't admit it.) Are you getting some kind of thrills from this? Are you enjoying trolling me? Why are you doing this? I have asked you to stop already, but you won't. If you want to answer a question or correct a mistake, just do that. If you don't, then don't. Stop your stupid personal attacks.
You are both right, I got a little out of hand. Warp, my anger with you is that you treat the rules as a reason to hold debate club, and not interested in finding answer. From my perspective, you put no effort in on the learning side, and instead put too much effort into the arguing side (hence my constant commentary on your post length). Also, from my perspective as an electrical engineer/computer engineer, in an NES, programming and the hardware are not separable. You have to understand concepts such as non-maskable interrupts, reset signals, etc, to understand how programming works. I am venting my anger, but I realize that won't get across my point. You ask questions expecting other people to do the work to educate you. And, if you don't know or understand something, don't start with "I don't consider this legitimate." Start with, "I wonder if this is legitimate, as I don't know about the hardware/software of an NES." You had made your decision from the start, without adequate information. So, I'm sorry that I vented at you.
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.
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
Warp wrote:
Btw, how does a NES game detect that it has been reset, if it can't really control what happens?
All 6502 devices have a reset pin http://www.xmission.com/~trevin/atari/6502_pinout.html (see pin 40) Also, the answer to your question is in this PDF, page 5, right side column. http://archive.6502.org/datasheets/mos_65ce02_mpu.pdf It tells you exactly what a reset does. In english, it basically sets the program counter to the first line of code to be executed. However, this does not clear RAM, as noted before.
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.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
DarkKobold wrote:
and not interested in finding answer.
I don't understand why you think that. If I'm mistaken and someone corrects me, then it might hurt my pride, but I'll admit my mistake and change my opinion. (This is certainly not the first thread I have done so.)
You ask questions expecting other people to do the work to educate you.
When you don't know something, you ask from people who know better. Is that really something so unthinkable to do? "How to program the NES" doesn't sound like a trivial topic, and there are many people here who have vastly more knowledge than I do about that. What's wrong in asking them? Such a question does not assume that others should go and find out. It just assumes that if someone already knows, he could quickly answer.
And, if you don't know or understand something, don't start with "I don't consider this legitimate." Start with, "I wonder if this is legitimate, as I don't know about the hardware/software of an NES."
But I did say that I am making an assumption, and when I did, you mocked me.
AnS
Emulator Coder, Experienced player (728)
Joined: 2/23/2006
Posts: 682
Warp wrote:
Btw, how does a NES game detect that it has been reset, if it can't really control what happens?
At $FFFC there's reset vector (pointer to reset handler procedure). Actual value is hardcoded into ROM bank by programmer. Every time player presses Reset, CPU starts executing code from the address provided. This isn't like subroutine calling, this is more like JMP (or GOTO), so CPU can't return back from where it was interrupted. But, as memory and registers didn't change, it's possible to "guess" at what point of gameplay the CPU was interrupted (for example, by storing current_mode_id in memory).
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
Warp wrote:
DarkKobold wrote:
and not interested in finding answer.
I don't understand why you think that. If I'm mistaken and someone corrects me, then it might hurt my pride, but I'll admit my mistake and change my opinion. (This is certainly not the first thread I have done so.)
I find a big part of 'finding the answer' to be self-education. When I don't know something, the first thing I do is hit google. Then, when lost, I ask questions.
When you don't know something, you ask from people who know better. Is that really something so unthinkable to do? "How to program the NES" doesn't sound like a trivial topic, and there are many people here who have vastly more knowledge than I do about that. What's wrong in asking them? Such a question does not assume that others should go and find out. It just assumes that if someone already knows, he could quickly answer.
And, if you don't know or understand something, don't start with "I don't consider this legitimate." Start with, "I wonder if this is legitimate, as I don't know about the hardware/software of an NES."
But I did say that I am making an assumption, and when I did, you mocked me.[/quote]
Warp wrote:
I'm still of the opinion that resetting is not valid input in TASes and should be banned. and this only strengthens that opinion.
There was no questions or assumptions there. Flat statement of opinion. And I've also apologized for mocking, I realize that did nothing to further my point. Anyway, all I'm asking is next time, watch the movie before starting a debate, or do a bit of research on NES resets before starting a debate. Please.
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.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
DarkKobold wrote:
Anyway, all I'm asking is next time, watch the movie before starting a debate
Didn't we go over that already? Questioning the validity of using a debug menu is in no way dependent on watching a movie that does so any more than questioning the validity of eg. using a gamegenie code being dependent on watching a movie that does so. (And please understand what I'm saying here. I'm not comparing the debug manu to gamegenie. I'm talking about discussing the validity of using a technique or feature in relation to watching a movie that uses that technique or feature. You seem to claim that you cannot discuss without watching a movie that demonstrates the technique. I claim you can.)
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
Warp wrote:
DarkKobold wrote:
Anyway, all I'm asking is next time, watch the movie before starting a debate
Didn't we go over that already? Questioning the validity of using a debug menu is in no way dependent on watching a movie that does so any more than questioning the validity of eg. using a gamegenie code being dependent on watching a movie that does so. (And please understand what I'm saying here. I'm not comparing the debug manu to gamegenie. I'm talking about discussing the validity of using a technique or feature in relation to watching a movie that uses that technique or feature. You seem to claim that you cannot discuss without watching a movie that demonstrates the technique. I claim you can.)
I'll take this to PM, because this is totally irrelevant to this thread. P.S. I will keep it civil.
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.
Joined: 10/24/2005
Posts: 1080
Location: San Jose
I laugh at their lack of a debouncing circuit on the reset line. Yes, that's a good idea, invert your reset and send it out globally before cleaning it up. EDIT: To be fair, they are probably using very beefy components, I don't think metastability or runt pulses are too big of a concern. It would be nice to see a Schmitt trigger, or something :P.
<agill> banana banana banana terracotta pie! <Shinryuu> ho-la terracotta barba-ra anal-o~
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
One thing that would really put all this at rest (at least from my perspective, as I am probably the only one questioning this) is if a run using savedata corruption (via resetting) would be confirmed to work on the real console. That would actually be rather cool. I don't know how feasible that would be, however. (Is there any theoretical danger of somehow damaging the battery memory in the physical cartridge if the writing is interrupted? It sounds implausible, but who knows about these things...) Of course finding nowadays a cartridge with a working battery might also be rather implausible. (What kind of batteries did they use? Can they be replaced?)
Player (210)
Joined: 7/7/2006
Posts: 798
Location: US
The emulators only record resets as an input during 1/60th of a second. The reset button on the console is not polled every frame however, it interrupts at whatever cycle or command the system is executing. In this sense, the emulator limits the points you can press reset during. All of the points emulated are theoretically possible, but it is not a complete set. Conceptually, save corruption manipulation should be possible as emulated, but it is doubtful that one could get the cycle accuracy necessary to perform it correctly. See this post for inichi's comments on resetting Chrono Trigger between frames with the debugging version of the emulator: http://tasvideos.org/forum/viewtopic.php?t=386&postdays=0&postorder=asc&start=764 In my opinion it is likely that save corruption is more accurate on emulators than any sort of Megaman 1 NMI race conditions. It is likely that the NMI race conditions can occur during gameplay, but I tend to doubt the emulator's accuracy in the cycle timing. I do think save corruption can take away from certain runs, but I think it is fine to just make more categories due to the fact. Pokemon Yellow is still one of my favorite TASes. Replacing cartridge batteries is pretty common for old games.