Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Lunar Ball is one of my favourite Famicom / NES games. It's a Billiard type game with 60 different boards and adjustable friction settings. I used Famtasia and made a small demo of it - first 3 levels. I aimed for minimizing the aiming time. https://files.tasvideos.org/bisqwit/bisqwit-lunarball-incomplete.zip The ROM is "Lunar Ball (J).nes". There's also an USA and an European version of this game, called Lunar Pool, but I used the Japanese version because I previously know it by that name from the pirate multigame carts. What would you think of this game in timeattack perspective?
Joined: 12/11/2004
Posts: 13
Location: Finland
Lunar Ball is an excellent game to timeattack. It can be improved almost infinitely.
"You win because you have a Kunio-kun avatar." -Boco
Former player
Joined: 8/1/2004
Posts: 2687
Location: Seattle, WA
Looks great so far. It will probably be impossible to make a PERFECT movie for this game, but even sub-optimal movies will be interesting. All lights are GO
hi nitrodon streamline: cyn-chine
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Zurreco, you have private messages. Read.
Joined: 10/31/2006
Posts: 134
Just wondering what you guys think would be more entertaining. Using 1 for friction and clearing the table in the least shot possible (but longer) or faster using regular friction (32) but more shots?
Player (206)
Joined: 5/29/2004
Posts: 5712
I think maximizing score would be best, so low friction is cool.
put yourself in my rocketpack if that poochie is one outrageous dude
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Master of Puppets wrote:
Just wondering what you guys think would be more entertaining. Using 1 for friction and clearing the table in the least shot possible (but longer) or faster using regular friction (32) but more shots?
Whatever looks coolest. When I play this game regularly, I use the slicky friction (1). Wow, I didn't realize it was two years ago when I created that little Lunar Ball WIP. Time sure goes fast. Here's an AVI of it, by the way. https://files.tasvideos.org/bisqwit/lunarball-l1-3-demo-bisqwit.avi (3.7 MB) For this, I used the regular friction. Goal: Minimize the number of time spent in completing each board, minimize the number of shots and maximizing score in the process.
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Hm nice. I may spend my weekend on this :)
qfox.nl
Editor, Experienced player (734)
Joined: 6/13/2006
Posts: 3300
Location: Massachussetts, USA
I bet a program can be used to calculate the future outcomes of all the balls bouncing around... I've seen in movies many trick shots, there has to be a method for calculating this stuff to make redicilously awesome shots possible with fewest amount of shots. Maybe a rerecording program that tests the outcomes of different angles/strength in shot, similar to the Bisqbot used for Megaman.
Homepage ☣ Retired
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
yes but like in real pool, the possibilities might be endless (well, the grid isn't that high-res so not so endless, but mighty high nevertheless). i've thought about it though, but it would require knowing a lot of the ingame variables. maybe too many...
qfox.nl
Former player
Joined: 8/20/2005
Posts: 643
Location: Mikkeli,Finland
Awesome game! I play this a lot when I was a child :)
Current Projects: ???
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
qFox wrote:
yes but like in real pool, the possibilities might be endless (well, the grid isn't that high-res so not so endless, but mighty high nevertheless).
Eight different power levels (to shoot at). The aim is a more complicated issue. Basically, there's the radial aim. I don't know its precision, but I may assume there's 256 or 128 distinct angles. However, there's also the distance. Aims to different distances will cause slightly different results, for whatever reason. So the number of different launchs for each turn is at least 2048, and perhaps something on the order of 131072. Bruteforce-testing one turn ahead isn't difficult. Bruteforcing a couple of them would be quite difficult: 2048^2 would already make 4194304 different combinations. 131072^2 would make 17179869184.
Joined: 10/31/2006
Posts: 134
actually biskwit.. there is more then 8 power setting.... the game show you only 8, but each setting on screen is divided by 10 or 11 unshown increase that go up or down each frame, thats why I kinda gave up on this... too many posibilities... 03A0 = Power Memory Adress (change every frame) move by 3 every frame edit: forgot to add that even only 1 more/less Power Frame change the outcome greatly.
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Well, if you maximize the shot (or, if frame-specific, use minimum power of x, to save time not having to wait for max power) then that would lower the threshhold. But like bisqwit points out, its ok to do one shot. It's not so ok to compute one level, unless every level can be done <5 shots. And even then, finding that one set of moves is not so easy. It's hard to computationaly prune the obvious no's (although perhaps one could compute the angles at which the ball would directly go into the pocket, depending on how the worldmodel is kept in memory). It's not a very attractive to compute it. But if someone can give me some more ram addresses I can whip up a program for it... Stuff like angle, worldmodel, score, "is anything still moving?", turn, "faulty shot" etc. If you compute blind you don't even need to know the worldmodel.
qfox.nl
Joined: 10/31/2006
Posts: 134
forgot to add that the memory adress I gave was for lunar pool (U) [!], since fceu doesnt seem to handle lunar ball Edit: Did some more research O3A0 = Power Memory Address (change every frame) move by 3 every frame 85 posibilities 03C0 = Angle Memory Address 256 Possibilities Unsure if moving the cursor back or foward change the outcome, but lets assume it doesnt for now. That give us 256x85 possibilities for each shot = 21760
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
yeah lunar ball (J) just gives me a white screen as well so i played pool, which seemed to look the same anyways. How many frames does it take to roll out a shot? Have you found that bit yet? Problem is that not only do you have over 21000 possibilities to test each shot... you have to let the balls roll quiet to see the result. Doing the 21000 shots is not really an issue, but add 5 seconds+ for each shot and you'll see the time rising fast. Although it _is_ interesting to see what the best opening shot would be for level one (and a few of the others).
qfox.nl
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Hm, do you have Lunar Pool (U)[!].nes or just Lunar Pool (U).nes ? I only have Lunar Pool (U).nes and a [o1], but I dont think we'll use the overdump :p
qfox.nl
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Right, the world model can be described in ball-details, all hex: the 030x through 03Ex are bytes for ball 0-7 (where 0 is the white ball). x denotes the ball (so 0310 is a static 0, 0311 is a static 1, etc). 030x: ball on table, A2 means yes, 00 means no, 3 means "went in during current shot" and resets to 0 when shot is done. balls replaced when you make a fault get A1 and get A2 immediately after shooting. 031x: denotes the ball in question, 0 is white. 031x just shows the (static) numbers of the ball (0-7) 032x: ? 033x: vert position (top-bottom 56-C1) 034x: ? 035x: vert direction? 00 means down, FF means up. 1 means not on table. 6 is after you make a fault. 036x: ? 037x: horizontal position (left-right 2F-D1) 038x: ? 039x: hori direction? 00 means right, FF means left. 1 means not on table. 6 is after you make a fault. 03Ax: ball speed, 0 means dead in the water. if all balls are 0, next shot starts (i'd say "duh"). 03Dx: vertical position on a larger scale (less precise), resets after each shot to FF, resets to 0 at the start of a level. only balls that move(d this shot) dont have FF. 03Ex: horizontal position on a larger scale (less precise). postion does not reset like 03Dx. Not so sure about the pocket-positions or table-layout yet. 0187: level (duplicate addresses possible here) 0368: number of lives left 036A: number of shots left 03B0: speed up or down, FD=down, 03=up 0468-046E: score (046E is always 0) 0462-0467: hiscore (0467 is always 0) I'm now using 03D0 == FF to check whether a shot has completed. But this only works for the first shot (which is fine for me right now).
qfox.nl
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Hm I hadn't taken the gravity into account. Well if you use zero gravity, take the 256 angles limit into account, you can compute the single shot fastest solution for each board. I'm almost positive every board can be finished within one shot at zero gravity at max speed. That would add up to 256*60 shots, multiply that by 1000 (frames to compute beyond the shot to see result) and it comes down to computing about 15 milion frames. Not bad. Might be nice for a speedrun? So, a zero friction one shot per level run?
qfox.nl
Joined: 10/31/2006
Posts: 134
no cause 0 friction will pocket the cue ball which resets your shot, so I was using 1 friction, and trying to figure out which of the 21 000 possibility pockets all the ball while leaving the cue ball on the table. But to shorten the time, anything under 30% power could be removed from the test, as it probably isnt strong enough to move/pocket all the ball. Edit: Yeah "Lunar Pool (U).nes"
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Yah 0 friction doesnt slow any ball so the cueball is bound to end up in the pocket. I'm trying friction 10 right now with max power on all angles. So far the best was 5 balls pocketed with score of 550 (at 128 attempts, and it should do the same for the other half... but score may be higher due to different order of pocketing) Angle 20, max speed, gravity 10. I'll let it compute all around and continue on grav 1.
qfox.nl
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Amazing. Angle 163 leads to a perfect shot. This kind of proves the system is not 100% symetrical (since the invert angle should lead to the same). Unfortunately it didn't register the hit due to the way I check for a "next shot attempt" so I don't know the specs, but score was about 2200 or so :) I'll check in a sec when the thing is done. I need to adjust finish anyways.
qfox.nl
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Well here it is: [gone look for the newer below] No audio, but who cares. This game is one of the few where there's no issue of a random generator. Just know the angle and the speed of the shots from levelstart and you're safe. This movie is sloppy btw (the start), but its just a demo. For this one it's: grav 5, angle 163, speed max (255) Pity the FCEU work in progress (the one that has my bot, and the one I've used to get this) has the .16 avi-recording bug. So I have to load the fcm in fceu .15 and record it there. But it works, that's all that counts :)
qfox.nl
Joined: 10/31/2006
Posts: 134
Yeah I got a perfect shot on lvl1 in a test run I did... just didnt write down what were my angle and such
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
I'll compute grav 1 now, max speed.
qfox.nl