DCFFVII Research Thread

Thread Page 50!

McDirge is not yet sophisticated enough to save me time on changing the final equipment, neither on emulator nor on console. In lieu of that you learn to get really quick at defeating Omega Weiss. It's no more than five minutes each time playing through the last checkpoint, depending on how random the Crystal Feelers are.

My JP International savefile was lacking the Guard N Barrel though and thanks to McDirge I could import that item and lots of gil to my file. That process took 10 minutes rather than the 2-3 hours it would have taken me to replay the game from Chapter 6 (where the Guard N Barrel is found) and onwards. The ultimate dream is to have a perfected version of McDirge available as homebrew on Free McBoot and for the user to be able to select the program from the boot-up screen. That dream is still years away from becoming a reality though. McDirge on an actual PS2 is definitely something that the Extra Missions category is in need of.

The no-brainer equipment for an All Extra Missions run is definitely Materia Floater + Manasoul + Thunder Materia on at least one weapon slot, probably with Ultima Weapon + Nova L Barrel to complete that slot. Deciding on the remaining two weapon slots will require plenty more thought and analysis for maximized timesave. Hopefully, as I play through the missions, it will become clear which setup is to be preferred.

On emulator I can take all the time I need to change equipment while playing the actual mission. Strategies are tested on emulator to calculate efficiency of small segments. Getting a good final time only matters on console at this point. Though if I ever want to make tool-assisted speedruns then I will definitely want a better version of McDirge available to save me time on changing starting equipment before a mission.
 
Last edited:
XD
After the previous trailers and reveals I was so strict on not mentioning the Dirge of Cerberus stuff that's present in the Yuffie DLC just in case it was a spoiler to anybody. Now when I lower my guard once I accidentally ended up spoiling Strangelove. That final FF7R Intergrade trailer was way too spoiler-y.
 

Strangelove

AI Researcher
AKA
hitoshura
i skipped a bit of it while looking at the tfs livestream where they show scarlet but i haven't watched anything but the first trailer because i don't have a ps5, don't know when i will and don't want to get hyped about it :sadpanda:
 
Having clean texture rips is satisfying. From Edge, Chapter 3.

2AB3FFE1.png


73C4200A.png

Plenty of these textures could be reworked into higher quality versions by using shots from Advent Children as reference.

70E56813.png
After meticulously frame-advancing through the Edge scenes in Advent Children (2005) I could not find a single frame that was a definitive source for the above texture. Familiar signs and structures, yes, but no photo-matches.

Apart from having an obvious foreground- and background layer respectively, it looks like the background *might* be a composite of multiple images.


3C2DDF72.png
Even though the Shinra Building should be visible to the west of Edge, the cardinal directions of Dirge have been placed thus that Midgar becomes situated north of Edge. The tradition of Midgar inconsistencies is as old as Midgar itself. It also shows how we can't entirely trust the cardinal directions given in the Dirge of Cerberus menu maps.

doc_edge-north.png
 

cold_spirit

he/him
AKA
Alex T
I remember I used to let my imagination run wild with the "Edge Temple" poster next to Aerith's (and the "Midgul Temple" sign that appears in Advent Children). In my pre-Remake mind, I envisioned FFVII-2 having a religious component where some people believed Meteor was a punishment from a higher power. These people would interpret Meteor's target, the Shinra Building, as a sign that any type of natural resource extraction was bad. They'd be like a "neo-Avalanche" religion with some members resorting to extreme measures to stop the main characters in their quest to find sustainable energy sources.

Now I think it's just a temple because people need to pray :)
 
Last edited:
The DoC-exclusive Aerith posters in Edge did indeed spawn such theories/headcanons back in the day. An Aerith Cult would make sense if even only a few people got whiff of the role Aerith played in OG and in AC. Pretty sure Elmyra wouldn't approve for a multitude of reasons. Though the main characters from OG having celebrity status, which DoC reinforces in its script, is not something I've ever been particularly fond of.


Speedrun of Extra Mission #09, Cait Versus the World (IGT 05:34)


My initial lucky streak ran out and the mission made me scream bloody murder as I got bad RNG and got repeatedly KO'd. No other mission makes me shout "F*CK YOU!" at the screen as much as EM09. Every time an enemy approaches is a roll of the dice and you have to pray that the enemy doesn't decide to be aggressive or better yet that they don't end up running in circles around you. Loud cursing was had and I punched the sofa with my fists in anger.

The start of the mission is thankfully very predictable and I got a good route going up until about 30 enemies have been defeated. After that point things get very chaotic and I don't have a solid mind map of where I should be at what points in the mission's progression until I reach 80 defeated foes. The enemy most likely to throw you off with its aggression is the Crimson Hound, as it's way more likely to headbutt you than the Guard Hounds. SOLDIER foes are very tricky too because of their massive range, high-powered attacks and high HP.

But if you learn a decent route and you are able to maintain a high killchain you are way more likely to stay on a good killing streak where Cait Sith doesn't take any damage. I got mad lucky in my 05:34 but with better routing and slightly better luck I hope that the mission can be pushed to a sub-05:00 at some point. For now though I'm happy with this result. This mission just gets my heart pumping in both good ways and bad ways. It's exhausting.

I actually found the enemy spawn patterns and the routing more straightforward here than in Vincent the Mage (EM04). Comparatively I am thus more unsure how to optimize EM04 than I am on how to optimize EM09.
 
Decompress and review. Speedrunning Rains of Gehenna is insane.

