Posts for qFox

1 2
17 18 19
24 25
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
In part two of our tutorial... ;) Well I was looking at the source to see how easy it would be to add a command that could set the probabilities. I had noticed that the code reserved 24 fields of 1k bytes (that's quite a lot, relatively speaking, if you don't use at least 16 of those fields...). Until I noticed that the code also evaluates the lines of probability before each frame (and suddenly it became clear why there was so much space for "just a number" :p). This suddenly makes the whole thing very very powerfull... For instance, with just 50/50 odds the left and right button will be pressed for one frame, and not the other, both, resulting in going sorta forward. Let's change that...
Left button:  
c(1) ? 800 : 500
Right button: 
c(2) ? 800 : 500

Extra code:
rc(1) rc(2)
(0 < left button) ? 1 ac(1)
(0 < right button) ? 1 ac(2)
Let's start with the extra code. This resets counters 1 and 2. Then increases the counter if left or right is pressed. This state is remembered in subsequent frames (until the extra code resets it, which is done AFTER the input). So when the input fields are processed, 1 and 2 will hold the proper value to whether left and right are pressed. Keep in mind that this information is reset in "button" at the beginning of a new frame! Now this is nice, but you'll notice that a lot of the times left and right are pressed together... We don't want this effect so we'll change the code a little bit...
Left button:
300 setcounter(3) 
c(1) ? 800 setcounter(3) 
c(2) ? 0 setcounter(3) : 0 
c(3)

