Post subject: The 3-D Battles of World Runner
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Time for some more obscure titles. Not sure where Bis draws the line though... So what about this title? The game is relatively not so very interesting to watch. It'd be a challenge from a speedrun point of view, but a TAS maybe not so (the speed is not really your enemy, neither is targeting platforms and avoiding enemies). Grabbing items takes time, shooting enemies is impossible without it (although something could be said for shooting enemies by taking the "gun" once per world...). Alternative is to get everything (stars, taking them slows you down, and there's a bonus level, which obviously takes time too :p). But I don't know the set number of stars per world. Gotta say though, this is quite an achievement from Square "final fantasy" soft. Maybe not now, but consider the game was released in '87, on the nes... AND they added the option of those retro 3D glasses (you know, 2 colors, shifted image, tricks your brain) by pressing select. Anyways... advice? :)
qfox.nl
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
It'd make a good speedrun for sure, but for a TAS would be pretty boring. You can run diagonally as much as possible to make it seem faster, and do double-jumps on top of columns, but it wouldn't make the run any faster than just holding up most of the time and jumping when necessary.
Former player
Joined: 9/2/2004
Posts: 109
Location: Québec
nitsuja wrote:
It'd make a good speedrun for sure, but for a TAS would be pretty boring. You can run diagonally as much as possible to make it seem faster, and do double-jumps on top of columns, but it wouldn't make the run any faster than just holding up most of the time and jumping when necessary.
Yeah, the only place where there could be some competition is on the boss fights. Then again, just aim for the head and voila. But it could be really interesting to see the player blaze thru the later Worlds while jumping like crazy.
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Yeah I dont think the speed will be any faster then keeping up pressed at all times. Bossfights can be optimized and besides them, they can be frame perfect. If only there was some kind of page that told me how many stars there were to collect, or some highscore to beat. But of course, great games like these dont have that :p But I'm thinking of creating a run that tries to get as many stars as possible, do some mad jumping around (which indeed gets trickier later on, although not for a tas) and shooting as many enemies as possible, taking the short delay for getting the gun and the stars for granted.
qfox.nl
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
Former player
Joined: 9/2/2004
Posts: 109
Location: Québec
There's only one thing about getting the stars and stuff like that, they take about 10 frames to pick up. I remember that when you pick up a star, your character freezes for a really short amount of time.
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
I'd start out more like this, with less jittering and more diagonal movement. Somehow I'm 18 frames faster, I don't know where those came from. [Although the main differences are a much higher score and more trick-jumping.]
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
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
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
Hard Mode B (4x), hold Up + Left, press Start (at screen before game begins)
Other
Increased luck: Press B(4), then hold Left/Up and press Start to begin game play.
I wonder if they've actually gotten it to work...
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
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
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
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
Why not do it on hard mode? I think you should... Also, are you going to be doing "highest score without slowing down", or just "highest score"? It might get pretty boring if you slow down all the way at every single group of enemies just so you can kill a few more of them before running by. (Hitting something doesn't count as "slowing down", only letting go of the Up button while running does.)
qFox wrote:
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)
There are several ways of working around that, such as reassigning your Start button or the frame advance hotkey, or using auto-hold.
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
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
Playing on hard mode is encouraged in the guidelines, and what it adds to the video is faster-moving enemies, which at least make the game look harder. If it forces you to do more difficult things to kill them or to survive, that's a good thing. This will be a lot an autoscroller in concept, so I agree that the aesthestics will need a lot of attention for the result to be interesting. (I wonder if there is anything cool that could be done in synchronization with the music?)
Former player
Joined: 9/2/2004
Posts: 109
Location: Québec
nitsuja wrote:
(I wonder if there is anything cool that could be done in synchronization with the music?)
I like that!! The easiest thing to play with is the gun, since it's a shot; a sound. Jumping is 2 "beats", the jumping and the landing. Picking up stars would be the only place where it won't fit with the music, since we don't want to slow down between each pick up... That would be really hard to do all of that (killing stuff, jumping over holes, getting a super score, and to play along the music), but really cool to watch. Frame Advance isn't the best thing when it comes to music synchro, since you can't really hear the music while doing that...
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
Former player
Joined: 9/2/2004
Posts: 109
Location: Québec
qFox wrote:
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.
Yeah, and if you go for highest score too, it will be hard to be synchro with the music, since you'll probably run into a "must kill that guy on THAT VERY frame else I can't kill it". So I say while running in empty places, you could try to time some jumps/shots with the music.
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
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
Hoe
Joined: 7/31/2004
Posts: 183
Location: USA
qFox wrote:
my run to 1.2
Not found :(
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Oops, fixed link, sorry.
qfox.nl
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ok I've been messing around with the Basic Bot (fceu 0.98.16) and came up with the following rom information (all hex):
0024 - 0025 = input flags?
002E = horizontal position (proving the game is 255 units or positions wide)
0035 = direction. 00 = forward. FF = backward
005D = how high up in the air... offsets at 0 when on the ground, moves up/down by 2. you can fire when this value <= 2 going or staying down. once jumping, you have one frame to fire.
0065 = airborne (0=no, 1=yes)
007c = 0A means uncontrollable...
0083 = some kind of count down when fired, doesnt seem to impact gameplay... start at 28 every shot
0092 = new life state: 0 = starting game (reset) / nothing (just alive), 224 = gameover, 128 = unmoveable (like coming onscreen new game) until 0, 112 = dying until 128
00A8 = some kind of forward position
00C0 = see 00A8
00D0 = distance of current shot. you can not fire when this is >0, and it reaches 0 before the last shot leaves the visual range. gets reset immediately when hitting an enemy.
00D9 = something about height as well, but offsets at 181 when on the ground and decreases as you go up. there are more addresses like this one in the 02xx range
00E0 = number of lifes
0603 - 0608 = (value-0x30) is score, xxxxxx, where 100's = 0606, 1000's = 0604 etc. when the counter ticks at 999900, 0607's lowbyte turns to 9 as well (only time ever). after that no increments are possible. game doesn't use the 0608 lowbyte, but you can set them all to 9 to get the game to show 999999 as score :) what the 0x30 represents I can't tell.
06C0 - 070F = indicates land, where "you" seem to be on 070D E or F and 06C0 is at the horizon. only lowbytes are used, E means land, 4 means gap.
For some testing, I've come up with the following code. The code is ok, you have to remember that the optimization factor in this game is rather high (although I don't know how high relative to other games...). This means that there are far more possible ways of doing things then you can test. The only code that doesn't seem to work is not shooting while in the air. I'll fix it later, it's not very important (but my second tie is the negative number of times b-button was pressed).
// dont shoot while in the air or when your-shot-counter is not 0
// rc(5) (mem(x00D0) = 0) ? 500 setcounter(5) : 0 (mem(x005D) > 2) ? 0 setcounter(5) : 0 c(5)
rc(5) 
(mem(x00D0) = 0) ? 500 setcounter(5) : 0
(mem(x005D) > 2) ? 0 setcounter(5) : 0
c(5)