In this mission you collect 8 Mini EX Medals in the valley to the east, get a cardkey and use that to advance onto the higher ground in the west where you collect 12 more Mini EX Medals before the mission ends. During all this time you face an onslaught of Snipers, HASBs (Heavy Armored Soldier B), Commanders, Twin Sentries and SOLDIER. Death is around every corner and unless you kill most of the enemies you have no reasonable chance of getting to the end. The mission's first phase (8 medals) starts you out with limited ammo and no way to restore your HP. Starting in the second phase (12 medals) you can start collecting ammo and some restoratives.

EM13_medals.png

I spent a lot of time researching how quickly this mission could be completed if you were invincible and could spend all your time and concentration on collecting medals and none of the time spent on enemies. According to my research, this is the most optimal path.

EM13_shortest-path.png

Following this path, while Vincent was invincible, I achieved a 03:07. With better movement I'm sure a sub-03:00 could be achieved.

Moving clockwise through the mission's second stage is only marginally faster (2 seconds with proper movement) than moving counter-clockwise. For the human player it is also better to go north to the hut in G-4 where you can pick up ammo and two Hi-Potions.

Knowing this I have still tried to make the clockwise path viable...because I'm stubborn that way and I got invested in that path while doing my invincibility-run. That is why I'm writing this post right now. I need to let go of my pride and just go north instead, collect the Hi-Potions and make it so I can power through the enemies with very little hesitation. This *should* save time in the end.

Counter-clockwise path:
EM13_2ndphase_counter-clockwise.png

My current no-cheat record is a 05:28 IGT. That one was highly unoptimized and I am sure I can get a time below five minutes.

Rains of Gehenna is a mission that is close to my heart. I love how it teaches the player to utilize limited resources, memorize where enemies are and to git gud at sniping.

Speedrunning the mission pulls on my insanity lever quite strongly though. You die so many times and rarely ever reach the end. The only reason I am learning to not die in the mission's first phase is because I am spending more time being careful, which ultimately hurts my final record but it's the only way to get out of the gravity well that is the mission's first phase.

Even when I seem to get the hardcore clockwise path right I end up forgetting to pick up medals on the way because I'm so desperately focused on clearing out the enemies and not getting KO'd. I've learned where the environmental triggers are but the battlefield is just so gosh darn chaotic with too many moving parts and places where your gameplay can go wrong. Clearing Rains of Gehenna with a great time requires both massive skill and heavenly RNG. This mission is testing my limits.
 
Last edited:
A good start. Speedrun of Extra Mission #13, Rains of Gehenna (IGT 03:37)

PS2: SCPH-50000 | Game: SLPM-66629

Sight Support: Automatic

Equipment
W1: Ultima Weapon + Nova L Barrel + Sniper Scope + Manasoul + Cerberus Relief Gamma​
W2: P Hydra + Nova L Barrel + Sniper Scope + Manasoul + Fire Materia (Fire Lv1)​
W3: Sonic Griffon + Gale S Barrel + Materia Floater Gamma + Manasoul + Fire Materia (Fire Lv3)​

Thanks to accepting the counter-clockwise path I could finally make real progress. If I spent one or two more days playing EM13 I could get a time below 03:30 but I am more than ready to move on to a different mission now. We know at least from my previously shared research that the optimal time of around 03:07 can only ever be approached but never achieved, at least not with current knowledge and strategies.

You *can* reach the platform at 0:38 without using recoil as a boost but it is very difficult. Having a machine gun with enough speed to fire 12 bullets in mid-air is the best way to ensure a successful height-gain in almost every attempt. I am very happy to have found a mission where a recoil-assisted jump is justified: Doing so is objectively faster and it makes the run look cool.

If I were to change my equipment, I would switch the Gale S Barrel with the Faerie L Barrel. The upside with the Faerie L Barrel is that with the increased range you could auto-target more enemies even on this weapon slot where I have Fire Lv3. The downside is that the gun will fire slower, with a max of 10 bullets in mid-air, so it is way harder to reach the platform at 0:38 using recoil assistance.

When you use the cardkey all remaining enemies from the mission's first phase will die automatically. That's why I don't have to worry about the sniper whose shot you can hear at 1:49, because when I use the cardkey on the gate they get despawned anyway.

With great RNG you can pass through the hut with the Dual Horn pretty much as though the Dual Horn wasn't there at all. With bad RNG you will get stuck in a loop where the Dual Horn repeatedly knocks you over. One time I entered the hut with full HP and a Hi-Potion to spare but I was still killed by the two-horned bull. They have a total of 30000 HP, so spending the time defeating this enemy is simply not an option.
 

cold_spirit

he/him
AKA
Alex T
Easily the most impressive run yet. That recoil-assisted jump got a holler out of me.

Interestingly, the PS2 and copy of Dirge I ordered are set to arrive around June 10th, the release date of FFVIIR Intergrade. I'm also taking the 11th off. That day will be spent playing playing Yuffie's episode and challenging Weiss. After that, a causal playthough of the main game. Gotta soak in all 60 of those beautiful frames per second. Then I'll tackle Dirge. First a casual playthrough of the story, then running through Ex-hard mode to get all the equipment. Hopefully by the end of July I'll be all set up to chase your times.

Assuming the PS2 works of course :wacky:

I like to play games I haven't before, so it'll be interesting to try and fit in Dirge. Maybe it'll only be something I pop in on Saturday mornings for example. But hopefully I can provide some feedback in time. Also, I don't own a capture device, so hopefully I don't actually beat one of your times haha.
 
Thank you for sharing and contributing with that hype energy @cold_spirit :properhug:

To me my Rains of Gehenna video is not that impressive in execution. The mission does have a satisfying variety of gameplay elements though which makes it more satisfying to watch than a run that consists to 95% of HEGH-HUH HEGH-HUH. The time spent on clearing out foes and shooting enemies with the handgun makes it the most akin to a "casual" Dirge session while still being a speedrun. A more optimized run will of course allow more enemies to stay alive, saving time but increasing the risk of enemy bullets KOing you.

