Posts for AnS


AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
BTW, is there any kind of documentation on FCS format somewhere in the Internet? Same question with VMV and Snes9x savestates.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
The game's really cool, but it's hard to make good TAS with such long and repetitive games. A year ago I tried to make one, but lost motivation somewhere at the beginning. But I have some notes to share: In most of races (especially at the beginning and at the end of the game) it's faster to destroy green boat rather then rush forward. At the beginning your rivals use weak boats, so you can quickly tear them apart. After several levels they power up defense of their boats, and it may be faster to just win the race normally. But near the end of the game levels become way too long (while power ups stay fixed at the maximum), so again it's faster to crush your opponent. Here's an example, very unoptimized. There should exist more clever tricks to deliver damage to green boat. And I did it without Memory Watch, thus it's only proof of concept. Also, for quality run of the game it's essential to manipulate nitro drops (in backview mode) so that you'd have 9 nitro at the end of each lap. I beleive it's possible to run the game in smth like 20 minutes, which is quite bearable for racing games. Well, maybe adding some artificial variety can keep it interesting for whole 25 minutes.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Watched this 5 times and didn't get bored! 5xYes! Such runs keep term Superplay alive - most of other submissions are just Speedruns but nothing more. Unfortunately, the movie WILL desync after changing musics even slightly (I tried it today). So the only way to record sounds without BG music is to modify FCEU to catch sound initialization code and deliberately use previously recorded samples of game sound. But that won't be "real", and I'm not sure it worth it. Huh, and after reading some of the comments I'm SO relieved by my old decision to quit Contra DualTAS. Such thankless tasks should be done only by team. Of ninjas. BTW, I have additional idea for showing controller input. To keep button status more understandable (right now it's just crazy flickering) you may want to place semi-transparent copy of controller image from previous frame - place it right on current controller display. This way viewers would have twice more time to visually catch button events, therefore it would be easier to feel connection between input and all four games.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Truncated wrote:
AnS> I thought last year I've found optimum between speed and entertainment in the game. Your submissions said as fast as possible, and not that there were any entertainment trade-offs.
Well, maybe I shouldn't say "entertainment", but you could understand what I meant. After all, it's usual case here at tasvideos. A lot of published movies have "takes no damage" feature, while they obviously can be completed faster by taking damage or using death as shortcut and so on. I guess, this also belongs to speed/entertainment dilemma, although it's hard to tell where there's an entertainment. Namely I've traded 3+ seconds for: * not taking damage (while playing HARD MODE you can only take damage in boss battles; during levels any hit means instant kill) * varying players / types of weapons * showing "eagle" boss ending (Elephant boss) Also, don't get me wrong here. I'm not telling this to defend my old run (it's really obsoleted now, just not by whole 4 seconds). I'm telling this to further explain why I'm not voting for TAS of the game I like.
Truncated wrote:
Anyway, I'm interested in hearing what the improvements were, since the submission writes so little about it.
Watching xipo's TAS I've noticed there are frames that come from optimizing and polishing published TAS (reducing lag, better precision). These are really improving previous run! So, if only xipo didn't take damage and refused cheap ways of saving time (e.g. time consumed by choosing player), I'd vote big YES. But right now I can't call this an improvement, so I'm not voting myself, but I'll respect any decision. After all, maybe I'm wrong and the game really looks better this way.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
I mean... what a surprising day! :) But I must say, I abstain from voting. You know, with such "anything-goes" methods the run still can be improved. Unfortunately, entertainment value drops down considerably. I thought last year I've found optimum between speed and entertainment in the game. But let's see how does my opinion correlate with judges' own. ;) Anyway, hooray for new record! I'm glad I'm not alone there.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
WHAT!?
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
I DID like watching this movie, so I voted Yes. But as for publishing... I hope author would consider cancelling this submission. The idea isn't novel, although realization is. And there's no need to make AVI - I don't think someone who can't find ROM will enjoy such type of movies.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Randil wrote:
So it looks like I'll have to go back if I want those frames...
You see, it's more like those frames want you. :) And Soviet Russia has nothing to do with that, read my PM for details. So... everything from the beginning again?
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Randil wrote:
Hmm, did you test if you could save some time by grabbing the platform around frame 15700 a little later. I do that in my movie, and thanks to this, I don't need to ride the platform for as long, which isn't very good because it moves so slowly. Perhaps you even saved a few frames grabbing it a little earlier?
I saved 1 frame by making platform start moving earlier. At first I tried to touch it even earlier (by the most left corner), then jump down and then jump higher and grab this platform by rightmost corner, but it proved to be impossible because of spikes. Although this trick may be useable somewhere later in the game.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
I've watched level 3 and come to thinking that you hesitate to spend arrows freely. :) I'd use them everywhere (even for the sake of 1 frame improvement), but also constantly refill weapon meter with the help of every second enemy I see. You know, there's no such thing as good or bad luck - the game's luck is always "average", and it's only a matter of rerecords to determine luck that you need. Here I improved level 3 by 95 frames, still having original amount of arrows before the boss.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Randil wrote:
This means that I won't have to worry about getting a lot of gas in the upcoming levels
Aha, so don't you think now that trading several frames for Gas at first level was kind of waste? ;)
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Randil wrote:
1. Can you manipulate how enemies behave by killing the previous enemy on a different frame? For example, around frame 4500 there are two enemies on platforms above me. I need to manipulate these two to not shoot a lot while I'm moving past them, because if they shoot it will cause lag. As it is right now, I wait a few frames for them to move as I want them too.
It depends. Only several types of enemies use RNG, others just use player coordinates to make decisions. These shooting ones use RNG at the moment of respawn or turning back. So to manipulate these guys you need to experiment with other shooting guys (earlier at the game). because there's no other enemies that use RNG in the level. Here's how you can make enemies call RNG later/eralier then usually: * encounter them in different frame (lose frames - no way) * kiil them before thay call RNG again (for these shooting guys - shoot him before he turns back) or keep them on screen for calling RNG several times * somehow slow them down (for example, these guys duck when you shoot, so after that they gonna call RNG later) * since all such enemies use one RNG values (E4 and E5), you can combine measures to achieve different results (for example, shoot first enemy and leave second, then vice versa, then both and so on). Note that while you can't affect E4/E5 (values for enemy behavior) by changing E6 (by killing enemies little earlier/later), but manipulating E4/E5 will dramatically affect E6, thus changing luck for item drops.
Randil wrote:
2. Does movement in any way affect randomness? I mean, does it matter if I make small jumps or high jumps when moving forward?
It doesn't.
Randil wrote:
3. Does it matter on what frame the enemy enters the screen? If the enemy enters the screen at frame 100 and I kill him on frame 150, will he drop the same item as if he entered the screen on frame 101 and I kill him on frame 150?
If that enemy uses RNG to make random decisions (you can easily spot such enemies) then yes, because frame of creating enemy object = frame of using RNG first time, so E5 depends on this, therefore E6 will be affected. So it actually matters when you reach any shooting guy - by changing time of encounter you can also manipulate item drops (but indirectly).
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Huh, don't know what I was thinking about, but yesterday I was wrong with quick conclusions. RNG subroutine is called every time you kill an enemy, so of course you can manipulate E6 (Result value) almost like I did in Hi no Tori TAS. I think you should return to that fastest WIP (which completes first stage 18 frames faster), because you don't need to wait 11 frames to change bad luck into good. Luck is programmable here. In any case you meet bad tendency with E5 and E6, you can return little earlier in the game and manually change E6 by killing some enemy - and by timing your hit (last hit) you can vary E6 value. Well, theoretically you can 'programm' these E5 and E6 by well-planned actions, but it's too tedious. I have easier advice: when you need to get Gas tank from enemy but think that it's impossible without waiting several frames, first try to change PREVIOUS actions - like killing previous enemy little later/earlier, or just leaving him. This way you'll change E6 somehow - you don't even need to know how actually you changed it, the result can be achieved by several blind tries. Of course, there might be a case when you stiil need to lose couple of frames, but if you try more (rewriting more earlier parts of movie) you can have perfect luck without noticeable slowdowns. So, I'd recommend you to manipulate item drops not by waiting some frames, but mostly by experimenting with previous enemies (who just can't drop item for you - for example, their item would fall into spikes or if you need to backtrack for their item). But if you see an enemy in convinient place (where you could take its item without slowing down) - try to use every such enemy. I've noticed that you missed several enemies even at first stage - with little bit more patience you could get free Gas tank from them! BTW, the possibility of receiving Big Gas container is 12/256. Not that little, so why not to rewrite everything from the beginning? ;) Here I tested your fastest WIP and with little effort found a way to get Gas tank from second enemy (although losing 1 frame).
Randil wrote:
I'm wondering though, how do I check the value of address 0xE5, 0xE6 and such? Can I find them in the memory viewer?
It's RAM, so you can see them in Memory Viewer or Memory Watch (FCEU 9816). But they won't say much about current luck situation, because they need to be treated as binary values and behave very confusing.
Randil wrote:
So to sum things up, I first check the values of 0xE5 and 0xE6, add those up and look at the result. What do I do with the result after that?
Well, as I said, it's kinda hard to predict how to change RNG values exactly. Not only every defeated enemy changes E6 value, but the game changes E5 and E6 every frame, and it's easier to use lot of rerecords for usual luck manipulation. But take into account that luck mostly depends on how you treated pevious enemy/es, so there's no need to lose frames by waiting right before current enemy. I hope you'll make unbeatable TAS. :)
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Looks good, although this constant running and jumping lack variety that any platformer TAS should have. Edit: Wait, I found something. Here's quick and dirty explanation of RNG in Darkwing Duck. Well, bad news. Value generated by RNG is pretty determined by the time you call RNG (when you shoot an anemy). The game uses two numbers - Adding value at 0xE5 and Result value at 0xE6. To make things more unpredictable, every single frame the game rotates E4,E5,E6 and E7 values to the right (ROR instruction - mostly like dividing by 2). After using RNG, the game crops random value to a number of 00-1F (thus 32 different meanings) and then uses it as an offset for RandomItem_Table. Or don't drop an item at all. Here's actual code snippet.
875F:
LDA E5		` A = E5
ADC E6		` A = A+E6
STA E6		` E6 = A
CMP 7F		` if A < 127 then no items for you!
BCC Return
AND 1F		` else crop this "random" value
TAY		` make index (offset) from value
LDA 87A2+Y	` A = Base_Address_of_Table + Offset

Then game generates new object with ID = A
The Table itself is stored at 0x187B2 in ROM file. There are 32 bytes like this: 1C 23 22 24 1C 1D 25 23 24 1C 1D 22 1D 25 1D 22 24 23 1C 22 25 23 25 1D 1D 25 23 1C 23 1D 22 1D 1C - Diamond 1D - Gold * 1E - DW doll (1 life) 22 - Full life restore 23 - Little life restore 24 - Big gas tank 25 - Little gas tank Erm... Then at 187D2 there's another 32 bytes - similar table for case when ID=38, I haven't figured when it's used. But there seem to be other tables like this. Anyway, I don't see a way to manipulate 0xE6 other than just pausing the game. Uh, at least now you can plan all the manipulations more carefully.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Haha, this trick at level 6-4 was funny. But that's not glitch or programming error, just minor mistake in level design. Anyway, it was very creative find, and I suggest you take screenshot for 9th publication from this moment.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Damn, and I was hoping to see Jazz Jackrabbit TASed soon... You know, JJ is even more TAS-expressive than Sonic games. Oh, reality.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Cool game and great run. I liked Twisted's WTF-glitchrun, but you can't call such runs "great", it's absolutely another level of enjoyment. I'd vote for publishing both runs, the game deserves it.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Voting Meh. While the game is really well-suited for TASing, somehow this movie doesn't entertain me as much as bound-to-be-starred movie should. Maybe I don't understand the amusement of Engrish or just don't get this playing style, but I'd prefer J version.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
That's really impressive. Where do you get these ingenious ideas? Crocomire battle looks even more funny after seeing your screenshot. Yes and Very Yes vote.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Voting NO... on my Contra+SuperC TAS! :( Oh, I see I'm not the person to speedrun these two games. First Adelikat's perfect Contra TASes and then this... Seems you love Contra games pretty much, and you really know how to create entertainment there. Yes vote...
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Ha, I haven't interpret anything. I just chose least evil - to wound visual aspect, but keep imformation coherent.
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Crap...
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Is it ok now?
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
Huh? I dunno what are you talking about. I've edited these lines several times, now they look more then compact (although quite unreadable...) Stop joking already, Mr.Pedant. :)
AnS
Emulator Coder, Experienced Forum User, Published Author, Experienced player (724)
Joined: 2/23/2006
Posts: 682
So it was an ancient anime serie. o-O And why haven't I noticed the "TEZUKA PRODUCTION" label in the title screen? Thanks for information!