ShadowSpeedrun / ShadowSX

ROM Hack + Dolphin Config for a Speedrunner focused version of the GameCube ENG NTSC Shadow the Hedgehog.
4 stars 2 forks source link

Add IGT Timing for Boss Events #9

Open dreamsyntax opened 4 months ago

dreamsyntax commented 4 months ago
BlazinZzetti commented 3 months ago

All bosses have an intro and a mid fight cutscene. In these cases, we can get away with only adding a penalty if one of those cutscenes need to be watched again.

Egg Dealer on the other hand, has a cutscene for each attack. we could either:

1) Only apply a time lost upon a second viewing of an attack's cutscene (preserves IL times and somewhat compatible with 1.0, but could have issues with when compared to runs that got different attacks.) 2) Dont stop time at all during attacks. Keep HUD visible and show time incrementing. (makes the fight the same as the other bosses, but not makes 1.0 and 1.1 runs different.)

The problem we want to avoid is 2 runs of equal pace at the start of a fight, but one run gaining an IGT lead by committing actions that slower RTA.

The SX IGT should reflect RTA without loads as much as possible. Pausing the timer sometimes is okay, like using a teleport warp, as the action is unavoidable. This is also why I don't mind a first time viewing of a boss cutscene pausing the timer.

I would also like example footage of why this is necessary. When 1.1 is released, a new video will be made showing the changes and showing this change in a realistic way would help explain why the change is needed for those not aware of the situation.

BlazinZzetti commented 2 months ago

Times for bosses in order of Intro, Mid, and Death Restart

Heavy Dog = 4.06, 2.66, 4,21 Egg Breaker Dark = 4.06, 1.66, 4.21 Egg Breaker Hero = 4.06, 1.66, 4.21 Egg Breaker Normal = 4.06, 4.01, 4.21 Black Bull 1 = 5.08, 3.01, 5.23 Black Bull 2 = 5.08, 3.01, 5.23 Blue Falcon = 4.06, 1.99, 4.21

Sonic and Diablon Pure Dark = 4.06, 2.99, 4.21 Black Doom Pure Dark = 5.08, 2.34, 5.23 Sonic and Diablon Dark = 4.06, 2.99 , 4.23 Egg Dealer Dark = 14.39 1.99, 14.54 Bombs = 3.99 Rings = 3.99, Shadow = 3.99 Pawns = 5.99, Missiles = Intro

Devil Doom = 4.08, 5.01, 4.23

So there goes my idea of using a set time for every cutscene :(

BlazinZzetti commented 2 weeks ago

6d59294ae5b99aa8592e38093cd04aadce97ce00, 172eccd4504cefb039cb2fbfdb34e41a59c6b159, and 7fac5f0d9c34218ad44fa9ab81516abfe6c3bf94 Implement this feature, but with rounded time penalties to condense the number of branches.

Pretty sure that I forgot to round the values for Egg Dealer after finishing up the other bosses, so another commit will be made later to fix that. A few playthroughs will be needed to verify each boss is working correctly, a quick test seems to suggest that it's fine. I'm hoping everyone will be ok with the rounded values as we are running out of code space :(

dreamsyntax commented 2 weeks ago

I'll take a look and see if its possible to condense to a standalone function instead.

BlazinZzetti commented 2 weeks ago

Like with Egg Dealer, Sonic and Diablon also has it's own control code which is not covered by BossPenalties.asm. Having a means of sharing common code for this feature with a standalone function will hopefully help in reducing code size.

BlazinZzetti commented 1 week ago

This feature should be complete as of ee74f65d1843066bcec1e4d0ce8b0b9c3c719b9a. Double checking in Story Mode during streams this week before closing.