Right button:
300 setcounter(3) 
c(2) ? 800 setcounter(3) 
c(1) ? 0 setcounter(3) : 0 
c(3)
The extra code remains the same. Now this code looks a little odd, but we can't nest loops and if?then:else expressions. At least it kept borking up when I was experimenting. So we'll use a third temp counter, initiate to one of the values that could be returned (the default probability), and change it if a condition is met (if this button was pressed, set probability to 800, if other button was pressed, dont press this button). You'll now notice that both buttons are never pressed at once. The code is added to the line without returns. No extra brackets are required.
300 setcounter(3) c(1) ? 800 setcounter(3) c(2) ? 0 setcounter(3) : 0 c(3)
300 setcounter(3) c(2) ? 800 setcounter(3) c(1) ? 0 setcounter(3) : 0 c(3)
or look at this file :) The same goes for certain events. Like when you need to jump because there's a gap or an enemy near. If the software can detect it, so can this bot! It's just a little harder for us because we don't have documented source codes to figure out what happens when. You have to reverse-engineer this data before you can use it. But once you have it, you can put it in the bot and put it to good use :) In "3D battles of world runner" you have to jump over gaps. Range 06C0 - 070F is reserved for showing the ground/gaps in visual range. The game only uses the lower byte (seems a waste, but whatever). At level start, this range is set to XE (I've only seen 1E, but maybe this can differ). When a gap shows at the horizon, 06C0 is set to X4 (probably 14). As the gap gets closer, the next bytes get set to XE, the first few after 16 frames, but the closer it gets, the lower the interval. When you are not in the air and 0x070D gets set to X4, you _will_ die. So, this is what we're going to do in the bot for the A button (jump):
((mem(x070C)&xFF)=4)?1000:0
Jump at the last possible moment when a gap approaches, but never anywhere else.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Oh! I was reading the source to see whether adding that setProbs function would be hard and noticed a thing I had overlooked... the probability fields are also evaluated! So this function is already implemented, albeit not very userfriendly. But to increase the probability of pressing left when left was pressed the previous frame, something like this works _fine_:
((left button > 0) ? 800 : 300)
And you could add that this button not be pressed (probability 0) if the last frame had right pressed. This _also_ allows for some more control (I was already wondering why there were 24 fields of 1k size). Like in that 3D battles of ... game, there is a small range of bytes dedicated to gaps. Whenever a gap is coming near, a byte is set. If you are still on the ground when the last 3 bytes are being set, you'll die. With the above knowledge you can actually read the memory mentioned, and press jump when you're on the edge of the gap! Guess I'm gonna have to figure out how to detect enemies as well, and then I might actually be able to put some more sophisticated bots to work on this. Damn, this is more powerfull then I thought! :D
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
But are you one of the active people on the SF project? I mean, you should be... I'm thinking about trying to play with the Basic Bot addon. I could really use a setButtonProbability function (increase the odds of going left if you went left the last frame) etc. It also seems to me like there are quite some efficient machine learning strategies that could be applied in the tas field (I'm thinking genetic algo's, or clustering perhaps). It's just been quite some time since I've done anything in C-ish, and I am not really going to have the time to work on it anyways. A setProb command would be very welcome though... At least the SF project is seeing activity, now just waiting for a release.
qfox.nl
Post subject: Operating Basic Bot
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Having just discovered 0.98.16 and the basic bot, being a AI student, this got my attention :D The docs are kind of limited though, only one is the html included with Luke's latest release. I figured I'd write something about it, and pray the ones that took over the project will improve on it... The syntax Luke used is simple but effective. I'll try to explain all the possible commands implemented, and how to use them, with examples (since the excitebike.bot file is lost forever)... I've been working on BB to take on my current project (3D battles of ...) and after some time I think I've got it down. GUI: The first set of boxes tell the bot each frame what the odds are of this button pressed this frame. It's a little crude, I know. Probability is a number from 0 to 1000, where 0 is "never pressed" and 1000 is "always pressed". You set the input for one controller at a time, max of two players. The "edit player 2" button should be intuitive enough. The goal is a little bit trickier. "End when" is the condition under which the bot will stop current attempt and restart with the next. This is not limited to a number of frames! This line is evaluated like the others. Maximize and Tiebreak are simply for ordering and determining what attempt will be "best". More about the contents below. Clear Run/Stop and Close should be obvious. Load Save will load the settings. Play Best will load your default savegame and run the attempt that had the best result. If you want to actually see the playback, press this button, save the result, playback the video and load to that default savegame. Make sure you get out of "use external input" mode, because this causes the speed to be maxed. Well then, the tricky part. Luke has given a script-type of language for us to use. Commands: <value> = last value that wasnt processed (eg: 5 loop(x), 5 would be <value>, same for return values: c(0) loop(x)). For more experienced programmers you can look at it like this: the language uses a stack of one deep and <value> indicates the top :) attempt = x'th attempt on which this code is executed a = static value of A button abs(x) = returns the positive value of x ac(x) = same as addcounter(x) addcounter(x) = add <value> to counter x b = static value of B button button = return all the buttons pressed in this frame (as a flag field) counter(x) = returns value of x c(x) = same ass counter(x) down = static value of down-button frame = frame currently processing i = index of loop left = static value of left-button loop(x) = execute x <value> times mem(x) = fetch value of address x ram(x) = fetch value of address x (but limited in range, use mem instead) right = static value of right-button resetcounter(x) = sets x to 0 rc(x) = same as resetcounter start = static value of start button select = static value of select button setcounter(x) = sets x to <value> up = static value of up button Luke also implemented common arithmetic: +: returns the result of addition -: returns the result of subtraction *: returns the result of multiplication /: returns the result of division %: returns the result of mod |: return result of bit-wise OR &: return result of bit-wise AND ^: return result of bit-wise XOR =, >=, <=, !=: return 1000 for true, 0 for false The code will ignore anything unknown (and no errors are thrown...). It only "remembers" the last returned value, and all operators use just two elements: A operator B. You can use parentheses as much as you want though. Evaluation is right-to-left, right-most value is returned. Everything, except for hex numbers, are lowercase. Hex numbers have to be prefixed by "x" (lowercase). Quick examples: (3+4) (8+2) returns 10 (the 7 is dropped) 10 loop(5+xA3) returns 10 (but adds 0xA3 to 5, 10 times) Due to the implementation, spaces are not required (but recommended!). The extra commands is a 1024 box that is executed after each frame (I think). You can use "frame" to check what frame you are currently in, offset at first frame _the bot_ computed. Both boxes are executed. You can use counters, 255 of them. You can address them by index. They start out 0. You can increment them like: value ac(index) eg: 25 ac(15) You can get the value by: c(value) Eg: c(15) Looping works straightforward: iterations loop(code) Eg: rc(23) 15 loop(2 ac(23)) c(23) will return 30. Loop seems to return the number of iterations... The "iif" has also been implemented: condition ? executed if true : executed otherwise false Well, actually, it's more like: condition ? executed if 1000 : executed else Eg: (1=1?2:3) will return 2. Well then, to conclude this little tutorial: BB can only search for maximized results. You can inverse this by checking for 0-yourresult (negative max). For max values, think about maximum points scored, fastest time, etc. You obviously need to know the memory positions first (use cheat to get these) and probe by calling mem(x). Tiebreak will decide which run to keep if two runs have the same result. End when determines when the code will stop the current run and start over. You can set it to frames (let it compute 500 frames by setting "frame=500" as condition). Or perhaps when dead ("mem(x3A30)", if 0x3A30 is the location that indicates this state), or a combination of factors ("frame=500|mem(x3A30)"). The result box will show the buttons pressed in the run, kudo's if you can actually use this ;) That's about it. I have to go now, but I'll try to post some more example code later. Sorry if I made any errors, I'm sure someone will correct me if I have :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Actually... Luke's source and last posted binary are still working links (the ones he posted here http://tasvideos.org/forum/viewtopic.php?t=1020&postdays=0&postorder=asc&highlight=basic+bot&start=340). Wait a little until the freaking site loaded, ignore all the php errors and press the link to the file. I just downloaded it today. Date on the binary also says the 21st of April, so I think that is the last one that was released. I have a feeling the sources of those links are of the same version, but I'm not in a position to check this. Neither do I know whether the SF project is using this source or the .15 one, but I just wanted to correct the misconception that "he ran off with the sources"... (And I just needed to see a tutorial on the bot, which are included in those links :D). I'm gonna play with the bot now, seems like a great thing if it works as intended :D
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
(Ok, at first I thought I found a .17, then I thought about it and figured it might be the same as the .16 posted earlier here, but now I'm not certain anymore. In either case, the version listed below has a build date (in the about box) of 2 days later: april 21 2006, but Power Blade (U) still remains gray...)
Guybrush wrote:
Phil wrote:
As far as I know, 0.98.17 is the latest version.... but Luke didn't make the change in the about box.
I haven't heard anything about .17. And Luke disappeared with .16's source code. :/
http://www.aep-emu.de/PNphpBB2-file-viewtopic-t-3452.html But no download link exists, the 50web site is down. aep-emu only lists the .15 release under downloads (but perhaps it's .17 in disguise? I haven't checked). On top it says "build 14/04/2006", which would be sooner then the 21st... After changing the google search to fce 0.98.17 there were quite some more hits, like this one. The about box of this version lists 0.98.16, but the date lists april 21 2006. Also lukes website is listed under it. So um... is all the above foolish? Or what? :) Still no source code though.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ah I was still using .13 And I'm very sorry for spelling your name wrong nitsuja :( But are you still on this project? It says on fc that the project was taken over and all that. Anyways, the feature is there. Even though another option to just hold the button for one frame and auto-clear it when you advance a frame would perhaps be nicer (and also, when I press A or something while in this HOLD mode, it will turn on/off fast, as if it's a turbo button). That said, if the movie is possible for you, go for it :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Oops, fixed link, sorry.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Yours would be "doggybag"?
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
A 2 player double run would maybe be cooler then the megaman double... Not something to take lightly (of course, neither is making such a run :) There should be an option or feature or something in FCEU that allows you to set the buttons "to be pressed in the next frame advance", rather then the one pressed when advancing. This could possibly remove a lot of these "eek too many buttons are pressed i'm just a puny keyboard and can't handle this" problem. The project was revived very recently, maybe they'll listen to feature requests? There are a few on my list as well. Didn't Ninjitsu used to work on it as well?
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Having never played this game, so knowing nothing about it (I really thought you died that one time you used a teleporter ;) this run looked very good to me.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Aside from what Bisqwit said, I don't think it's a real problem. Emulators are usually coded such a way to mimic the exact behaviour of a console. However the software computes it's random number (consoles don't provide this, except perhaps the current generation consoles), the emulator has no direct say in the matter. As for the behaviour of the games I played on the console and the ones on the emulator go, they feel the same. I'm sure anyone else will say the same. So I don't think it's an important matter, as long as the moviefiles work ;)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Eek! Ok. I just started my run to 1.2 and compared it to yours. It appeared to me that I was gaining frames on you. At first I really blamed lag for the difference in frames, but I had to take that back. I had to do some extensive testing to figure that out, but it does mean I know this for certain: Jumping and walking makes no difference. Moving in a direction (or not) makes no difference. Shooting or not, makes no difference. Killing enemies makes no difference. Flying powerups make no difference (I get my powerup in 35 frames, you in 49). Pressing select, to change the "3D view" makes no difference. The only difference I encountered during tests was a matter of 1 frame, which is very likely a rounding issue more then a lag issue. Also, I discovered that while running, it takes 16 frames to get from one line to the next. This is very accurately measurable by looking at the shadow (which, by the way, is drawn every other frame). In the end, the difference was to blame to myself. You're not "clearly" starting and I made the wrong assumption of your starting frame. Truth is, you're only 6 frames ahead from the very start. Also, I forgot the fancy jumping in the beginning, was focussing more at alligning me up for the kills. Not sure whether I was very efficient the first wave, seeing how I did the remaining waves. (A wave being one "field" of enemies, I'm sure you get the idea) I think my video is nice nevertheless. I'll try to stay out of my tunnelvision to kill enemies as much as I can, to attempt and make the video more entertaining, but killing still remains my first priority :) Oh yes, I did discover that it matters if you move left/right/none when shooting ahead. Many shots in my video would miss if I would not keep moving left. This shows a basic "flaw" in the gamedesign, where it appears to compute trajectory and impact on a frame-by-frame basis, not correcting for angle of the view. In other words, when you move left, so does your bullet (only slightly), but when you stop going left your bullet does too. This allows me to re-fire very quickly and still hit my targets :) PS. We can get a theoretical speedrun time by counting all the lines, multiplying it by 16 and adding the frames for the bossfights and cutscenetime to this number ;)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Oddly enough. I can get the start when pressing start at frame 24. I can get hardmode when starting the next sequence at frame 35. This is after a poweron. 35 B 36 none 37 B 38 none 39 B 40 none 41 B 42 up+left+start Can someone beat that? Hate to start off on the wrong frame. And don't give me a soft-reset-way plz :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Yeah I encountered that as well. At some point it just started to save the progress, even when recording "from start". Reseting or Power didn't change this. I'm wondering whether it's a FCEU bug or, like you said, something to do with the way kirby saves. It's dangerous either way, now you have to check your movie every time, which is very annoying. I'll be looking forward to it, like so many others here :) Bag: you heard to man, take over and get on it! :p
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Doing it at normal speed, or even at slowdown, is not really an option when it comes to shooting down those enemies (oh, and hitting them in the process as well ;) they move too irradic, and you miss when you're too close (like, "here's a 2 meter target 1 meter away from you, try to hit it..."). The sound is nice, but I'm not sure if I'll go for that.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Yeah I'm sure a way can be found, wasn't afraid of that :) My plan right now is not to get all the stars, the delay and warp-detours are bigger in total then I expected. I'm going to try a pure speedrun, but try to get as many enemies as I can get (high score), without getting the stars and without slowing down to shoot enemies (was never my intention). When there are no enemies to shoot, I'll try to skip over pillars as much as possible, do some stunting, try to make those parts attractive. The bossfights might annoy me the most though, to get them optimized. The bosses (world 2 and higher) always use the same patterns as the ones before, for each world alone. I am not quite certain about playing it on hard. I'm not certain whether it will add anything to the video, and it will make the enemies harder to kill. I'm not so sure if that's gonna be worth it in the result, do you? Have I mentioned that the ending of hard mode is equal to that of normal mode?
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Pure run in that hard mode. Only change really is the speed of the enemies. Respect for anyone finishing that game at normal speed btw. Some of the later worlds are virtually impossible, even on slowdown emu I had to jump pillars at that one part. Anyways, boss fights could probably be optimized a bit (lol, I only just discovered that FCEU has a turbo button, only used at the final bosses ;) Anyways, I think I'll do a run on normal speed, aiming for a highscore, seeing how the speedrun is probably maxed at about 22 minutes flat, including the end. Without it my run comes down to about 19 minutes 30 seconds, with a sloppy start (my keyboard is unable to press 4 buttons at once so I cant hold up+left+start+frameadvance, so I just wasted a 100 or so frames at the beginning). Say 19 minutes flat for a optimal run? I warn you though that this run is even more boring then the first one, I'm really not doing anything unless forced to.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Oh well that's clear now. If luck has anything to do with it it'll be bad luck ;) No the enemies are DEF. moving faster. The increase may not be as obvious for the green things (you'll not be certain) but once you reach those white things in 1.2 there's no question about it. Now the question rises, should I use this hard mode? I can't tell whether there are more enemies in hard mode (= more points). I doubt it'll matter much for speed. Perhaps only more bothering with bosses though. But maybe the ending is cooler?
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Where'd you find this? :S I couldn't find anything on google. Luck seems irrelevant to me, hard mode perhaps. Maybe even a new ending in this hard mode (but how can we tell the difference?). Oh is there a sound played when done correctly? I can't use sounds because my system is too slow or something (p1.6 and it stutters when sound is on?). Perhaps somebody can do a rom check for more messages? I'm not really familiar with rev. eng.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Argh. I'm surprised that I can't find ANYTHING on this matter. Is there actually a piece of the console world that's not on the net? From a game by Square no less? Amazing. But I really want to know what it does :( Perhaps its a cool skin and, of course, I'd use that in a run. Or perhaps its for some uberleet monsters and the _real_ challenge. Perhaps you'll unlock a pre-FF1 FF game! Now there's a nice revelation that the developer at Square would probably be laughing about... :D Anyways, if anyone is able to get some kind of reaction from the game using "4x B, hold left+up and press start" anywhere (it doesn't state when or where), I'll be able to sleep.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Yes well I've decided for myself that a pure speedrun on this game is useless. It's too easy to get a frame perfect run, your only (and I mean only) issue on this are the bossfights, they get kinda tedious from world 5 and onwards because that boss is moving faster and very irradic and you dont know when your shots hit. Anyways, I've played through the entire game now and think I'm gonna try a real run now. I'm gonna aim for a high score (meaning as many stars as possible and as many enemies as possible (I think the enemies will actually be kind of entertaining to watch... for a little while anyways). There are quite some worlds that have little enemies though, and are rather straightforward. Like world 7 is almost entirely made of pillars. Not quite the challenge, so I thought I'd jump on the pillars as much as possible for areas without enemies or stars. Bossfights, like I said, are maybe the hardest part of this game. Can't imagine me finishing the world5+ bosses in under 10 minutes at normal speed (ok, I can). It's a bit annoying. I think the game is not as easy to do as it appears, the way I've just drawn it. Aiming for as many enemies as possible, with not being able to hit them when you're too close and all, is not going to make it easier. Some stars are quite tough to get (like the warps with the moving stars, or the warp with the stars that require extremely fast left-right (is there some trick I'm unaware of?) and I want to at least try to get two stars that are on one line if they move close to eachother (getting a star only stops your movement forward, you keep full control...). I believe that a speedrun aiming for a high score will be far more interesting then running straight for 10 minutes, ignoring everything. Am I wrong here? Anyways... I just completed the game for recon purposes. Here is the run. Dont bother telling me its crap, I know that. I die twice and get held up quite some and bla. And got a bit tired of those bosses after world 5, seeing how I knew I wasnt going to use this run anyways. But in case you quickly wanna browse through the game, this is handy. I'm guessing the game would take about 25 minutes optimized, but even making this movie got quite boring at some point, because all I was really doing was walking forward and checking left-right for "hidden" stars... Oh yeah, the game is about 2 screens wide, wrap around world. At the end there was a little surprise though. As you can see (frame 98100 or so) there's a message (nice one :) that says: press B 4 times hold left+up press start Funny because I didn't encounter that anywhere on any of the sites I visited, including wikipedia (which had more information then any of the other). Thing is though, it doesn't do squat here. If anyone knows or figures it out, please tell me :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ok, not that familiar with youtube terms, is a "directors" account special? But if he's got the vids online then safely nevermind :) (Although something could be said for an account for TASvideos.org, rather then a real person, for the collection of vids from this site)
qfox.nl
Post subject: Posting videos online
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
I've looked for a topic concerning youtube and related sites but all I could find was the topic about the stolen smb vid, and the warning on top of each page about not posting it (although that seemed to be aimed at viewers, not the creators of..). If I missed the topic I'm sorry. It's not in the faq either. I was wondering what the rules or restrictions are to posting vids on youtube sites. Obviously next to "they need to be your own". Is there a problem from those sites? Did they request not to do this? Might it be an idea to let Bisqwit create an account there and be the only one allowed to post speedruns there. It seems to me that such sites lower the treshhold for downloading/viewing the vids a great deal. Although the mirror on archive.org is great! It just seems that youtube sites allow for easier access to the vids, and when posted under a general TASvids account, there would be no copyright issues (no more then posting them here). Unless of course those sites requested not to do this (why are those two sites listed specifically?). But is there a problem with creators of runs posting their vids on such sites? PS. We can help with uploading those vids. I'm on a university network, I'm sure there are others with high speed connections that would like to help... It's not like I'm asking you to upload it all by yourself Bisqwit :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Oh I found a nice little emu project that features online highscore tracking of a few games, including this game. The scores listed there are:
     Score     Name       Location  
1.  329450     pat33999     USA 
2.  316750     Demosth      Nevada, USA 
3.  263000     Sev7en77     Elyria, OH 
4.  234500     Furious_Josh MI, USA 
5.  213200     Zor Prime    Annandale, VA, USA 
6.  111500     Lord Amiman  Poland 
7.   25500     Jimbo        UK 
8.   20900     Kucalaba     Dublin, OH 
9.   16100     Walan        Pennsylvania, USA 
10.  12450     PV250X       France 
So I'll be gunning for those. Although, finishing world one, I'm not sure if the above records will mean anything once I'm done. The wip shows what can not be done at normal speed (you simply dont have the reaction speed :). Oh yeah, and that one star hanging across a gap that I'm not getting? You can't get it unless you want to die for it (and stars get reset upon death so ...). I've tried, either you go over it and land, or you get it and die. This is a difference of releasing A one frame sooner. Ohwell, it's only 750 points :p Oppinions... is the irradic movement shown at the start any fun at all? It's less in the middle (stars dont really allow it) and at the end. Is the movie at all fun to watch? I'm probably gonna do it over since I think I can do much better with the killing of enemies, with some ESP... ;) That uberNES project is a nice idea, unfortunately it's not very reliable to have an online highscore tracking due to easy spoofing. But it's a nice idea nevertheless.
qfox.nl
1 2
17 18 19
24 25