GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
I see that DoDonPachi, one of these crazy shmups by Cave, is emulable in FBA. So I got an idea. If adelikat could get a Special Star for [711] NES Gradius by adelikat in 10:52.35, I wonder how a DoDonPachi TAS playaround would look like. It would probably look like adelikat's run, on steroids. So I'm thinking of TASing this. These would be my objectives/the categories:
    Playaround Aims for maximum score Maximum kills Best ending 2-player Uses hardest difficulty (if there's a maximum difficulty) No death, no damage Minimum credits Doing crazy stunts, like getting near bullets by a pixel No bombs
So... what do you think of that? Do you think such a thing is possible? Would you be interested in such a TAS? And also, is that possible to create macros in FBA? No matter the way, even LUA, I'd be ready to try. Same thing for auto-fire, auto-hold.
Joined: 3/28/2005
Posts: 216
I think it would be pretty epic, and from your forum handle, you're just the person to do it.
Patryk1023
He/Him
Joined: 3/1/2011
Posts: 288
Location: Inside out house.
Will be good! Or, if you want, EPIC! I wanna to see it. xD Right now... Wait, I've get too long in time xD
<Nach> scrimpy is fretty with her sunglasses on I'm here. never visible.
BoursinBurger
He/Him
Joined: 12/18/2008
Posts: 33
Location: SC
Yes! When I discovered that the "bullet hell" genre existed, I wondered if anyone would ever take on the task of TASing one. It would make for quite a sight. This scene, the most CPU-humiliating moment in history, would be tame by comparison. It's a shame, though, that the ship won't move as fast as the Vic Viper, but weaving through denser bullet clouds will likely make up for it.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
Thank you for your answers. I was going to start TASing the game, but something is keeping me off doing it. I need auto-fire and auto-hold. FBA doesn't have these built-in features, so I guess that LUA is the solution. But I suck at LUA. In fact, I don't know a damn about LUA. So if anyone can make an LUA script, or tell me how to make one, so I can autofire and autohold "P1 Button 1" and "P2 Button 1". That would be much appreciated. In fact, I would even credit him/her in the submission text once (and if) it's done. Thank you.
sgrunt
He/Him
Emulator Coder
Joined: 10/28/2007
Posts: 1360
Location: The dark horror in the back of your mind
I have no idea how reliable this is, but it seems to work on the face of it. Use Lua hotkeys 1, 2, 3, and 4 for Player 1 Button 1 auto-hold/auto-fire and Player 2 Button 1 auto-hold/auto-fire respectively. Download testrr.lua
Language: lua

local p1b1auto= false local p2b1auto= false local p1b1hold= false local p1b2hold= false function beforeframe() keys = joypad.get() outkeys = {} if p1b1hold then outkeys["P1 Button 1"] = true else if p1b1auto then outkeys["P1 Button 1"] = not keys["P1 Button 1"] end end if p2b1hold then outkeys["P2 Button 1"] = true else if p2b1auto then outkeys["P2 Button 1"] = not keys["P2 Button 1"] end end joypad.set(outkeys) end function togglep1b1hold() p1b1hold = not p1b1hold if p1b1hold then emu.message("Auto-holding P1 Button 1") else emu.message("Stopped auto-holding P1 Button 1") end end function togglep1b1auto() p1b1auto = not p1b1auto if p1b1auto then emu.message("Auto-firing P1 Button 1") else emu.message("Stopped auto-firing P1 Button 1") end end function togglep2b1hold() p2b1hold = not p2b1hold if p2b1hold then emu.message("Auto-holding P2 Button 1") else emu.message("Stopped auto-holding P2 Button 1") end end function togglep2b1auto() p2b1auto = not p2b1auto if p2b1auto then emu.message("Auto-firing P2 Button 1") else emu.message("Stopped auto-firing P2 Button 1") end end emu.registerbefore(beforeframe) input.registerhotkey(1, togglep1b1hold) input.registerhotkey(2, togglep1b1auto) input.registerhotkey(3, togglep2b1hold) input.registerhotkey(4, togglep2b1auto)
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
Thanks a bunch for your script, sgrunt! It works flawlessly! After a discussion about the game in the IRC chat, I've been thinking about the objective of the run. I think I'll make 2 runs. First one will be a 2-player playaround aiming for maximum killing. Second one will be a 1-player high-score full-combo run. Both of them will pull off crazy stunts, but I think the first run will have more of them. What do you think of that?
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
I have done some research on the game in the past, and here are some thoughts and facts on the matter. 1. Two runs will likely be the best. My original plan for this game was about a single scorerun at default settings with player 1 just flying and dodging bullets all around the place, and player 2 actually doing all the scoring business. However, two runs may be beneficial because for a playaround you don't have to go with default settings (for the score to be directly comparable with unassisted records), and don't have to do the not particularly impressive 1st loop either as long as you have a verification movie. The game only becomes exciting at 1-5, and there are 13 stages in total with both loops, which take quite some time (around 50 minutes if you're going for a true score record). That would leave us with these two runs: — power-on, default settings, single-credit, 2-loop C-S scorerun; — savestate, hardest difficulty (via dip switches), only-2nd loop "anything-goes" 2-player (A-L + A-S?) playaround. 2. For the high-score run, use the player2 side. It has a different mechanism of aerial star calculation which amounts to several millions' worth of difference by the end. Player1 side has an advantage of being able to continue the hit chain after using a laser bomb, but it's useless in a scorerun. 3. According to sikraiken (who has a 530 million score on the game), C-S is the ship to use for scoring.
sikraiken wrote:
here are the boss hits you can get on 1-6: A-S: 273 A-L: 259 B-S: 282 B-L: 261 C-S: 286 C-L: 259 So, C-S > B-S > A-S > B-L > A-L/C-L. This is just based off of this data, of course. Also, C-S can get more enemies in stage 5 and in other places since it can reach on both sides of the screen. C-S definitely has a higher scoring potential.
4. One bomb will need to be expended at the end of 2-6 for scoring purposes.
sikraiken wrote:
You can get an extra 600k by bombing the 2-6 boss when the gauge turns red (once you reach 2-6 boss, your bombs are worthless point-wise, there are no points for them at the end of 2-6 or end of the game).
5. It is confirmed that stage 5 is possible to full-chain, getting 900+ hit chains. Nobody except the selected few Japanese high-scorers knows how exactly, but that's the way WTN, NAI, and some other guys got their 700+ million scores. There might also be ways to extend stage 1 and 3 chains somehow with tool-assisted precision, which is something to look into as well. This will be very useful for unassisted players of high caliber. 6. Laser hits are calculated temporally, not by damage dealt. Which means you can get higher hit chains while underpowered, by using shot-type ships, and not using aura (which doubles the damage without doubling the hit count). Every medium- and large-size enemy should be thus killed with laser if applicable. Shot powerups should thus also be delayed as much as possible to get higher hit chains everywhere. Ideally they should be delayed as long as it's possible for you to not let a single enemy get away that you could have killed otherwise. 7. Ground and aerial stars should be picked up if possible, but chain hits are more important. Large stars should always be picked up, though, as they are worth 10K each, IIRC. 8. The chain is, IIRC, calculated as following, assuming each hit corresponds to destruction of one single-HP enemy:
hit 1   enemy 1
hit 2   enemy 2 + enemy 1
hit 3   enemy 3 + enemy 2 + enemy 1
hit n   enemy n + enemy n-1 + enemy n-2…
Which means you should always kill more expensive enemies asap to have their point value added at every subsequent chain increment. 9. Max bomb bonus not only gives you a fixed amount of score per frame (220 at x2, more for each subsequent bomb), it also works as a multiplier for your chain, so bombs should be picked up at the first frame possible. 10. Boss hits. The formula for 1-1 to 2-6 bosses is:
200,000 + (100,000 * stage number) + hit count * (2,000 + 1,000 * stage number)
(Note: stage numbers do not count the loop, so 1-1 and 2-1 will have the same stage number.)
So if you get 100 hits on 1-1 boss, the boss hit bonus will be 300k + 100 * 3k = 600k. For 400 hits on 2-6 boss you will thus receive 4 mil. Not bad at all. According to sikraiken, the formula is slightly different for Hibachi.
sikraiken wrote:
0 hits on Hibachi gives you the base score of 5M for the boss bonus. 100 hits will increase your boss bonus from 5M to 10M. 333 hits (max hits) will increase your boss bonus from 5M to 21,650,000. That's a lot of points.
11. The chain timer is about 64 frames long IIRC, and I believe that the lowest value it lingers on when you're continuously lasering an enemy takes at least two frames to decrement to zero. Now I don't remember the specifics at this point as the last test I'd conducted on the matter was in 2008 or so, but you apparently can artificially prolong the life of a constantly-lasered enemy by wobbling the laser on the very edge of the enemy's hitbox, hitting it every other frame. Maybe the timing is actually even more lenient, I don't know. Anyway, this may allow extending the chains in stage 1 and 3. 12. Bullet canceling is an important factor as the amount of bullets on the screen seems to increase the canceling bonus exponentially, so letting enemies in stage 1-3/2-3 and 1-5/2-5 (and also Hibachi's first form in 2-7) to flood the screen with as many bullets as possible before destroying the bullet-canceling enemies there is very beneficial (around 2–2.5 million per a good cancel). 13. Shooting in the vicinity of flowers with shot type and lasering with laser type gives a silent score bonus per unit of time. Not sure how much exactly. Flowers can be found in every even stage, I think. Stage 2 also has a star fountain near the beginning. 14. There's a substandard TAS made by Takuro here, produced with slowdown alone, no savestates. It scores 759 million points, but many important factors mentioned in my post are omitted, suggesting a potential of 800 million to be reached with full precision. The highest unassisted score (A-L) available on MAME is 547.5 million by PROMETHEUS (use ddonpchj.zip and ShmupMAME based on 0.99). The highest unassisted score (C-S) in the form of video capture is 638 million by ZBL-NAI. It's from 1990s (I think 1998 or so). You can find it floating around the web.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
Woah... That stuff is really impressive and informative. You da man! Thank you! But I see you were talking about "loops". You mean there are 2 different level batches? Thank you very much moozooh.
Joined: 7/2/2007
Posts: 3960
The second time through the game, the enemies shoot more and there's an extra boss at the end if you do well, if I remember my bullet hells correctly. The levels are otherwise the same. Basically, the first time through to the normal final boss is merely a warmup for skilled players; the "real" game starts on the second loop.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
Most of the score comes from second loop by the virtue of max bomb bonus carry-over (it doesn't reset after you beat 1-6) and the fact that enemies simply cost more there. There is also a very subtle alteration of the chain timing allowing more leniency, but I've never studied it closely as I've only been to 2-1 once myself and didn't even attempt scoring there. Derakon is also correct: in the second loop enemies are a lot more aggressive (bullet count is doubled and speed is also increased somewhat), and there is the true last boss after 2-6. All of this makes it a lot more suitable for a playaround since there is more deadly stuff to play with.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
moozooh wrote:
Derakon is also correct: in the second loop enemies are a lot more aggressive (bullet count is doubled and speed is also increased somewhat), and there is the true last boss after 2-6. All of this makes it a lot more suitable for a playaround since there is more deadly stuff to play with.
I guess both of my movies would start from a save state then. Both of my runs will start on the 2nd loop, for the difficulty factor. But before I do such a thing, between the first loop and the second loop, does the game come back to the title screen/attract sequence? Or, can I press Reset between both loops, or would it cancel the 2nd loop?
Joined: 7/2/2007
Posts: 3960
The second loop is a continuation of the first loop. Think of it like Ghouls & Ghosts, where after "finishing" the game, you get sent back to the start to do it over again properly. If you're going to go for a score run then, from what moozooh was saying, you'll have to do both loops. I'm not certain how entertaining a score run would be compared to a normal playaround, though. It seems like it might constrain your options a bit, not to mention be a very difficult optimization problem.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
Well I guess I'm gonna limit myself to a 2-player playaround on the first loop then. I'm concerned about the entertainment value for a second loop that looks like the first, but harder. However, I'm gonna set the difficulty to Very Hard.
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
What lead you to that decision? Second loop is much harder than whatever the dip switches can change on the first. Compare: 1-1, 2-1. Besides, you'll be missing one of the most hilariously over-the-top boss fights in the history of arcade games. As for the entertainment value, I'll put it this way. A playaround would likely be interesting, and may be appealing to non-shmup fans. A scorerun will only appeal to shmup fans insterested in DoDonPachi, which is only a couple people here (including myself), but there is a huge audience outside of TASVideos for this kind of thing that would piss themselves if you score over 780 million, let alone 800. It will most likely be harder to do than a playaround, though, as a lot of research is involved. Also, most of the chaining routes through the game are actually some of the safest routes you can travel. They're designed that way so that full chains could be possible. DDP is a very polished game.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
moozooh wrote:
What lead you to that decision? Second loop is much harder than whatever the dip switches can change on the first. Compare: 1-1, 2-1. Besides, you'll be missing one of the most hilariously over-the-top boss fights in the history of arcade games.
I'm concerned about the fact that no matter the TAS you submit to this website and no matter if you start from an SRAM or a save state, it has to look like it starts from the power-on. Am I right? If so, is there a dip switch that lets me start right from the 2nd loop? Unless I do both loops. I hope people would be interested in seeing the same stages twice. But I do notice a major difficulty change between them, so...
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
To make a savestate on the 2nd loop you first need to play to the second loop. And if you record what you play there is no problem.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
moozooh wrote:
To make a savestate on the 2nd loop you first need to play to the second loop. And if you record what you play there is no problem.
The submission won't be rejected from TASVideos?
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
The rule is instated to avoid savestate tampering. If you have a verification movie that generates the exact conditions for your savestate, you're in the clean. Also, I should probably say this beforehand: unless you manage to do something fresh for over 35–40 minutes straight, people would only like to see one loop. I know from experience with this exact game that so many stuff going on on the screen makes the experience rather tiresome. But going by the logic and common sense, second loop is the harder one, so it allows more opportunities for cool tool-assisted tricks and gimmicks, so if there is a choice between which loop to submit, it should be this one.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Joined: 7/2/2007
Posts: 3960
I would say rather "exhausting" than "tiresome"; the latter implies the run gets boring, while in fact it's just the case that the viewer can't maintain the high level of attention required to figure out what's going on with all the action and flashing lights. In the absence of a DIP switch or push-button code to start on loop 2, I see no reason why a savestate with associated verification movie wouldn't be allowed. There's just been no need for such a thing before now.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
GabCM
He/Him
Joined: 5/5/2009
Posts: 901
Location: QC, Canada
Fine. So I'm gonna make a not-so-good TAS to make a verification movie, and then I'm gonna start the playaround from a save state. Thank you for your answers.
Joined: 7/2/2007
Posts: 3960
Best of luck!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 6/7/2004
Posts: 6
Location: France
Any news from this project ? Can't wait to see a ultra high score TAS on dodonpachi :)
blackisto
He/Him
Joined: 3/28/2017
Posts: 10
Hello there, I am a DDP player, registering this forum to learn more about this game. I play this game for a bit more than 2 years now; and have a reasonable knowledge of "most" its mechanics. As a DDP player, I am aiming to learn the route and tricks that the current WR holder (i.e. SOF-WTN) showed in a live run in 2014 (see the following link if you are interested by WTN's live run : https://www.youtube.com/watch?v=faaLlH-73Ek ) Dodonpachi is a very peculiar game when TASing is considered for the following reason: - Some old TAS has been done before, by a player named "Takuro". This TAS is very old and I don't know which tools were used to do it. The TAS has been recently re-uploaded on YT: https://www.youtube.com/watch?v=LjGg_BjMnrA - This TAS however uses very very sub-optimal routes. As a reasonably good player (but far from world class), I am already able to beat some of the chains that are performed, and score more (e.g. in stage 1). - Dodonpachi is extremely popular in Japan; but not in the western world; and the "best" strategies for scoring are widely unknown for us. For example; with the knowledge I have; I would expect to produce a score of 780 to 800 millions using TASing. The problem is that the world record (by SOF-WTN) is known; and is equal to ... 862 millions. In 2015, SOF-WTN and some of his friends figured out a way to improve the WR by a bit more than 100 millions (previous WR was 755m). Problem is : nobody knows what this trick is; and SOF-WTN is likely to NEVER communicate about it (although we still have few hopes...). - Some other tricks are known to be possible (from what Japanese players claim) but have never been achieved by westerners. Nor do we have any video to formally prove that these are possible. An important example is the stage 1-5 full chain : we got; from many world class players (including WTN); the confirmation that it's possible to chain this stage from the beggining to the end. However; there's no video of it and as a player I have never been anywhere close to get it -- even using savestates (I play this game using mame). - Some scoring mechanics remain completely unknown. The calculation of the score when we build a chain is known (and is even explained in this topic); but the points that we get when a bullet cancel is performed is not. The only thing that we know is that this number of points grows 'exponentially' with the number of bullet that are cancelled. Nobody has any formula though... For all these reasons, I would be interested to look into TASing. My goal is unfortunately NOT (at least not right now) to build a super-entertaining TAS video where we dodge the entire world while scoring approx. 800 millions. My goal is to understand the game; and I currently have the following 4 priorities: - 1: Figure out how this 100 millions score bump can be done. I expect this to be very hard to do; and it's unclear to me if TAS tools can help. - 2: Figure out a way to full chain stage 1-5. I expect this to be the 'easiest' goal. - 3: Understand the bullet cancel scoring mechanics. - 4: Figure out how and when RNG manipulations are possible. As a players; some of the pattern that I have to face and dodge are random; and this randomness cripples my consistency (i.e. I fail way too much). If there is any way -- in some cases -- to trigger the same pattern consistently; that would be a MAJOR finding to me. I hope that the tools to monitor the RAM would be useful here. - 5: Use the findings in 1,2,3,4 to get a very good score in a "real run". not a TAS (not for the moment). So here we go. I have downloaded FBA-rr yesterday and started exploring the functionalities. My knowledge in TASing is simply zero. I have never done any TAS in any game. I don't know what LUA scripting means; and so far I didn't even find how to play "frame by frame" with FBA-rr. I would be interested by your help about the following things: - is FBA-rr the correct choice for what I'm willing to do ? - is there any link to get started with this emulator. There is probably some userguide explaining how to do frameadvance, etc.; but did not find any so far (but certainly didn't look enough). I plan to spend some time on this project. I usually play DDP every day; but after 60 to 120 minutes my brain is no longer able to respond, so I just stop for the day; meaning that I have at least 1 extra hour a day to look into TASing. That's it for the moment. Hoping to read from you guys. (EDIT: I'm gonna start with this small tutorial : http://tasvideos.org/EmulatorResources/Using.html#HowToUseEmulators )
Patashu
He/Him
Joined: 10/2/2005
Posts: 3999
If xy2_'s posts here http://shmups.system11.org/viewtopic.php?f=1&t=56374. are still accurate, then FBA is now the best rerecording emulator for making arcade TASes in, not FBA-rr. (FBA-rr was a very old fork made to provide basic TASing input, then never really updated. So FBA itself getting rerecording functionality means you're working with the most up to date version of the emulator AND officially supported tools.) I am interested in all score attack shmup TAS work, I'll keep an eye on this too!
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu