Posts for Bisqwit


Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Great thing Internet has timezones!
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Vatchern wrote:
does this mean now, that it will be alot easier to manipulate the scrolling?
Not really. It's still as much a matter of good luck as it was before. We knew before it has something to do with lag and _very good_ luck, and we still know exactly that much. But it may enable us to find new techniques. I for example added in FCEU some code that tracks if the glitch occurs at some other circumstances. Even if it has no symptoms there, it may be irked to have them, when you know what you're searching for.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
So am I right in understanding that this project is on pause?
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Thanks for the update! I wish you energy in creating the high-quality TAS :)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Make no mistake, this is not something you can obviously see when you write the game, or even when you run it. It requires very specific circumstances, not unlike those which are the background for kernel exploits in modern operating systems.
Post subject: Scrolling glitch workings discovered
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Hi, Finalfighter and I just discovered what happens in Rockman 2 when it scrolls the screen the wrong way: Scrolling to down when the screen is supposed to only scroll horizontally, or scrolling to the right when the screen is supposed to only scroll vertically. As we knew so far, it happens when lag occurs at the exact same moment when Megaman is on the edge of the screen, about to plunge to his death. When lag occurs sufficiently, the screen scrolls down instead of Megaman dying nonchalantly. So far, we hadn't been able to figure out why it does not always happen when lag occurs: you could have dozens of enemies and Item1s on the screen, the game would be running at half of its normal speed, and yet Megaman would die at the bottom of the screen. Here's what happens normally when Megaman is at the bottom of the screen. 1) The game loads CurrentOrderNum (memory address $38), which indicates the index into the level data which determines the layout of the rooms in the stage. 2) The game reprograms the mapper in order to access the memory bank in which the level data is located. 3) The game reads the value of level data indicated by CurrentOrderNum. 4) If the value loaded equals 3, then the screen may scroll down. Otherwise Megaman dies. Here's what happens when the screen scrolls unexpectedly. 1) The same as above. The value is placed in register Y. 2) The same as above. However, during the mapper reprogramming, the NMI occurs. 3-4) The same as above. Why does this change the circumstances? Let us observe more closely what happens: 2a) The mapper reprogramming routine sets up a flag indicating that it is reprogramming the mapper. 2b) The routine starts reprogramming the mapper. 2c) The NMI occurs. Because the mapper was just in the process of being reprogrammed, the NMI does not change the mapper (for it's not re-entrant), and returns very quickly. The NMI sets up a flag indicating that the sound code was NOT run. (For the sound code is located in another bank and to run it, the mapper would need to be reprogrammed.) 2d) The mapper reprogramming routine notices that the sound code was not run, and therefore chooses bank 12 and runs the sound code. Then it chooses the requested bank again. 2e) The mapper reprogrammer returns, and code continues from step 3 as above. Somewhere here, the value loaded in Y (indicating CurrentOrderNum) changed. The thing is, when the mapper reprogrammer runs the sound code (that is normally run by the NMI), it does not restore the register contents. The sound code clobbers the value of Y, and it does not restore it. So when the code continues from step 3, it has got the wrong value in register 3. When the level data is accessed, it accesses different room data than it would normally do. This is the core of the error. Why does it happen? Well, during Q&A, the game testers probably noticed that in some circumstances, when the game slows down, the music also slows down. The music slows down because the music code, which is normally run by the NMI, cannot be run while the mapper is being reprogrammed. Since music slowing down is a sign of a Badly Programmed Game, they added extra code in the mapper reprogrammer to run the sound code if the NMI skipped it. However, they failed to restore the register contents when sound code is run in this exceptional way. So that is how the trick works. So how do we achieve it? Turns out, it is exactly as difficult as we have observed. Here is a disassembly of the mapper reprogramming routine:
SwitchBank:
[1E]C000: 85 29                sta DesiredMapperPage       [$0029] A=0E X=2A Y=00 S=F9 P=24
[1E]C002: 85 69                sta CurrentMapperPage       [$0069] A=0E X=2A Y=00 S=F9 P=24
[1E]C004: E6 68                inc MapperProgramming       [$0068] A=0E X=2A Y=00 S=F9 P=24
[1E]C006: 8D F0 FF             sta $FFF0                   [$FFF0] A=0E X=2A Y=00 S=F9 P=24
[1E]C009: 4A                   lsr                                 A=0E X=2A Y=00 S=F9 P=24
[1E]C00A: 8D F0 FF             sta $FFF0                   [$FFF0] A=07 X=2A Y=00 S=F9 P=24
[1E]C00D: 4A                   lsr                                 A=07 X=2A Y=00 S=F9 P=24
[1E]C00E: 8D F0 FF             sta $FFF0                   [$FFF0] A=03 X=2A Y=00 S=F9 P=25
[1E]C011: 4A                   lsr                                 A=03 X=2A Y=00 S=F9 P=25
[1E]C012: 8D F0 FF             sta $FFF0                   [$FFF0] A=01 X=2A Y=00 S=F9 P=25
[1E]C015: 4A                   lsr                                 A=01 X=2A Y=00 S=F9 P=25
[1E]C016: 8D F0 FF             sta $FFF0                   [$FFF0] A=00 X=2A Y=00 S=F9 P=27
[1E]C019: A9 00                lda #$00                            A=00 X=2A Y=00 S=F9 P=27
[1E]C01B: 85 68                sta MapperProgramming       [$0068] A=00 X=2A Y=00 S=F9 P=27
[1E]C01D: A5 67                lda SoundCodeSkipped        [$0067] A=00 X=2A Y=00 S=F9 P=27
[1E]C01F: D0 01                bne $C022                           A=00 X=2A Y=00 S=F9 P=27
[1E]C021: 60                   rts        <-- this branch is normally taken
[1E]C022: A9 0C                lda #$0C    <-- this branch is taken when the glitch happens
[1E]C024: 8D F0 FF             sta $FFF0                   [$FFF0] A=0C X=2A Y=0E S=F9 P=24
[1E]C027: 4A                   lsr                                 A=0C X=2A Y=0E S=F9 P=24
[1E]C028: 8D F0 FF             sta $FFF0                   [$FFF0] A=06 X=2A Y=0E S=F9 P=24
[1E]C02B: 4A                   lsr                                 A=06 X=2A Y=0E S=F9 P=24
[1E]C02C: 8D F0 FF             sta $FFF0                   [$FFF0] A=03 X=2A Y=0E S=F9 P=24
[1E]C02F: 4A                   lsr                                 A=03 X=2A Y=0E S=F9 P=24
[1E]C030: 8D F0 FF             sta $FFF0                   [$FFF0] A=01 X=2A Y=0E S=F9 P=25
[1E]C033: 4A                   lsr                                 A=01 X=2A Y=0E S=F9 P=25
[1E]C034: 8D F0 FF             sta $FFF0                   [$FFF0] A=00 X=2A Y=0E S=F9 P=27
[1E]C037: 20 00 80             jsr SoundCode  <-- clobbers the value of Y
[1E]C03A: A6 66                ldx $66                     [$0066] A=00 X=0E Y=1C S=F9 P=26
[1E]C03C: F0 0A                beq $C048                           A=00 X=00 Y=1C S=F9 P=26
[1E]C048: A9 00                lda #$00                            A=00 X=00 Y=1C S=F9 P=26
[1E]C04A: 85 67                sta $67                     [$0067] A=00 X=00 Y=1C S=F9 P=26
[1E]C04C: A5 69                lda CurrentMapperPage       [$0069] A=00 X=00 Y=1C S=F9 P=26
[1E]C04E: 4C 00 C0             jmp SwitchBank              [$C000] A=00 X=00 Y=1C S=F9 P=26
The window of opportunity is such, that the NMI must occur within a 10 instructions window: Addresses C006 .. C019. If the NMI occurs when PC ≤ C004, or PC ≥ C01B, the glitch won't occur. Incidentally, this is exactly 25 instructions before the main loop returns waiting for the next NMI. So it requires a very small lag: 25..34 instructions too much for the CPU to execute during the current frame. The values that the sound code may leave in the Y register seem to include: * Predominantly 1C. * Value 01 every 10th frame or so. * Other values such as 09, 0B, 0F at different moments (sound effects seem to play a role in this) 1C being the most common value is good news. Let's look at the level data:
Map 0
00003400  47 40 4a 40 20 20 00 88  80 80 80 80 80 04 00 00  |G@J@  ..........|
00003410  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
Map 1
00007400  49 40 28 20 00 45 40 40  40 45 40 40 00 00 00 ff  |I@( .E@@@E@@....|
00007410  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
Map 2
0000b400  44 40 20 20 20 80 80 44  40 40 40 22 20 00 40 40  |D@   ..D@@@" .@@|
0000b410  40 44 40 40 40 40 22 00  00 00 ff ff ff ff ff ff  |@D@@@@".........|
Map 3
0000f400  44 40 40 40 26 24 20 00  80 80 80 80 80 80 41 40  |D@@@&$ .......A@|
0000f410  40 40 40 23 00 00 00 ff  ff ff ff ff ff ff ff ff  |@@@#............|
Map 4
00013400  40 40 40 40 40 40 40 44  40 40 40 40 40 40 40 22  |@@@@@@@D@@@@@@@"|
00013410  20 00 00 00 00 00 00 ff  ff ff ff ff ff ff ff ff  | ...............|
Map 5
00017400  46 40 40 40 40 40 40 24  20 00 40 40 40 25 00 00  |F@@@@@@$ .@@@%..|
00017410  00 ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
Map 6
0001b400  49 40 28 20 00 00 00 ff  ff ff ff ff ff ff ff ff  |I@( ............|
0001b410  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
Map 7
0001f400  80 80 81 80 80 80 81 80  80 80 80 80 80 80 21 20  |..............! |
0001f410  00 00 00 ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
These are the tables indexed with the Y register value at step 3. There are 8 tables, for 8 stages. (The Wily stages reuse the tables for the 8 basic stages.) As you can see, in each of these tables, the value at offset 1C equals FF. Why is FF is good? Because it is a bitmask indicating that the room can scroll into any direction: left, up, right (shutter), and down. Okay, so how to reliably make the scrolling happen? I have no idea. Everything can affect it -- including the playing position in the music! We know that 1) Although Mega Man 1 uses the same sound engine as Mega Man 2, this bug does not happen in Mega Man 1, because Mega Man 1 uses a mapper that can be reprogrammed in an atomic (uninterruptable) manner, and therefore there's no need to run sound code in non-NMI context. (It is unknown whether MM3-6 are vulnerable, but since they use a radically different codebase, probably not.) 2) This glitch is not limited to scrolling. In fact, any time the SwitchBank routine is invoked by a code that does not expect the Y register value to change, something weird can happen, if only the NMI occurs at the right moment!
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
mr_roberts_z wrote:
Do you know your IQ? You seem to have taken the Jung Test and the SparkNotes Personality Test, so it seems probable that you might've taken an IQ test at one point.
Yes, I took the Mensa test a year ago. By convention, I don't disclose the result. But it was more or less exactly what I expected.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I haven't got so far in my plans as to address changes to the forums. Though it is my plan to upgrade to phpBB3 sooner or later. But at that time, I want to keep most of the things the same.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
However, they do emit quite wicked gravity waves. There was an animation or two rendered of it, I don't happen to remember how to find either one though. Interesting question is, what happens if both rotate?
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
The project is nearing visible results. Expect news within a week.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
mr_roberts_z wrote:
D.Bq.: Would you, under any circumstances, accept a 1-frame improvement (the one Mmbossman linked to appeared to be accepted by Adelikat)?
Possibly under some circumstances.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
mmbossman wrote:
I disagree
That's not a 1-frame submission. That's a 1-frame improvement.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
mr_roberts_z wrote:
1. Would you, under any circumstances, be prone to accepting a 1-frame submission (as far as I'm aware, there hasn't been one yet)? 2. On the "sidebar" of the main page, "Front Page" and "Movies" both link to the same thing. Would you consider getting rid of one of these (maybe saying "Front Page (Movies) on the remaining one"?
1) I don't think so. 2) The ambiguousness/redundancy will resolve itself in the upcoming redesign.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Inzult wrote:
Assuming you aren't a vegetarian, do you prefer Moose, Reindeer or good ol' Cow meat? Assuming you aren't opposed to liquor, do you prefer Lakka, Mead, or Vodka? Assuming you don't hate deliciousness, do you prefer Blueberries, Strawberries or Raspberries? Also why (if applicable)
Although the moose (and in north, the reindeer) are common hunted animals in Finland, it's rare really to get to enjoy them. I can't really tell how they taste. So far all the moose I've ate has been quite tasty though. Usually, the choices go between cow and pork. I like cow better as it's less fatty, but pork is cheaper. I have never drank vodka, and I have never even heard of Lakka liquor. Mead is a festive alcohol drink at the first of May (Labour day), enjoyed by children and adults alike, often with raisins. However, I like lakka the berry, i.e. cloudberry. I would go so far as to label it my favourite berry (following my father's footsteps). :) The raspberry comes as a close second. However, the cloudberry only grows at swamps and in miniscule amounts, making it rather a rare exquisity. It seems to be even rarer today than it was 50 years ago. I don't think I would like the Russian Vodka, or the Finnish Koskenkorva for that matter either. I am not generally in fond of the smell or taste of alcohol. Much like salt, it is better at enhancing other flavors than standing out on its own.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Deign wrote:
*I haven't read the past 20 pages, so if there's a repeated question, just link the response* 1. Where does the Universe end? 2. Do you think that the Universe is ever-expanding? 3. If so, do you think it will continue to do so? 4. If the Universe is expanding, how can it not have an end point? To expand means that it's limit is getting larger. 5. 日本語はどうがわかてきましたか。 6. Can I have my fortune for the day please =)
1--4: I like to picture the universe as a hypersphere. Tell me, where does the surface of a sphere end? One possible answer is: it ends on the surface. We observe its surface to each direction, but we cannot see any of the directions in which it ends. No. I think the universe is finite. From the temporal perspective, possibly, it does not come down in a big crash, but diminishes ad infinitum, eternally slowing down as its expands; much like a traveller to a black hole does to an external observer: eternally slowing down without reaching a definite point. It is said that the universe expands at an accelerating rate; things farther from us are getting even farther faster than things close to us. Then there is a question of dark matter. Maybe the universe is really a hyperverse where each universe is a bubble that pushes on the other bubbles, applying an acceleration and mass? Black holes create new bubbles, recycling material from other bubbles. (Don't ask me to elaborate on this theory, I just made it up from various pieces of theories that are on my mind at different times.) 5: Through anime. I saw Pokémon on TV. I didn't consider Pokémon as an anime really, but through IRC contacts I tried later Initial D, which was anime. I became interested in learning more, and I read a few lessons at Maktos JIP. A year later, I went to an actual course, and I hung onto that course for a few years as a hobby. Later, some TASVideos related websites became an auxiliary motive for knowing Japanese. きみも、どうやって日本語をべんきょうするを始めましたか? 6: I'll give you a Bible quote of day instead! Isaiah 45:22 Look unto me, and be ye saved, all the ends of the earth: for I am God, and there is none else.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
A first-person style racing/formula1 game for Atari 2600. I can't find out what game it was.
Post subject: Re: Images / CSS for the forums currently unavailable
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Apparently fixed now.
Post subject: Re: Images / CSS for the forums currently unavailable
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Trying to figure out what's the deal with stc.cx. In the mean time, try adding bisqbot.stc.cx to your hosts file as 194.29.198.4.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
… right.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
380 kB JPG * 2... and yet at such small resolution. Sheesh.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Saturn: Well, you have to understand that it pisses off people to know that you've been sitting on this information all the time while not producing anything. When you suddenly trump yourself forth when others discover the trick, stealing their thunder, it only creates aggravation. So you see, your behavior creates only negative feelings with no benefits. I understand your philosophy of not spoiling the surprises, but you are taking too long time for those surprises to be worth anything. Additionally, withholding that information means that resources are being wasted as many people do concurrently the same work. It is impolite towards your fellows to impose waste of work. Also, who are you planning to surprise? I don't read this thread. When something gets submitted at this site, it is a surprise to me. Those who will want to be surprised can be surprised at their own discretion. Considering adopting a more open and free philosophy of sharing information. Also consider this your second warning.
Post subject: Re: Search Forms need a button
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Dwedit wrote:
Search Forms need a Search Button, because Wii Opera lacks an enter key.
You used plural for "forms". Search form at http://tasvideos.org/Search.html has a button. Search form at http://tasvideos.org/forum/search.php has a button. Search field at http://tasvideos.org/ and http://tasvideos.org/MovieSearch.html doesn't have a button, but it is designed to take little space. Use the Search.html page.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
stickyman05 wrote:
i personally dont have a problem with obsoleting a run when the original author is the one to do the name changing. if, for example, Halamantariel decided to resubmit his earthbound tas with a one letter name earthbound, i dont think i would have a problem with it. that goes to say i dont have a problem with it when absolutely nothing is changed but the names. authors, comments, ect would stay, jsut the file changes. i say this with the assumption that there is nothing more that can be done to make the game faster. for example, right now there are no new tricks to make super mario brothers faster, so a little name change in the file will only affect the perfect-ness of a movie (of course you cant change mario's name, but, you know, work with me). however, if your file did NOT include the flag glitch thing and you decided to simply change names and call it faster (aka, resubmit un-optomized) then i have a problem with the renaming thing.[/ramble]
Rambling is good, just try to practice punctuation and typography so it becomes readable too :) Starting with capital letters in the beginnings of sentences.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
FCM indicates all the required information. The ROM selected by NVA was an exact match for the MD5 indicated in your movie file header. Only VBM and GMV don't.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Dammit wrote:
I am trying to pull my own weight by encoding my own Shinobi II submission, but I need the intro boilerplate logo before proceeding further. I do not want to make my own. I like the bisqwit one just fine. Lossless avi would be best, but I'll take the 360 tga files if need be. Better yet, make it available to everyone from the encoding page. https://tasvideos.org/EncoderGuidelines
Which resolution do you require? https://files.tasvideos.org/bisqwit/bisqlogov5-256x240.zip -- Here's 256x240. Note that these images are partially transparent (they have alpha channel). It works best if it is blended together with the beginning of the animation. If you convert it into an AVI and append the game movie with the AVI, you'll probably get bad results because AVI does not know about the alpha channel. (Also, 6-second intro animations are not allowed here anyway unless the game starts running and being viewable before 2 seconds.)