Posts for Myria

Experienced Forum User
Joined: 8/28/2006
Posts: 50
Can the sketch bug in American 1.0 be used to set the "I'm in World of Ruin" flag? Carefully park the Blackjack on the Veldt, sketch you-know-who, board the Falcon, and head straight to you-know-where. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Wow, Charge Man was crazy. I had no idea that the Super Arrow would be abused *that* badly. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
creaothceann wrote:
Why should a movie file contain cheat codes?
Several reasons: - Not everyone is using emulator movies to do speed runs. - Specifically authorized cheats to get to harder game modes quickly, like 150cc in Super Mario Kart and 8 stars in Mario 2. - Movies of games in weird states, which can be fun to watch. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Are there any hardware engineers here? It would be cool to try playing back a movie on a real console this way. NES is probably the easiest one to do this with, because games rely much more on accurate NES timing than most other consoles. In my personal opinion, I don't see much of a difference between using a cheat code and using an emulator that doesn't emulate properly. The hex editing problem is due more to a lack of proper tools than anything else. Delta-time/RLE would be fine if proper tools existed for such a format. Also, as someone in this thread suggested, a format could have a raw mode and a delta-time mode, and "release" builds of movies could be converted. Both would play in emulators. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Different systems have different input requirements. I see this as natural, and not really a problem. My format would make the input data consistent for a given controller type on a given console. Ideally, ZSNES and SNES9x would be able to read and record the same movie format. That doesn't seem to be true, at least here. Source is usually given out at least when the release is first out (would be nice to have a page here hosting these emulators / source to keep it current though...), and there are FCM, SMV, GMV, VBM pages here as well which are quite helpful. I've never done any TAS stuff before, so I assume you're correct. Because of differing formats between consoles? I don't follow. I mean the sorts of problems people have where someone's movie won't play back correctly because it's the wrong emulator version or whatever. I'm just guessing really, but I think timing changes to the emulator could be partly at fault for this. A situation where a game barely avoids missing a frame could turn into missing a frame if the emulator timing changes, and this is catastrophic for movie playback. A format that times the recorded controller to the controller port probe signal is easier to get correct. How would a universal format reach toward this goal? And... so what? It's not the universal format that would allow hardware playback, it's the redesign to use the controller port probe mechanism. On NES and SNES at least, the controllers receive a signal to read their button states. By timing itself to this mechanism, a hardware device simulating a controller would easily know what data to send to the console. (Presumably, you'd put a filtered version of the movie file into the device's memory.) Adding in things like cheat codes, subtitles, and especially savestate checkpoints will make this a much larger problem. Personally I think movie files are a very nice size, especially compared to avi. Cheat codes and subtitles are very small compared to the size of the controller data. You are definitely right about the save states; however, the reason for the embedded saved states is for the author's benefit in the movie creation process. Some tool would be used to strip out the saved states in the data stream to make a "release" version of the movie for publication on this site. Is this the same thing FCM does? If so then I think it's a very bad idea, unless some great hex-editing tools were designed as well (and I don't just mean some converter either). I don't know what FCM does. My format is clearly not designed for direct editing; some tools would definitely be necessary. Perhaps a parallel XML-based format could be made that could be manually edited as required. It also doesn't help that the emulation updates are supported by the site in any way, as it only further encourages individual attention to them, which will drive them further apart. I don't know what the "emulation updates" you're referring to are. Melissa
Post subject: Brainstorming for new emulator movie format
Experienced Forum User
Joined: 8/28/2006
Posts: 50
I don't participate in the things going on on this site, but I do have some ideas to share. I think that there needs to be a universal movie format for the classic emulators. I have no idea what to call it ("Letting programmers name flagship applications makes as much sense as letting marketers write them"). Rationale: - Different emulators for the same system have different movie formats. - Similarly, the movie formats for different consoles are unrelated. - The movie formats are frequently undocumented, and the emulator source code is frequently not published. - Desynchronization with the movie stream is common and I believe much of it is avoidable. - Current movie formats don't offer useful features such as subtitles and embedded cheat codes. - It's basically impossible to play back current movies on actual hardware. - Movies can be quite large unnecessarily. - Security and authenticity. I hope that these problems can be mostly solved by introducing a new movie format. Here are my high-level proposals: - The format shall be formally documented in the hopes that various emulators would add support for it. - The format shall be compatible across multiple consoles. By this I mean that the format's specifications will apply equally to NES and Genesis emulators equally, minus of course the system-specific stuff. - Rather than encode the state of the controllers at each frame, I propose that instead the format record the state of the controllers at each read probe. The meaning of "frame" can be ambiguous, especially due to emulators' inexact timing, and with a frame encoding it's difficult to do playback on real hardware. Timing using the read probe is much more deterministic. For Nintendo's 2D consoles, the concept of "read probe" is well-defined; I don't know about the others. - Controller data would be encoded as delta-time. The controller will remain the same state until otherwise changed. Each "line" of the recorded controller input shall count the number of read probes since the last update. - Cheat codes can be embedded into the data stream. Cheat codes can consist of ROM patches, RAM patches, disk patches, and any other useful thing. Typically they will be enabled for the whole movie but this is not mandatory. This is designed to allow things like 150cc in Super Mario Kart. With all cheats explicitly noted in the file, auditing tools could be written to enforce submission requirements of bodies such as tasvideos.org. - Saved states can be embedded into the stream at any point, including the beginning. This serves two purposes: special movies that don't start at the beginning, and checkpoints in the middle of a movie. Checkpoints allow rewinding. Periodic checkpoints embedded into the file automatically by a "rerecording" emulator will help the author during development. A "release" version of a movie could be made by stripping these. - The delta-time stream shall support subchannels that are synchronized to the read probe time. Such data can include notes and on-screen subtitles. - Security: The ability to digitally sign a movie is helpful. The format shall allow multiple signatures of the same file. An author can sign her movies to prove she made them. A site like tasvideos.org can sign a movie as being officially approved. Another use is as a timestamping authority: a neutral party can notarize that the movie was submitted by someone at a certain time, which might resolve disputes. - Extensibility: The format shall be extensible. New tags can be defined that go into a data stream. The header shall specify which extensions are required for playback and which extensions are optional. A new controller type is a required feature; a subtitle extension is an optional feature. What do you think? Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Does the Pyramid skipping bug save any time? I've never gotten that far through the game in the SNES or PSX versions and it doesn't work in the GBA version. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Okay, I guess I'm assuming things with Super Mario World. Zelda 3 *was* ported by Capcom. I meant Rockman and Forte. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Tilus, the FF4-FF6 remakes are rewrites. The games are completely recoded in C (or C++). The only original code is the scenario data. This differs a lot from Capcom's ports. Their GBA ports of Super Mario World, Rockman 9, Breath of Fire 2, etc. were done with 65816->THUMB static translation, so many of the old bugs still work. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
My favorite bugs are sequence-breaking bugs. My favorite Zelda 3 exploit was where you jump off Death Mountain in the Dark World to skip Agahnim. You can get every item in the game but 1 this way - the one you can't get is the Piece of Heart under the lumberjacks' house. The bug works in Four Swords, which is pretty convincing evidence that it is a statically recompiled port of the SNES version. This is likely true of the rest of Capcom's SNES->GBA ports like Super Mario World and Breath of Fire 1 and 2. Another of my favorites was the bug with the Opera House rats in Final Fantasy 6. Leave at least one alive on the way to Ultros. When you return in the World of Ruin, fight one of the rats and die. The Impresario will kick you out - to the World of Balance. This was "fixed" in the American version by flagging all the rats as dead after Ultros dies. We need an online game bug database. "Dave's Unique Video Game Glitches" isn't really what I have in mind. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Normally I'd say Encyclopædia Dramatica is better than Uncyclopedia, but their Grue article sucks. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Hehe, you could do the flyswatter game in Mario Paint. Of course, the problem with mouse games is that they have a wide possibility of inputs per frame, so it's trivially easy to move the cursor ridiculously and not look anything like mouse movement. Duck Hunt is retarded for the exact opposite reason: the input of the Zapper says just says whether you're pulling the trigger and whether the Zapper sees green. Basically, you just send "I hit the target" input to the game, not even X/Y coordinates. Most of the people here probably knew that though. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Haha, these are my top ones so far, in order of descending humor: 1. Duck Hunt 2. DDR/Beatmania/Guitar Freaks and clones (Guitar Hero) 3. Battleship 4. Where's Waldo? Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
I actually don't think ChessMaster is pointless, although it probably is from an entertainment perspective. Finding the fastest way to beat a chess player when you know exactly what move they will play next is an interesting computer science problem, somewhat different to an unknown opponent like the traditional chess algorithms. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
(Regarding SimCity) It's not too hard to do it fast if you start in Freeland and use the 999999 money bug. Spend the first year getting the money, then pause the game. Build your entire city then unpause. Doing it without thinking much got me a megalopolis in 1905. It's supposedly possible to get one in 1902 or something insane like that. Melissa
Post subject: Most pointless game to TAS
Experienced Forum User
Joined: 8/28/2006
Posts: 50
What would be the most pointless game to TAS? To start things off, I came up with these 3: - Anticipation (NES) - Solomon's Key 2 (NES) - SimCity (SNES) Melissa
Post subject: Useless sequence break
Experienced Forum User
Joined: 8/28/2006
Posts: 50
I found a sequence-breaking bug in the game, but unfortunately it's totally useless. In the beginning part of the game, you get sent to Minish Woods by the king. To get there, you walk by Lon Lon Ranch. A guard will be standing by the ranch preventing you from getting in there. When you go to Minish Woods, you'll get Ezla. At this point, turn around and head back to Lon Lon Ranch. The guard will be gone. Use the tree stump and go inside to get the key. This sequence break is pointless because the game doesn't let you use the key until you're forced to get it anyway. The door will ignore you until then. It wouldn't surprise me if this game's scripting system were like Final Fantasy 6, where the current game state determines an entirely different event map. Games that always have all events loaded but use "if" statements to block them tend to have bugs to allow this kind of thing, like Final Fantasy 4. Note: I don't remember the *exact* details of when you go get the key. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
I just remembered that I made the .nsf of Solomon's Key 2. It was the only .nsf I ever made. I found it to be really easy to make - the music code was in its own MMC3 banks and was easily separated from the engine. I guess I was lucky. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Heh, I was thinking about this game recently. The problem with Solomon's Key 2 is that the game basically does not move until you move. There is no randomness whatsoever, or monster AI that reacts to you. A speed run of it would be quite boring I think. It also would be trivial to optimize - there are likely very few tricks you could do to make the game go faster. Think Lolo without a chance to do tricks with timing. A puzzle game that would be cute to do is Tower of Babel. The PSX version of it is SO much better than the Famicom version but you can't do speed runs for something that can use moving parts for randomness. >_< Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
I guess I should write up a new file format specification for movie files. It's about time there exist a standard. It should work for anything except systems where controller input causes an interrupt (like DOS games, unfortunately =/ ). As for not resetting memory when doing a reset, yes, that is a problem, but it's not so bad if you understand it more. On a cold boot in which the system has been off for a short time or more, RAM will effectively consist of entirely FF bytes due to how RAM chips work (at least the ordinary kinds). With a reset, RAM does not change at all. In fact, on SNES (not sure about NES), the startup vector is hard-coded whereas the reset vector is specified by the ROM and can be different. NES games are usually programmed to be aware of the fact that RAM may not be empty on startup. Mario 1 writes A5 to a particular byte at startup. If it starts up and that byte is not there, it assumes that it's a cold boot, and zeros RAM, then sets that byte to A5. (There are other games that use A5 at the same address, like Tennis, that can be used to do weird things if you change cartridges while holding reset.) As long as that byte is not A5 in a cold start, which is quite unlikely, RAM will get reset to 00's and have the same random seed. I find it quite unlikely that this technique would be used to trick people into thinking that any of these are "human" players. The only people who would try to build these crazy fake controllers are the enthusiasts here. There is also the issue that people can already claim a TAS as legitimate. Hook up a NES with the cartridge and turn it on. Record yourself "playing" these in front of the system. Little does the audience know that the TV is actually playing the composite output from a video card on a PC running an emulator. To get around that, you require that a person's hands be shown in the video. That works against both input misdirection and people making fake controllers with recorded movements. I have a feeling that timing things based on controller read pulses should be highly deterministic, such that even different emulators get it correct. Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
We need emulators to have the ability to annotate movie files with text that can optionally overlay the screen during playback. If they add it, make sure it uses UTF-8 for the text, for our non-English speaking friends.
Post subject: Running speed runs on real hardware
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Yes, I know this has been brought up many times in your history, but it is possible to do your speed runs on real hardware. The problem that you can't sync to the vertical blank can be solved, with a different approach. On most old consoles, the controller knows when it is being queried. The NES and SNES, for example, have a pulse you send to the controllers over a particular hardware port. The next several reads will get that data. The controller is doing a 16-bit hardware transfer to the host when those pulses come. Emulators' movie formats should be modified. Rather than store the input state at each frame, they should be storing the input state at each controller read. Whenever it reads from the controller port, record the button state. You can then easily make a microcontroller program to feed the input to the console, and it can use the console's signals as timing. Data size becomes an issue with microcontrollers. You can solve that by using delta-time on the controller state, like MIDI. In other words, store messages like "on controller read #7, controller state changed to Up+A", "on controller read #10, controller state changed to Up". The intermediate states would be assumed to be the previous. This would probably help significantly in all games but Super Metroid (that has an advantage to alternating button presses while just walking, right?). Melissa
Post subject: Timestamping service
Experienced Forum User
Joined: 8/28/2006
Posts: 50
You could handle this by creating a timestamping service. You send your movie, or a cryptographic hash of it, to a trusted server. It gives you back a public-key signature of the hash, along with your name and the time it was made. This system would prove that the movie existed at the specified date and time and was claimed by a particular user at the time of signing. As long as everyone trusts that server, nobody can fake it. (If you don't trust one server, but trust a consortium, there are ways to share a secret.) The system could detect someone trying to re-sign an existing movie as their own (two identical hashes), but this isn't truly effective because some meaningless change could be made to the file. Instead of relying on this, you would resolve disputes through the timestamp. If you do something like this, you must avoid MD5 and probably SHA-1 as well for long-term security. Because the files to be signed are controlled by a hostile force, collision attacks are a threat. I'd suggest SHA-256, or SHA-1 and MD5 together (very difficult to collide both simultaneously). Melissa
Experienced Forum User
Joined: 8/28/2006
Posts: 50
I don't know what my opinion is on the use of translations. It's a hard balance. The main complaint I have is that translation hacks - especially of RPGs - are not frame-compatible with the original game, so movies won't work. In FF5, text is drawn gradually, and the English text is somewhat longer screen-wise. Also, there are frequently multiple pages of text where there were not in Japanese. This clearly will change the action of PRNGs and make the movies incompatible. However, speed runs of Japanese games heavy on text are uninteresting to American players. Nobody cares about this if you play Resurrection of Hitler and Akumajou Densetsu instead of Bionic Commando and Castlevania 3, but people care if you play Final Fantasy. The converse is likely true as well; Japanese players making movies would want to use the Japanese version so their friends can read it. Melissa, reverse engineer, FF5 translation
Experienced Forum User
Joined: 8/28/2006
Posts: 50
Yeah, I don't think using the English hack is a good idea. Our changes cause the text windows to be longer because there is more text in the English version. And you all know what that does to console PRNGs. As far as I can remember, we changed only one gameplay issue: something about some class of weapon being completely useless due to an "SEP #$20" instruction in the wrong place. The result was a discarded high byte in a multiplication, so it did a really small amount of damage. Our patch corrected that. I don't remember who actually discovered that bug, because it wasn't me =) I've never played FF5 past the Ancient Library. I did beat Neo-Exdeath from a saved game, but that was me fixing a crash in the ending... Can't believe that people are still playing our hack after nearly 9 years >_< 2 years ago I started to redo the translation's technical elements, but never got very far. Here's what I got done in it then: http://www.geocities.com/myriachan/ff5.html Melissa, reverse engineer/reprogrammer, FF5 translation project