There are some slopes in the stage that when you dash onto them will cause Vincent to be propelled along that slope at super-speed. Perhaps these slopes are best referred to as "slide-slopes" or "fall-slopes" since Vincent can't stand on these without falling. Sadly you lose more time by making the detour to these fall-slopes than you do by running a straight path. Hopefully one of the missions will justify a route that involves dashing across one of these special slopes.


Been taking a look at what the proper cues might be for measuring RTA (Real Time Attack) time in the missions. No method of measuring real time is going to be perfect, that must be admitted from the get-go. There is simply too much variance in the game's loading times and you are limited by recordings being 30 frames per second, with highs and lows in the framerate due to imperfections in the recording device.

In my opinion the RTA for DoC Extra Missions should have the timer start with the initiation of player control in the stage and then have the timer stop soon as the player character can no longer be controlled. No pausing allowed.

When a mission begins, the text "Ready Go!" comes and goes, after which the camera is perfectly stationary on the player character for a while. When the mission actually begins and the player gains control, the camera always zooms out. Normally on the first frame of this zoom-out the game will ALSO have registered inputs from your analog stick, meaning Vincent or Cait Sith will have started to move.

EM06_frame0-and1.png

Frame 0 (time 00:00.000)
Frame 1 (time 00:00.033 or 33 milliseconds)

The source of uncertainty here is that we do not know at what millisecond that the player actually gained control. Was it at millisecond 1? Maybe it was at millisecond 20 or 32? There is no way to know. Thus, which frame you decide to label as "Frame Zero" is arbitrary. The above choice of Frame 0 means the RTA measurement will always include a few milliseconds of DEAD TIME where player input was not accepted. But choosing Frame 1 as the actual start means there is a range of 0-32 milliseconds of player character motion that goes unaccounted for.

My personal preference is thus to have Frame 0 as the frame BEFORE the camera shows zoom-out. I'd like to hear though if anyone thinks differently.


Another complication is that *sometimes* Vincent will not have begun to move on the first frame when the camera is zooming out. There is sometimes a delay of 1 or 2 frames, probably due to variation in the game's loading times. But starting the measurement at the first sight of player movement (or other input) adds its own pitfalls of uncertainty. It can be really difficult to measure which frame is the first to show player character animation from player input, especially with a character like Cait Sith. The camera zoom-out technique is more reliable because even a zoom-out of 1 pixel on each wall is discernible enough when measuring frames.

For this reason I would opt for accepting the unfairness of the game's random load time variations, accepting that a player may lose 1 or 2 frames out of bad luck. At least the camera zoom-out is a CONSTANT measuring stick: The player character NEVER start moving BEFORE the camera starts zooming out.

The most reliable cue across ALL missions, no matter what the win condition is, is that the player loses control when the memory card save icon shows up in the upper right corner. There is uncertainty here as well: Player control might have been removed 1-3 frames earlier. Determining when player control stops is more difficult than determining the first frame of player character animation though. The memory card save icon becomes our only reasonable cue of stopping the timer.

Frame 172, timestamp 00:05.739
EM06_end.png

The biggest source of unfairness here is that the waiting time between completing the mission and the save icon actually appearing can be huge. Initial tests on Extra Mission #02, Widow Missileer, shows a variance of as much as 200 milliseconds. EM02 might be an extreme example because the game has to deal with a lot of explosion effects before the mission actually ends, but it illustrates an inevitable unfairness: You could potentially perform "worse" than a previous record holder, but still come out with the WR because you had 100 milliseconds less loading time between the completed task and the save icon appearing.

Ending the timer at the moment of achieving the mission's goal is way too troublesome however. Missions may end with targets being defeated, medals being collected or goal points being reached. The missions where you reach a goal point, like Zephyr Heathlands (EM01) is *especially* vague when it comes to determining the actual frame when you reached the end. Establishing different "time-end" cues for these mission types come with their own set of challenges on determining the frame when the timer should stop.

There are still many experiments to be done, but initial experiments show that doing stuff like looking away from resource-heavy particle effects, aiming down towards the ground etc help diminish the loading time between a completed mission task and the save icon appearing. It might become part of standard gameplay "strategy" to try and manipulate the game's loading times in this fashion.

Even with all this taken into consideration I still can't give up the save icon as the frame on which the timer should end. It is the most consistent marker for telling when player control has been removed for ALL mission types. I am favoring simplicity here for anyone measuring the RTA of their Extra Mission recording, at the obvious risk of world records being unfairly conquered due to luck with the game's loading times.

My current RTA records based on this proposed measuring method

EM01, Zephyr Heathlands 00:57.190 (00:57 IGT). World record held by Gocu with a 00:56.5 RTA (00:56 IGT)​
EM03, Wastelings 00:39.94 (00:40 IGT)​
EM04, Vincent the Mage 05:35.502 (05:36 IGT)​
EM05, Deep Labyrinth 04:17.891 (04:18 IGT)​
EM06, Boxemon 00:05.739 (00:06 IGT)​
EM08, Lord of the Jungle 02:57.945 (02:58 IGT)​
EM09, Cait Versus the World 05:33.5 (05:34 IGT)​
EM11, Collector's Mind 03:33.848 (03:33 IGT)​
EM13, Rains of Gehenna 03:37.117 (03:37 IGT)​
EM46, An Invitation to Illusion 01:05.999 (01:06 IGT)​
 
Last edited:
This is among the strangest behavior I have ever encountered in Dirge of Cerberus. It is absolutely awful...but also hilarious.


Global Playtime Pause Synchronization

