Posts for Bisqwit


Post subject: I need the list of GB system details
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I need the list of systems emulated by VBA, and for each of them, the image sizes of the typical screen in pixel. Current I have:
+---------+-------------------------------+-----+-----+-----+
| abbr    | name                          | x   | y1  | y2  |
+---------+-------------------------------+-----+-----+-----+
| NES     | Nintendo Entertainment System | 256 | 224 | 240 |
| SNES    | Super NES                     | 256 | 224 | 240 |
| Genesis | Sega Genesis                  | 320 | 224 | 240 |
| GB      | Game Boy                      | 160 | 144 | 144 |
| SGB     | Super Game Boy                | 256 | 224 | 240 |
| GBC     | Game Boy Color                | 160 | 144 | 144 |
| GBA     | Game Boy Advance              | 240 | 160 | 160 |
+---------+-------------------------------+-----+-----+-----+
(Yes, the site ignores the fact that there are 256xN Sega games) This information is needed by the site engine to group movies by system and to render the movie list properly. Most specifically, I'm interested of: - Whether it would be better to group some of those systems together - Whether the maximum image sizes are wrong (because of border, maybe?)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I created a new page dedicated for this movie. http://tasvideos.org/Bisqwit/RockmanMovie.html Other movie authors can follow this style (of creating a dedicated page for movie development), if they have editor level user access. See http://tasvideos.org/Users.html
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Well, the exact FPS the emulator uses is important, because otherwise the audio in the AVI will drift out of sync with the video.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Mazzic wrote:
Bisqwit wrote:
Replying to 10 months old thread for testing...
Did it work?
Yup.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Can you please link a version that doesn't require opengl? Because it seems I have problem with opengl libs in Wine... Edit: In the source code, it seems you haven't touched the FPS variable, and that have hardcoded "LoggingEnabled" to value 2 (I'd rather hope you keep it 0 and set to "2" only when the movie is started). Are you sure the FPS (60.000) is correct for all games? Is it actually correct for _any_ game? Also, I have another question. See http://tasvideos.org/VBM.html .
Nitsuja wrote:
-frameskip 0 is to make sure all frames get in the video. (It can/should be set higher when not outputting video.) -synchronize 0 tells it to NOT limit the playing speed to the normal sound-playing speed. (For normal viewing, use synchronize 1 instead.) -throttle 1000 tells it to run at 1000% speed, or as fast as the computer can handle, whichever is lower (probably the latter). Must also have -synchronize 0 or this won't work right... (For normal viewing, use throttle 100 instead.)
These options are excellent. Thank you!
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
nitsuja wrote:
OK, I added -audiolog and -videolog flags that use the nesvideos-piece code. http://nvdata.pilif.ch/VBA-rerecording-new3.zip
Thank you! I'll test this tomorrow evening, because I don't have time before that.
nitsuja wrote:
I think the application still needs MFC71.dll and msvcr71.dll to run. (These are both publicly available files, if you don't have them already.)
Ok. I guess I'll have them from http://www.dll-files.com/ .
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
-Tempest wrote:
I just think it's funny that a movie goes from having a star, to being slightly faster due to a change at the end of the game, and no longer has a star.
It just means that the one who published the movie (Dehacked) wasn't the one who is the only one (Bisqwit) who can control which movies have those stars. And since I was away for a couple of days, I didn't notice it either. I'll add it now - thanks for notifying.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
nitsuja wrote:
Also, about Wine, are there any features of Windows that don't emulate properly in Wine that I should avoid?
Well, I need the dynamic libs that are used by the emulator. If it uses MFC or .NET, I need those libs.
nitsuja wrote:
What exactly do you mean by raw audio and video data?
For example, assume that there's a 100-second movie: - If the audio is configured as 44100 kHz stereo and sample bitness is 16-bit, it should output exactly 44100*2*2*100 bytes of audio data. - If the video is 256x224 and colour depth is 16-bit and frame rate is 60 fps, it should output exactly 256*224*2*60*100 bytes of video data.
nitsuja wrote:
do you want the formatting information (width, height, depth) to be part of the file in some format I define, or outputted elsewhere?
If you can link this module into the code, it'd be nice: http://bisqwit.iki.fi/kala/nesvideos-piece.cc (C++ code) The functions and variables defined by this module are (all are extern "C"):
/* Is video logging enabled? 0=no, 1=yes, 2=active. Default value: 0 */
int LoggingEnabled;

/* Assumed video frame rate. Default value: 60 */
unsigned FPS;

/* Get and set the video recording command (shell command) */
const char* NESVideoGetVideoCmd();
void NESVideoSetVideoCmd(const char *cmd)

/* Get and set the audio recording command (shell command) */
const char* NESVideoGetAudioCmd();
void NESVideoSetAudioCmd(const char *cmd);

/* Save 1 frame of video. (Assumed to be 16-bit RGB) */
/* Does not do anything if LoggingEnabled<2. */
void NESVideoLoggingVideo(const void*data, unsigned width,unsigned height);

/* Save N bytes of audio. bytes_per_second is required on the first call. */
/* Does not do anything if LoggingEnabled<2. */
/* The interval of calling this function is not important, as long as all the audio data is eventually written without too big delay (5 seconds is too big) */
/* This function may be called multiple times per video frame, or once per a few video frames, or anything in between. Just that all audio data must be written exactly once, and in order. */
void NESVideoLoggingAudio(const void*data, unsigned bytes, unsigned bytes_per_second)
The thing I'm concerned with is the popen() call. I don't know if it works with Wine. If it doesn't work, it has to be replaced with fopen() and "w" replaced with "wb".
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Good sutff. 40 seconds of improvement - just amazing. :) I especially liked the creative tactics involving the grappling hook at the end of the Garba's Tower and various other places.
Post subject: Re: Two of them
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Omega wrote:
This one's better than Mario dying.
Took this, but the other doesn't seem to be suitable for either of the remaining tasks.
Post subject: Re: Nice shortcut Icon
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
/me points here
Post subject: Re: favicon.ico
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Good thing you brought this topic up. Now I want someone to design a new favicon.ico for us. :) And not just one, but three: - One for published movies - One for pending submissions - One for other content (regular pages) The forum can share one of those. Why? Because when you bookmark individual pages (or use the RSS live bookmark list feature of Mozilla Firefox), you'll have different types of pages in your bookmark list, and it'd be nice if you can visually spot which entries are of which type. And I'm not really satisfied with the dying Mario icon. :)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
nitsuja wrote:
I'm pretty sure it should run to Bisqwit's requirements in Wine once I make some commandline argument flags.
This sounds good. For clarity, I list the hopes I have for strictly-playback usage in Wine. Highly desired: - Possibility to specify the ROM filename at command line Desired: - Possibility to specify the movie filename at command line Required - either one of these two: - Possibility to specify a command that will be executed by the emulator at the moment when movie playback starts, and which the raw audio data will be written to (writeonly pipe) - exactly 44100 or 48000 audio samples per the amount of frames equivalent to a second. - Alternatively, possibility to specify a filename where the raw audio will be written to. The file must be opened with "wb" fopen mode, and the emulator must not attempt to delete it before writing. The emulator should also not care of the file size. Specifying might happen via commandline or a configuration file. Required - either one of these two: - Possibility to specify a command that will be executed by the emulator at the moment when movie playback starts, and which the raw video data will be written to (writeonly pipe) - exactly one image per frame. - Alternatively, possibility to specify a filename where the raw video data will be written to. The file must be opened with "wb" fopen mode, and the emulator must not attempt to delete it before writing. The emulator should also not care of the file size. Specifying might happen via commandline or a configuration file. Additional requirements: - The video/audio recording must not start before the movie starts playing. - The video/audio recording must not stop when the movie finishes - it must stop when the emulator is closed. - The emulator must not attempt adjusting for machine speed. It should simply output each video frame exactly once and output the equivalent amount of audio (measured in samples), without stretching or skipping. - The video data must contain all of the emulated console screen, but it should not contain menues and status lines. It may contain status messages, if they are overlaid with the emulation. - The format of the video data must be defined: width, height, depth (colour format), fps. - The format of the audio data must be defined: sampling rate, channels, depth (bitness). And of course, it must actually _run_ under Wine.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bisqwit wrote:
Creating a new post for NesVideoAgent testing
Replying to 10 months old thread for testing…
Post subject: Progress update & WIP & calculations
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bisqwit wrote:
door opening at frame #19924, and I think that's going to be it, but I'm still testing an alternate path. WIP file updated.
Good thing I tested the alternative course of action. Now the door opens at frame #19904, with 1 shot more left in Magnet Beam (3 left to be used in the corridor). File updated. I guess this is a safe point to continue from. Oh, I just remembered. I did some calculations at the weekend. - Rockman walks 1.3333 pixels per frame: the screen moves 1,1,1,2 pixels per frame in sequences of 4 frames. - The magnet beam unit is 16 pixels wide, of course, and the beam can be 16 units long. This length equals to 192 frames of walking. - The beam increments by 1 unit every 4 frames, except for the first unit which lasts only 3 units before the increment. - After releasing the beam, it lasts for about 157 frames (maybe 160, rounded to some global marginal, but I didn't do extensive testing) and then disappears. - Wall-ejection moves Rockman 16 pixels/frame, except when it's lagging: 16 pixels/2 frames. Lag can be eliminated temporarily by pausing. Assuming no lag, zipping is 12 times faster than walking. - It takes 59 frames of walking (assuming no lag) to construct a full-length magnet beam. During that time, Rockman walks ~79 pixels, which equals to ~5 units (16 pixel blocks). - Technically, it's faster to zip in short bursts than to construct+use a long one, but lag and other factors often make long bridges more practical.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bisqwit wrote:
I once managed to open Fireman's door at frame #19949, but when I attempted to improve it, I haven't been able to get better than #19970 or so... Sigh. <snip> This WIP can be downloaded here: https://files.tasvideos.org/bisqwit/bisqwit-rockmanv6-incomplete.zip <snip> Edit: Ok, I managed to squeeze 9 frames from early of Fireman level. I'm trying to improve two other places too. I'll update the WIP later again...
Ok, I managed to get the aforementioned door opening at frame #19924, and I think that's going to be it, but I'm still testing an alternate path. WIP file updated.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Just to clear the issue, the question was about the NES game Mega Man 2. Which the poster didn't happen to mention. Next time, please post at the NES games forum and do mention the game name (preferably in the post subject!). (*) Good luck! *) Even better, find the existing thread, since the question has been asked before and also answered. Would have saved you from posting :) That's why we have the "Search" option here. And if it hadn't been asked, you could have posted to the same thread which was already on-topic.
Post subject: Re: Bubbleman glitch
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
bra5 wrote:
How do i warp through the wall? The same thing happens everytime, i just get stuck in the wall not warping through it. Is there something else you have to do like jump, shoot or something? Or is it that it doesnt work in Virtua NES?
Are you talking about a certain game? What console? Or is it something general, because you posted to the General forum? Now, the answer to your question is at http://tasvideos.org/RockmanTricks.html. (*) Wondering how to find that page? It's linked at the FAQ. The bold text at the top of this page advises you to read the FAQ before posting. It would seem that you did not do so. *) Yes, it's there - read carefully the part about "inside a wall" situations. The technique is not specific to the Bubbleman level.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
ramond wrote:
Vbm? A very strange format... Which emulator does it base on?
Hint: Read the forum names at http://tasvideos.org/forum/ Spoiler: Visual Boy Advance
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bisqwit wrote:
I'm aiming for at least 30 seconds of improvement, but even 50 might be possible... So far, I have worked out 16 seconds of improvement in 3 levels (of which 2 are played), but I need to redo Iceman because it can be improved by a few seconds more.
Okay, a few days off Internet did good for this movie. I got my three seconds: Iceman level is now improved by 8 seconds compared to the previous movie, and 3 seconds compared to previous WIP. I also have played most of the Fireman level, but I'm now stuck at the Fireman level ending. I once managed to open Fireman's door at frame #19949, but when I attempted to improve it, I haven't been able to get better than #19970 or so... Sigh. Excluding that circumstance, I have improved Fireman's level by about 2 seconds. I have yet to measure the exact amount. This WIP can be downloaded here: https://files.tasvideos.org/bisqwit/bisqwit-rockmanv6-incomplete.zip Edit: Ok, I managed to squeeze 9 frames from early of Fireman level. I'm trying to improve two other places too. I'll update the WIP later again...
Post subject: On glitches and discovering them
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Ramzi wrote:
A glitch is, in a way, error handling. Am I wrong about this?
I can outline three categories: Extreme cases. Situations that occur so rarely in a game that if the programmers had programmed the game to check those special circumstances, the game would have been bigger and slower. So they omitted the checks. Quick and dirty programming The game might implement a quick-and-dirty way, such as in SMB1 and SMB3: it's no secret that Mario can occassionally end up partially inside a solid matter, and for that purpose there's another hack: the game ejects Mario from the wall to a certain direction. That behavior is faster to execute (lag less likely) than a pixel-precise collision check. Mistakes in programming Sometimes they are mistakes, such as in Rockman 1: It's an off-by-one error in the ceiling collision check - a very common type of programming error.
Ramzi wrote:
How do you discover them?
It's a process of a few aspects. Finding something suspicious. Anything that catches the attention: Mario's vertical movement suddenly stopping when he bumps into a wall while jumping is a good example. Understanding the game programming. When you see something suspicious in the game, you need to construct a model in your mind of how it works. In a way, this is of reverse engineering the game. The game source code could help in this, but it can be almost as difficult to spot things like that as by playing. In SMB2, the ladder trick is a combination of: - the observation that thrown enemies regain their movement differently (or don't regain at all), depending on how the player character is hurt. - understanding the game programming; a certain part of the monsters' program is not run while the player character suffers in pain, and it resumes after the player character regains control. - observing that a monster that has been placed under the floor can be picked up - trying what happens when that happens under a climbable thing. Knowledge of common caveats. The growing understanding of glitches of many games helps greatly in this. Some caveats exist in many games. Often, they're limits mandated by the environment: perfect collision checks need too much CPU time, so they use less perfect collision checks ("quick and dirty programming"). Some caveats we have collected at the common tricks page.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Nice finds :)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
It's obvious that the new SMB3 movie will be faster than the old. If you decide to switch to USA version, it's fine by me, but it makes the exact improvement very difficult to calculate. Some people would be interested of the exact improvement.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I SHOULD TELL YOU A SECRET. MANY OF THE CREATURES HERE WILL GIVE YOU A RIDE IF YOU FEED THEM CANDY.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Creativity blooms. I'm happy. :) But I'd appreciate it if Foda would rerecord from getting the second flute. 200 frames of random combinations of left+right+b+down aren't very cool to watch... <dan_> Suggestion: Either do some walljumps or the walk-through-walls glitch after getting the 2nd whistle. It would be better to exploit the game engine than move back and forth really quickly