// jump when approaching a gap
(mem(x06FC)=20) ? 1000 : 0

// if left last time, high chance of left this time
// 300 setcounter(3) c(1) ? 800 setcounter(3) : 0 c(2) ? 0 setcounter(3) : 0 c(3)
300 setcounter(3) 
c(1) ? 800 setcounter(3) : 0
c(2) ? 0 setcounter(3) : 0 
c(3)
// same for right, except if left was pressed _this_ frame, right is also not pressed.
// 300 setcounter(3) c(2) ? 800 setcounter(3) : 0 c(1) ? 0 setcounter(3) : 0 left button ? 0 setcounter(3) : 0 c(3)
300 setcounter(3) 
c(2) ? 800 setcounter(3) : 0
c(1) ? 0 setcounter(3) : 0
left button ? 0 setcounter(3) : 0
c(3)
// needs this extra code
// rc(1) rc(2) (0 < left button) ? 1 ac(1) : 0 (0 < right button) ? 1 ac(2) : 0
rc(1) rc(2)
(0 < left button) ? 1 ac(1) : 0
(0 < right button) ? 1 ac(2) : 0

//for the above, we want to range the number from 750 to 950
//this alternates between 750 800 850 900 and 950 every 5 frames.
750 + ((attempt % 5) * 50)
//700 800 900
700 + ((attempt % 3) * 100)

// count number of times b was pressed
((bbutton>0) ? 1 ac(0) : 0)

// score
(ram(x0606)-x30)+
((ram(x0605)-x30)*10)+
((ram(x0604)-x30)*100)+
((ram(x0603)-x30)*1000)

// dying
(mem(x0092) != 0)
In case you haven't noticed, the line of code "commented" is what you can copy/paste into the input boxes. For your lazy convience here's the botfile :) It stops an attempt when dead or after 300 frames (play with it yourself). It maxes the score, breaks ties depending on how many frames long this attempt is, second tie depends on number of times b-button was pressed (fewer=better). Third tie is my debug-echo, currently shows what probability the left/right buttons get when pressed previously. Let this run AFTER you get the gun. It can not yet jump large gaps, I have yet to determine when it's safe to release A, as this doesn't seem to be as static as the moment you need to press it. I'm having trouble figuring out the collision detection system. I think there are a few ranges dedicated to this, but the numbers are so jumpy that it's not so easy to figure out as the stuff above. If anyone wants to lend me a hand here... Note that due to the implementation of this bot, the more code you have, the slower the thing gets. I intend to improve this myself (going to parse the input once and convert it to bytecode, which should show dramatic increase in performance...). Also, you can't turn off visuals, but the program runs faster if you minimize the main window.
qfox.nl
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
Neat. [After the more important things are taken care of,] I bet you could time it to the music somewhat by making it more likely to do a different action when the note that's playing changes, or something like that. A memory address of something periodic like that shouldn't be hard to find. This highlights some problems with BasicBot's current implementation, though. Especially the way it stops with a "State 1 Load Error" after a few hundred attempts, and the way it allocates and fails to free about 10 megabytes per second until the pagefile is completely full and the system is brought to its knees...