The matter concerns two time-measuring variables that I will refer to as the "Local Playtime" (LP) and the "Global Playtime" (GP). Both these variables measure seconds as integers. No decimal values.

Memory viewer perspective:
local-vs-global-timers.png

The value of 15502 here, in address 2046B508, is an example of the Local Playtime.
15502 seconds translates to 4 hours 18 minutes 22 seconds, the example taken here from booting up Ch10-3.

local-playtime.png

Whenever the game is paused there are no value increments to Local Playtime. The value is frozen until the game is resumed. The Extra Missions also use this Local Playtime counter and it determines the final IGT record that is registered for a completed mission.

Meanwhile, the value of 49 in address 2046B50C represents the number of seconds that have passed since the "Square Enix" logo appeared during the game's boot-up. I call this "Global Playtime" and this value increments steadily no matter where in the game you are, no matter if the game is paused etc. There exists no in-game menu for the player to observe this Global Playtime. I only know it thanks to Cheat Engine's memory viewer.


Here comes the twist:
Increments to Local Playtime will ONLY happen when the value of Global Playtime changes. LP is strictly synchronized with GP in this fashion and I have no idea why.

Imagine then that you are playing an Extra Mission. The mission has just begun and the Local Playtime has been set to 0 seconds a few frames before you gain control over the player character and the game menus. You then proceed to play the mission as normal except you decide to enter the Pause screen whenever Global Playtime is about to increment. You then leave the Pause screen just as the GP second has been incremented, resuming gameplay for less than a second and pausing again just before GP is incremented.

You repeat the process, pausing at just the right frequency and timing so that the Local Playtime variable never gets a chance to register that it is supposed to add +1 seconds. You clear the mission objective and your final in-game clear time is...zero seconds.


zero-time-frequency.png


EM02_clear-time-zero.png

If we assume there are no other obstacles and if we imagine ourselves as machines that could perfectly match the frequency of the Global Playtime counter, EVERY MISSION could have a final Best Time of 00:00.

Of course you can also time your pausing so your final IGT record is far worse than it is actually supposed to be. Pause your game only inbetween increments to Global Playtime, then resume gameplay just as GP is adding a second to its counter. A near-perfect execution of Widow Missileer should reward you with a 00:04, but pausing at the "wrong" time over and over could change that IGT to a 00:11.

All of this has nothing to do with how the game's rendering and miscellaneous processing times affect your final IGT record. Those are important factors too but not nearly as powerful as this "Global Playtime Pause Synchronization" behavior.


Icing on the cake, I discovered that the game will overwrite any Best Time of 00:00 if you play the mission again and clear it in 1 second or longer. So even if you did manage to utilize the pause glitch on console and get a best time of 00:00 in Widow Missileer, fake though that final clear time would be, you'd have to take care not to play that mission again or else you are pretty much guaranteed to overwrite the zero-second record with whatever new completion time you achieve.


How absolutely awful and hilarious to imagine that you could theoretically "achieve" record times of 00:00 all across the board by spamming the Pause screen over and over. I am happy to have learned these nuances about the game's timers.
 

cold_spirit

he/him
AKA
Alex T
That's wild. Now we can't trust any IGTs posted without video proof.

By the way, I'll be playing the PAL version of Dirge. Are there any version differences to note of? Do you know if PAL Dirge has a 60hz mode if I play on a compatible TV?
 
That's wild. Now we can't trust any IGTs posted without video proof.
Far as speedrunning is concerned, if there's no video of the achievement then it didn't happen anyway. :monster: And what will matter in the end is the RTA measurement.

By the way, I'll be playing the PAL version of Dirge. Are there any version differences to note of? Do you know if PAL Dirge has a 60hz mode if I play on a compatible TV?
When I did video comparisons of PAL and NTSC with Dirge of Cerberus I could find no discrepancies in terms of game speed, neither in cutscenes nor in gameplay. Effectively it is as though the game is playing itself at 60hz. Quite different when compared to a game like FFX where the slower speed of the PAL version is quite noticeable.

I could be wrong about the actual output on the TV and I've never experimented with changing the TV settings between 50hz and 60hz. I *should* get out my European PS2 and do some tests to confirm the final outputs but I'm already occupied elsewhere research-wise and struggling to complete those tasks. All I can say for sure is that the gameplay "speed" is the same between PAL and NTSC and there are no definitive advantages or handicaps to playing the European/Australian version of Dirge. Though I can't rule out that maybe some day, at some point, we'll find some quirks in the PAL version that affect speedrunning.

There *are* some resolution differences though and the PAL game generally look more stretched and fuzzy compared to NTSC, especially in the menus. Precision gameplay, like precise manual aiming, might be more troublesome because of the fuzzier screen. For normal gameplay and even most speedrunning cases it should be fine.
 
Real Time Attack (RTA) is in the end the most important to focus on but what if we want to optimize our IGT?

If you were to employ Global Playtime Pause Synchronization on console it's a simple matter of looking at the progression of playtime seconds in the game and matching that with an external stopwatch on your computer for example. Then just keep playing the mission inbetween global second transitions and always have the game paused while a global second is incrementing. If you have a small stopwatch that can be easily placed next to you or your TV this is way easier on the eyes and neck than having to ping-pong your focus between the TV and the computer screen.

After about 10 minutes, even if you do nothing in the game but watch the Playtime tick along in the Status screen, the PS2 timer will have started falling behind on your external stopwatch by about 0.1 - 0.2 seconds. Using an external stopwatch is thus viable but should not be used for more than 10 minutes before it is reset to match the PS2 in-game timer once again. Fortunately it does not appear that busy gameplay, with lots of content on screen and missions being restarted over and over, worsen the de-syncing of your game clock and external stopwatch by any relevant amounts.


