Posts for LocalH

Experienced Forum User
Joined: 10/3/2004
Posts: 138
Here is a document I wrote up describing my technique for making Genesis runs into DVD, and I've linked in this thread to a post I wrote over on doom9.org detailing my NES technique. As for the 4GB limit, I would advise you to use the CamStudio Lossless Codec which is available here. I has several compression settings, include a fast (but large) compression called LZO, and also a GZIP mode with settings from 1 to 9 (the higher the setting, the slower the encode, but the smaller the file - I recommend using 9 for the absolute smallest possible filesize). Using this codec, my "raw" for Gigafrost's Zelda 2 run ended up being 107841400 bytes for 8:40 of video, about 40% of which was audio. Since 107841400 goes into 4GB about 40 times, that means that you should easily be able to get some longer runs under the 4GB mark, at least an hour easily (although I wouldn't take that result too literally, because it depends on the game's graphics content and amount of on-screen motion). Audio is of course a constant with the NES (and would be exactly double with stereo consoles). And, I also use NTFS, and for the most part it seems the tools I use can support >4GB files on NTFS, so I haven't really taken that into consideration. Also, some emulators do indeed automatically segment an AVI recording. Gens Movie Test, for example, splits to a new AVI about every 1GB, and I'm pretty sure that Famtasia splits, but as I haven't used Famtasia in ages, I don't know exactly where it splits to a new AVI.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Yeah, I didn't mean to actually post the ROM here, that can be handled by other communcation methods that don't involve public availability on Bisqwit's forum =P
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I'd be happy to take a look at the ROM you mention, with the goal of making it start up with 8 stars. I assume that it doesn't crash when the game tries to update the star count after beating it? If you know exactly how it was hacked compared to the original FDS, that can help immensely. Of course, with the disk version, it wasn't that hard to make such a hack - beat the game once, then do a compare (I don't remember finding but the one difference, and it was indeed in the SM2SAVE file). With the ROM, something similar could be done, but with savestates, in order to determine where in RAM the game stores the star count, and then the ROM can be hacked to write the correct value to that particular RAM address.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Basically, the most likely reason a movie would desync is due to lagged frames present on the real console but not on an emulator. Theoretically, you could hook into the vblank routine and use some code to feed the necessary values to the game, but this would be done on a per-game and per-run basis, because each game is likely to use a different RAM location for the controller. And also, you'd want to convert the input log into the same format as what the game uses for controller handling, so that all you have to do is feed one or two bytes per frame. It might work for games where there is absolutely no lag on either emulation or read hardware, but any game that exhibits different lag between the two will desync immediately when the game lags.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I think that, for the ones good enough to be covered here, hacks and homebrews should be included in the same category. I believe that the main system categories should only include licensed games.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
You could, but you'd lose half the frames, since we generally deal with progressive 60fps output, and VCD can only handle progressive 29.97fps output. Unfortunately, especially with the NES, you'll have situations where a sprite happens to be visible during the frames that get dropped, and invisible during the frames that get kept.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I think the best way to do this would be to have a subforum within each main console forum. That way, threads about non-licensed games (whether hacks or full homebrew) would still be categorized within the proper console, but not mixed in with all the licensed games that the site focuses on. Alternately, if one doesn't want actual subforums, you could just interleave them on the main forum index - have "Licensed NES games", "Hacked/homebrew NES games", "Licensed SNES games", etc.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
At most, there would be no username associated with those posts.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I haven't determined that - I only did tests using 8000kbps CBR (and at least 192kbps AC3 audio). The image above is the direct output of my AviSynth script, before any compression (and is what I believe to be the closest possible replication of capturing RGB from an NES, which currently isn't feasibly possible). One issue with DVD encoding - MPEG-2, as used on DVDs, halves the chroma resolution in both directions. This would be more noticeable with NES-based content, than it would with "real" video. However, I'll state that I did not notice much of this chroma issue on a standalone DVD player. For cost reasons, I'd of course be going with single-layer DVD+R. I'll have to do some more tests to figure out approximately how much video I can fit on one disc without over-compressing it (such that excessive artifacts are present). Edit: It also goes without saying that the more action and movement there is on screen, the higher the minimum acceptable bitrate. I'll do some tests and figure out my boundaries. Also, I will only make movies from FCMs, as I don't use Famtasia and conversion is not feasible.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Yes, you would regenerate the AVIs in a lossless format, then massage the video into DVD-compliant video. I've done this, and have created "perfect" test DVD copies of NES runs, with correct aspect ratio and no audio skew. The existing AVIs that can obtained via BT are useless for making DVDs. For FCEU NTSC output, you must resize the video to 650 pixels wide, pad with black to 720, and then fix the audio skew that is introduced due to a discrepancy between FCEU's actual emulation speed, and the round 60fps found in a generated AVI. I've talked about this issue on this forum, so it shouldn't be too hard to find. I find that an excellent tool for aiding in this process is the video scripting language AviSynth. Also, on this Doom9 thread, the issue was brought up, so I detailed my method for turning FCEU 60p output into DVD-compliant 29.97i, including screenshots (you'll also notice how my screenshots look more proper than those contributed by others into the thread) and a copy of my AviSynth script. I prefer a bilinear resize, since it gives a more "analog"-looking video. Here's an example of what I consider to be "perfect":
Experienced Forum User
Joined: 10/3/2004
Posts: 138
You should get him in contact with the Software Preservation Society, in case he has any originals that haven't been preserved yet. Especially if he's got disks that have never been booted with the write protection disabled (since some games write to the disk, and then it's no longer unaltered). Check out this list and see if he has any of those games, or any other games that they don't have listed in their "already-dumped" list.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I believe a better term for what he calls "intercalated" would be "interleaved". You'd also have to double the frame rate, since you're placing two frames in the place of one. Speaking of interlacing, I don't think it'll help much in trying to compare runs - you'll end up with a mishmash of horizontal lines, and you'll lose half the frames from the original (since interlacing is mostly an analog phenomenon, it would really only be useful if you were wishing to compare runs on a TV set). Something that I think would be interesting from an entertainment standpoint (but far too much work for a WIP test) - produce a multi-angle DVD with three angles, maybe four. Run 1, run 2, both runs overlaid, and both runs side-by-side. Of course, this would eat disc space like crazy, since you now have to account for four video streams where before you only had to account for one. Something like this would definitely work better on a DL disc, since you have nearly 9GB. It shouldn't be too hard to do such a DVD, the hard part would actually be authoring the DVD (due to Avisynth kicking so much ass). Also, an idea for the overlay method - make both runs grayscale, then tint one red and one blue. Blend them evenly (50% of each image). I haven't done any testing, but it would seem to me that this would create an interesting video. Or you could go really crazy, turn each run grayscale, stick the now-grayscale videos into the chroma channels, and then figure out a decent luma channel. Maybe this is a little too weird, though it'd be interesting to see what it would look like.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Hm, that's weird, the file's there and everything, correct case and all. I zipped the file and uploaded it to the same space, and it seems to work fine. Get it here.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
tmont wrote:
LocalH wrote:
it's the area with the crystal ball surrounded by two pots, both of which contain a POW.
I don't recall a place like that. Do you remember the level?
It's the end of 2-3, which admittedly makes it off-limits for non-100% runs. It also takes a few seconds to set up, although I haven't explored trying to do it in a TAS situation, so it might be loads easier to do with single-frame precision. I'll whip up a quick realtime recording of the trick. As I said before, it won't be much benefit to TAS runs, but it should nonetheless be good for full documentation. Edit: Here it is. I repeat the trick three times (since the ball resets when you go into the pots).
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Heh, their writeup of world 36 didn't even mention world 36, so I corrected it =P
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Yeah, for example, I believe that the closest anyone's got to being able to do this was making a cable that plugged into a Genesis controller port. But, as Bisqwit mentioned, emulators are not 100% accurate, especially Gens. I know for a fact that, in the case of the Sonic games at least, there is quite a bit more lag on real hardware than on emulation - thus it will be nearly impossible to watch any Sonic TAS runs on real hardware. You'd have to figure out a way to detect lag, and I don't think that would be too easy to do by programmatically looking at the video signal.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
The jumping up vines trick isn't so hard for me in realtime. I think you just basically have a very few number of frames after you're no longer climbing where you can jump as if you were standing on the ground. So basically, I use left/right to get off the vine, then a split second after the climbing sprite changes, hit A and jump (and also, if you want to go back to the vine, hit the opposite direction on the dpad). Also, there is an interesting trick that I've only made use of in one place, and since it's been a while, I forget exactly which world, so I'll just describe it - it's the area with the crystal ball surrounded by two pots, both of which contain a POW. Drop the POW and make the ball bounce, then slide under it. Of course, the ball will begin bouncing off your character's head. When it gets quite a bit higher, if you jump straight up just right as the ball is coming down, you can actually jump through it and grab it in midair. Not too useful for TAS running unless you're making an acrobatics movie instead of a speed movie.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I know this is a bump, but I was playing LADX the other day and found something that might speed up runs slightly - with either the Guardian Acorn or the Piece of Power, if you press Start and enter the inventory screen as soon as you pick one up, then immediately exit the inventory screen, the screen will stay white for about an extra second, and then the game will proceed without displaying the message box for the item, which I think is faster than going through the three 'screens' of message that the game normally gives you. I don't know if this would be so helpful for the original LA since you can dump out of the "non-vital" message boxes with B, but I figure it might greatly help anyone doing an LADX run, since the Piece of Power makes you walk quite a bit faster than normal.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Well, in Stealth's hack, he didn't use exactly the same pallet for Knuckles, allowing him to keep the original colors for all the badniks and everything else. There are a few people who want the accurate Knuckles pallet, and there is such a hack of Stealth's hack being done. But, of course, it throws off some of the colors throughout the rest of the game.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
That information you linked to is a bit outdated, but still a good read. Sonic 2 is supported by a hidden 256KB ROM that is only enabled when Sonic 2 is connected. Here's what is currently known: The S&K cartridge is always at $000000, and the attached cart always appears at $200000. The game checks the attached cart's product ID, and if it matches that of Sonic 2 (rev 00, 01, or 02) then it enables the 256KB ROM, which appears at $300000. Then, it jumps to $300000 and the game code runs entirely from that 256KB, referencing data from the S2 cart (which is now at $200000). With Sonic 3, the game logic is contained entirely within the main S&K cart, and it references the S3 cart only for data. My theory for the non-support of Knuckles in Sonic 1 is simply due to cost - since they had to basically rewrite the game logic and put it in the hidden ROM, that means that they'd have to do the same thing again for Sonic 1, which may have simply cost too much to implement.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Speed and collecting Chaos Emeralds are not wholly mutually exclusive, unless you mean "total speed of game completion" and not "speed through each act of each zone". You just have to plan you're route so that you go past a lamppost with more than 50 rings, then take a very small detour to enter the stars that appear. Plus, when you get all seven emeralds, you gain the ability to use Super Knuckles by gaining more than 50 rings and then attempting to glide. This can also be enabled by cheat code, but it's correct to only use it the proper way in a TAS.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
If anyone's working on a run of this, they might want to put it on hold for just a bit - Stealth is working on a "rev 01" of the hack with several bugfixes and improvements (for starters, the rev 01 raster effects - parallax clouds, plus the wavy effect in LZ), and I just finished testing it on real hardware and reporting the results (for example, most of the garbage tiles on Knuckles' sprite are gone, except for three tiles on one frame). Also, the spike bug is fixed, although I can't imagine that will matter for a TAS, since you're not going to die anyway. When he's released it to the public, I'll let you know.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
Whoops, I'm not a checksum expert. Which checksum do the other emulators use? If they all use the same one then it would make this a lot easier. Either that or just settle on a single checksum for each system then just store it in your database as a raw hex string.
Experienced Forum User
Joined: 10/3/2004
Posts: 138
I know for a fact that FCEU stores the CRC32, because it tells you if there is a discrepancy (for example, I used a hacked SMB1 ROM with SMB2j graphics and it showed my ROM's CRC32 in red).
Experienced Forum User
Joined: 10/3/2004
Posts: 138
The newest versions of VICE can output proper video in PAL-mode via ffmpeg, as well. NTSC-mode is not recommended as the emulator still only outputs 50fps. Also, VICE is cross-platform and open source, so one could add their own rerecording functions. Plus, the Linux version is awesome (and the 'native' version, as that's where VICE development takes place).