Let us rule out Global Playtime Pause Synchronization and look at starting a mission with the best IGT possible. See, while the local playtime is synced to only increment when global playtime has increased by a whole integer, there is one situation where the two are NOT synced:
When local playtime is reset to zero.

Picture that you are at the start of Extra Mission #02, Widow Missileer. You are about to press a button to exit the mission description and start the actual mission.

em02start000.png

By this point the Local Playtime is yet to reset to 0 but the Global Playtime has been ticking along same as always. You press the button and it takes about 0.1 seconds for this input to be registered and the mission description to start fading away.
**EDIT: The button input delay of 0.1 seconds on average is based on emulator measurements. I am yet to measure button input delay on console, making this approximation probably the biggest source of potential error in my analysis.**

The text "Ready" and "Go!" pass by in a flashy manner. A disc icon, signalling some important loading is taking place, will appear on the upper right corner. After plenty of analysis I have determined that the frame on which the disc icon appears is a good approximation of when the Local Playtime is finally reset to zero.

Normally the game loads too fast on emulator for the disc icon to even show up. On console, however, the disc icon will always show up at this point.

em02start264.png

From the moment before the mission description started fading away, anything between 3.27 - 3.337 seconds have now passed before the local playtime was reset to zero. Add the time it takes for a button input to register, roughly 0.1 seconds, and the total waiting time from button press to playtime reset was in the range between 3.37 - 3.437 seconds.

Local playtime has been reset and it will now take anything from 0.5 - 0.567 seconds until the player actually shows movement! The game forces you lose this time no matter what you do.

But remember. Local Playtime (LP) and Global Playtime (GP) is now out of sync because the former was reset to 0 regardless of the phase Global Playtime was in at the time. WORST SCENARIO, LP will be set to 00:00 and then on that frame or the next GP will increment with +1 second, thus INSTANTLY moving the LP from 00:00 and up to 00:01. Add the compulsory waiting of 0.5 - 0.567 seconds and it's entirely possible that your Local Playtime will be 1.5 seconds before you've been allowed even a single action in the mission itself!


The only way to play safe here and avoid having fake/erroneous Local Playtime added to your final IGT record is by using an external stopwatch and timing the button press that starts the mission.

While you are still on the mission description screen, wait until the current second on your stopwatch reaches at least the 633 millisecond mark (0.633 seconds). The Global Playtime will then be ticking away for anything from 3.37 - 3.437 seconds until the Local Playtime is set to 0.
0.633 + 3.37 = 4.003
0.633 + 3.437 = 4.07

In the two examples above, Global Playtime was incremented slightly BEFORE Local Playtime was set to 0. This means that Local Playtime won't instantly be moved from 0 to 1 because of how it is synchronized with Global Playtime. The 0th second of LP will inevitably end up shorter than a full second because of the frames that GP has already spent ticking upwards, but thanks to the stopwatch technique we have diminished how much time is stolen away.

It is very important to not initiate the mission too early. If you do it when the stopwatch is at the 500 millisecond mark...
0.5 + 3.37 = 3.87
0.5 + 3.437 = 3.937
...then Local Playtime will only stay at second 0 for anything from 63 - 130 milliseconds before moving up to second 1.


Loading times on emulator are roughly 0.2 seconds faster and the timing is adjusted accordingly. What I have presented above are my best estimates for how to optimize a legitimate IGT record on console with the help of an external stopwatch. The biggest source of uncertainty, as mentioned, is that the button input delay on console may be different from emulator.

When playing on emulator it is possible to get a final IGT of 00:03 in the Widow Missileer mission but only with perfect execution, optimized timing of Local Playtime being set to 0, and loading time manipulation by looking away from resource-intensive models and effects. Even with all this there is still an element of luck that decides whether the game will grace you with a final IGT of 00:04 or a 00:03.

I believe that a 00:03 on console IS possible but it may take years before we see it happen if only because of the longer loading times on an actual PS2. Optimizing your IGT record is by no means important compared to the actual RTA record. When I have the energy though I will do the stopwatch technique and optimize my IGT because, personally, I am invested in both IGT and RTA.

The current uploaded record by Gocu is a 00:05 with a calculated RTA of 4.9 seconds. My strategy will be different from what's seen in Gocu's video.
 
Last edited:
After hundreds of failed attempts I achieved a formidable world record in Extra Mission #02, Widow Missileer.

3.971 seconds RTA (00:04 IGT)
External stopwatch employed to help optimize IGT.

PS2: SCPH-50000 | Game: SLPM-66629

Sight Support: Manual​
Weapon Slot 1: P Hydra Gamma + Nova L Barrel + Sniper Scope + Power Booster Gamma + M Adjuster Gamma​

The four Black Widows all share the same HP bar and defeating one means the other three are defeated also. This "Widow Missileer" has a total of 1500 HP. The key to ending this mission instantly is to strike the weak spot of any Black Widow and one-shot the enemy.

The Black Widows always have their weak spot (the underside of its belly) exposed. The problem is that even when you zoom in with the sniper scope, this weak point is pixel-precise.

EM02_goldilock-zone.png

Taking the time to enter first-person sniper scope mode would waste too much time so we have no choice but to remain in third-person. I dare say this renders the weak spot into a sub-pixel precise affair.

1.5 seconds after the mission has begun the Black Widows will prepare to fire missiles. The change in stance will mean that more of their weak spot is exposed. In Gocu's record he is able to land some critical hits with auto-aim right around this point, finishing the Black Widows in 1.667 seconds. The remaining 3.233 seconds are then spent waiting for the explosions to happen and for the save icon to appear, marking the end of the RTA clock. Thus his final time was 1.667 + 3.233 = 4.9 seconds RTA.

My final time was 0.868 + 3.103 = 3.971 seconds RTA. My loading-time period ends up at 3.103 instead of 3.233 thanks to looking down and turning around after the Black Widows are defeated. This strategy has consistently been able to save me 0.1 seconds and sometimes even more compared to if you just keep looking straight ahead at all times. I would have turned around sooner in my video but I was so shocked at getting the critical one-shot, after hundreds of failed attempts, that my slow reaction time can be somewhat expected.

It is entirely possible that to get the best possible time in this mission, one that will put my own record to shame, you will have to use auto-aim. The exact mechanics of auto-aim are still unknown however and it is not clear how (un)likely you are to strike a critical hit before the Black Widows start exposing their weak spots. That's why I opted for Manual aim and the control that grants, despite the time that is inevitably lost from having to, well, AIM.

Initially I went for using a mouse in this mission but the latency was too great. While the inputs from a controller or keyboard is near instant, inputs from a mouse takes 0.1 - 0.2 seconds longer. This caused too much uncertainty in a mission that already has randomness associated with the exact moment when the player gains control and how much the game will react to those initial inputs right as the mission begins. For this reason I switched to a normal PS2 controller. Eventually I lowered the Sight Speed and Camera Speed so that I could make dramatic movements with the analog sticks but still achieve only that tiny bit of adjustment I needed to aim directly at the Black Widow weak spot.

EM02_config_settings.png

The above configurations were what turned out most in my favor out of any control- and configuration scheme.

Handgun bullets travel at 400 m/s. Rifle- and machine gun bullets travel at 600 m/s. The distance between Vincent and the closest Black Widow is 31 meters.

Time for a handgun bullet to travel the distance: 0.0775 seconds
Time for a rifle- or machine gun bullet to travel the distance: 0.05167

The difference in travel time is roughly 0.0258 seconds. That is almost enough to match one frame of 0.033 seconds in a 30fps recording!

The difference is always present on emulator thanks to it playing the game at 60fps and recordings on console confirm that handgun bullets almost always lose you time even in 30fps recordings. The thing about Vincent's handguns is that they fire three bullets...and even if one bullet is able to "match" the speed of a rifle bullet, thanks to the time uncertainty in a 30fps video, it will take the game ONE MORE FRAME to calculate the damage of the second bullet and yet one more frame to calculate the damage of the third bullet!

Even with a handgun setup...
Weapon Slot 1: Ultima Weapon + Gale S Barrel/Nova L Barrel + Sniper Scope + Power Booster Gamma + M Adjuster Gamma
...you will always need at least 2 out of the 3 bullets to hit in order to deplete all of the enemy's HP. In other words you are doomed to lose time both by virtue of handgun bullets travelling slower than rifle bullets AND because the game needs extra time to calculate the second- and third bullet in a handgun shot.

Those 1-2 frames (33-66 milliseconds) lost to handgun bullets could mean the difference for a potential world record in EM02. There is no difference in latency for firing a handgun versus firing a rifle, so the latter should always be prioritized thanks to the bullet speed of 600 m/s.


Medium distance counts as 12-37.99 meters, ergo why the M Adjuster Gamma is equipped. It is only by combining the Sniper Scope and the M Adjuster Gamma that medium-distance bullet scattering is possible to reduce to 0. The setup with Ultima Weapon + M Adjuster Gamma in this mission would have been the most scientific use of the M Adjuster accessory because the Black Widow's critical spot is so thin and because at least two bullets must converge on the same point (zero scatter). In this way I mourn the loss of the Ultima Weapon setup, as having zero medium-distance bullet scatter is not nearly as relevant with the rifle. I retain the M Adjuster Gamma in my rifle setup more as an homage to the old strategy, since admittedly a medium-distance bullet scatter could just as likely aid- or hurt me when I'm firing the single rifle bullet.
 
Last edited:

cold_spirit

he/him
AKA
Alex T
Get ready for the Dirge surge!

After a snafu, I've finally been reunited with Dirge of Cerberus.

I originally ordered a NA PS2 and copy of Dirge. After weeks of waiting it finally arrived. However, the seller literally just shipped it in a box. No packing paper, no bubble wrap, they just sealed it with tape and sent it across the Pacific. Needless to say it no longer works. I got a refund, but felt a bit annoyed about the whole thing. Everybody lost because of their carelessness. They lost a sale, the world lost a PS2. Pointless.

I then ordered a PAL PS2 and copy of Dirge from a seller in my state. Not what I wanted because my PS2 collection at home is NTSC, but I didn't want to go through the wait again just receive a beat up console. It arrived a few days later. I set it up and was surprised to see the onscreen PlayStation 2 logo was modified. It featured the text "Matrix Infinity v1.93". Turns out I bought a modded PS2! I tested the earlier NTSC copy of Dirge I ordered and it works!

In a way the broken PS2 was a blessing disguised as a curse. Now I have a PS2 that can play both NTSC and PAL games plus two different versions of Dirge :)

Not saying anything official yet but an All S Rankings run of Dirge sounds like a good way for me to learn the game...

 
Last edited:
The hype is palpable! So glad you got a modded PS2 and don't have to worry about region locks.

Attached file: The values required for D, C, B, A and S ranks in every chapter in Dirge. Being from a BradyGames guide it obviously has a few errors but so far it's the most complete source we have of the ranking charts post-JORG.

*EDIT* SUPER-IMPORTANT CORRECTION: The old Excel file was incomplete and did not have the complete ranking charts for Normal/Hard mode. This has now been amended with more complete transcriptions of the BradyGames guide.
 

Attachments

  • 00_BradyGames_ranking-charts_complete.zip
    28 KB · Views: 0
Last edited:
Page 27 of the DCFFVII Official Complete Guide shows a summary of the differences between difficulty modes in DoC.

DCC_027_crop.jpg

難易度による違い

難易度

NORMALを基準とした比較内容

EASY
・敵の数が少ない
・敵に与えるダメージが2倍
・敵から受けるダメージが1/4
・照準が簡単に合わせられる「Sオートスコープ」が使用可能

NORMAL
・敵の数は標準
・敵の能力は標準
・照準が合わせやすい「オートスコープ」が使用可能

HARD
・敵の数が多い
・敵の動きが複雑
・敵から受けるダメージが20%多い
・ポーズ画面以外では敵の動きが止まらない

Difference by difficulty

Difficulty

Comparison content based on NORMAL

EASY
・ There are few enemies
・ The damage to the enemy is doubled
・ 1/4 damage received from the enemy
・ "S Auto Scope" which can easily aim can be used

NORMAL
・ The number of enemies is standard
・ The enemy's ability is standard
・ "Auto Scope" which is easy to aim can be used

HARD
・ There are many enemies
・ The enemy's movement is complicated
・ 20% more damage from enemies
・ The movement of the enemy does not stop except in the pause screen

Juicy insight into the differences between Easy, Normal and Hard difficulties. I have found the corresponding addresses in the BGD (Basic Game Data) file that influence enemy ATK- and DEF based on difficulty mode. Each modifier is a signed 2-byte variable.

jorg_difficulty-modifiers.png

In the damage formula the value 100 is added together with any of the above values. This value is then multiplied with the value 0.01 at the end of the damage formula. This renders the difficulty variables into percentage modifiers, essentially.

Easy Mode: Base Enemy Attack Power
100 + (-75) = 25.
Final damage the player receives from an enemy is thus 25% compared to Normal, or 1/4th, same as specified in page 27 of the official guide.

Easy Mode: Base Enemy Defense
100 + 100 = 200.
Enemies take 100% more damage than in Normal mode, or simply put they receive double the amount of damage.

All these values are true regardless if the target is a common foe, a boss, a box or a drum can. Of course there are exceptions such as the damage output of the Death Penalty not being impacted by these variables.


To the surprise of absolutely nobody there is no official guide, be it in Japanese or in English, that specify in numbers how the enemy ATK and DEF differ between difficulty modes in the post-original releases. Thanks to analysis of the BGD in the post-JORG versions of Dirge we can learn these values anyway. The BGD values are the same when comparing NA, PAL and JP International.


post-jorg_difficulty-modifiers.png

In the save file data, each difficulty mode is represented by a number.
0 = Easy​
1 = Normal​
2 = Hard​
3 = Ex Hard​

After the original JP release there has been an erasure of Easy mode, to the degree that even if you change the value 1 (Normal) to value 0 in your save data, the game will still read this as being Normal mode. Thusly you can't force Easy mode into a post-original version of Dirge. This paradigm is further enhanced by the Easy mode values from BGD no longer being present: There is no value that make enemies receive twice more damage compared to Normal mode and no value that nerf their attack power to 1/4th of Normal.

The jump to Hard mode may look undramatic since only Enemy ATK power is increased but their average DEF remains the same. The increase in difficulty primarily comes from killchains being reset to 0 when you take damage and the game no longer pausing when you enter the main menu.

At long last seeing the difficulty modifiers for Ex Hard is quite satisfying. Compared to Normal and Hard enemies now have double the defense. Damage dealt by enemies is doubled compared to Normal mode. Yup, that checks out.

I expect it will be a very, very long time before I understand what page 27 of the JP guide refers to exactly when it says that "The enemy's movement is complicated" in Hard mode. I maintain hope to one day find these exact values that affect the average enemy AI depending on difficulty mode.
 
Last edited:
Cardkey farming beyond what the game intended would be a huge step for speedrunning Dirge. It remains only a dream for now but I have further studied the cardkey mechanics and I believe this knowledge might help us in the future. For a summary of how electromagnetic barriers and cardkey-depletion works, see this post from December 2019.

For when enemies drop cardkeys there are essentially two scenarios:
A: The cardkey is set to drop when a specific target is destroyed. Let's call this "Single-Target Logic".
B: The cardkey is set to drop after a certain number of targets in a given group have been destroyed. Let's call this "Group-Target Logic". Each group has their own counter which is incremented as the targets are defeated.

For example the cardkey you gain on the 2nd floor in WRO HQ (Ch4-2) only appears when the 14th (final) enemy of that group of targets is killed. Enemy count here is based on playing Ex Hard, so conditions sometimes require a higher kill count than in Normal or Hard.

In Chapter 4 the game is very strict with the Group-Target Logic: A cardkey may only drop when the counter value is incremented to X. No value higher than X or lower than X will lead to a cardkey being dropped.

Not all chapters are this strict with how the Group-Target Logic dictates cardkey drops. If you go to the Train Graveyard (Ch8-1) and defeat a group of enemies, the if-condition is "Defeat X number of targets in the group or more". Near the start of Ch8-1-1 there is a room with 5 DG Soldiers and the fifth one to be defeated drops a cardkey. But if one of the soldiers respawned, or if there existed another soldier in this unique group, then you could defeat that soldier for yet another cardkey drop.

I ended up spending most of the afternoon mapping which chapters follow the strict logic versus which ones follow the more lenient if-condition for cardkey drops.

Chapters where defeating only X number of targets in a group lead to cardkey drops:
Ch4, Ch5-1, Ch6, Ch10.

Chapters where defeating X- or more targets in a group lead to cardkey drops:
Ch1, Ch5-3, Ch8-1, Ch8-2, Ch11.

Some chapters are not mentioned because cardkey drops are either based on Single-Target logic, cutscene flags or the chapter doesn't have cardkeys.


What made me consider all this today was a happy accident where, by using Cheat Engine, I caused an enemy to drop multiple items by making their HP instantly restore to above 0 after they were defeated. The enemy is defeated, drops an item, has HP partially restored, is defeated again and drops an item again. Doing this cheat on enemies that drop cardkeys, whether they belonged to the Single-Target Logic category or the Group-Target Logic category, led to multiple cardkeys being dropped.

On emulator I have definitely encountered cases (even without cheats) where enemies entered a sort of undead/limbo status. They were defeated and added to my killchain, but somehow they were still alive and shooting them again would increment the chain once more. Unfortunately I did not study those cases deeper, like checking the enemy's HP to see if it was actually still above 0 (though it probably was), and I don't know how to replicate those scenarios.

The closest I've come to on console, that I can remember and have proof of, is when an Epiolnis entered an undead status and acted dead even though it still had HP left. Once again my data is limited and I do not know if this case led to one extra item drop (on top of an item drop that already happened when the Epiolnis was first "killed"), if the single Epiolnis ended up counting as two targets etc. Did I even "kill" the Epiolnis to begin with? The video is from February 2016 so I don't remember much.


What we need is one predictable case of making an enemy enter an undead status, then confirm if this undead status is enough to make the enemy drop the same item twice. When that is done, find ways to trigger this status for enemies that drop cardkeys. It's a longshot but it feels much more realistic, and within known game behavior, than for example stumbling upon a moon-jump glitch so you could skip EM barriers by jumping super-high.

The back of my head is telling me that there are more "undead enemy status" cases from console play that I should already know of. When the cheat is done on emulator, with HP being instantly restored to a defeated enemy, the enemy can no longer be targeted with auto-aim, the enemy usually isn't moving around and then they slowly fade away. So long as the enemy hasn't yet faded away they can be farmed for more items. Manipulating the group-target counters would also help, of course.
 
Last edited:
Hitbox-specific defense stats influence pretty much the last stage of the damage calculation process when a bullet lands successfully on an enemy. One way to write the equation would be this:
(Calculated_Potential_Damage + 0.50) * Hitbox_Defense * 0.05 = Actual Damage (rounded down to the closest integer)​


Rosso has 13 hitboxes for when taking bullet damage. In total these have 5 unique values for modifying the final damage output. Her weapon does not take damage or even register the player's bullets.

Hitboxes somewhat visualized below and color-coded to represent their unique defense values.
The hitbox for her upper arm to the right is obscured by her chest- and stomach hitboxes to the extent that in-game you actually can't land a bullet on this upper arm from the perspective below.

hitboxes_visualized.png

Hitbox Color - Hitbox_Defense --- Hitbox_Defense multiplied with 0.05

Red - 50 --- 2.5
Orange - 20 --- 1
Yellow - 16 --- 0.8
Green - 14 --- 0.7
Lightblue - 12 --- 0.6

The "orange" value of 20 is a good example of "normal" damage. Since 20 * 0.05 = 1, you end up not increasing the damage compared to the "Calculated_Potential_Damage" at all.

(1000 + 0.50) * 20 * 0.05 = 1000.50 * 1 = 1000.50
This is rounded down to the closest whole integer which is 1000.

We get a much more satisfying calculation if we consider a headshot.
(1000 + 0.50) * 50 * 0.05 = 1000.50 * 2.5 = 2501.25
Thus the actual damage becomes 2501.

Most enemies actually have a Hitbox_Defense value of 60 for their headshot/critical-hit region, resulting in the value 3 when multiplied with 0.05. The rest of their body will then usually have a Hitbox_Defense value of 20. This matches the observation some players may have made that a critical hit tends to be 3 times stronger than a normal hit. Rosso is only slightly tougher than that.

The float value "0.05" (its literal hex value is 0x3D4CCCCD) is taken from instruction space and the multiplication of Hitbox_Defense all happens between the xmm registers. What this technical jargon ultimately means is that you will NOT find a variable address with the value "3" that manipulates the fact that critical hits are typically three times stronger than a normal bullet hit. The only way that I can find the Hitbox_Defense addresses is by tracing the game's assembly code at just the right place(s), reading the game's instructions and what values all the addresses and registers had in each particular moment.

I've been spending A LOT of time reading Dirge's assembly code recently. Speedrunning the Extra Missions is on hold. Many neat facts have been learned. Such as...

- Each enemy has their own STR, DEF, DEX and INT stat in memory, just like Vincent. For enemies these stats are (so far) always set to 0. These variables exist in memory and the game will access them for damage calculation (or like in the case of DEX, bullet accuracy calculation) but their contribution is always zero.

- Hitbox_Defense addresses, and their values, typically apply to a whole enemy type in that chapter/stage. Say for example that a DG Sergeant receive three times more damage from a critical hit because the Hitbox_Defense value is 60. If I change that value to 120 then critical hits will cause six times more damage than normal and it will do so on ALL (or most) DG Sergeants in that chapter. Target-unique Hitbox_Defense values quite simply doesn't seem to exist for common enemies. Keep in mind all these examples concern bullet damage mechanics, NOT melee or magic.

- Triggering the animation that signal a boss has been defeated is enough to make the game progress forward as though you had defeated the boss normally. The game doesn't care that the boss's HP remains unchanged. So long as the boss enemy performs the animation saying that they've been defeated, the game will accept this as a valid victory and move the game/story along.

Being able to manipulate boss enemy animations is what helped me freeze Rosso on the spot so I could take a good snapshot and do careful hitbox testing. My manipulation of enemy animations is flawed though and I have not managed to trigger any definitive, unused/hidden battle animations.
 
Last edited:
Top Bottom