I've always been curious as to how the console games worked (particularly the SNES/SFC games), so I recently went deep-diving with the Mesen debugger...
Here's how rank works in SNES/SFC Parodius Da! (my personal favorite version):
Total rank:
Code: Select all
Total rank = Powerup rank + Base rank by difficulty + Survival rank + Loop rank
Capped at 0x1F (31 in decimal).
If playing at Diffculty 1, then Total rank = Loop rank (all other rank types are entirely bypassed - easy mode indeed!)
Code: Select all
Powerup rank = (base powerup rank * (# of options + 1)) / 8
Base powerup rank: Shot type rank + Missile rank + Shield rank + Bell rank
Shot type rank: 2 for normal shot, 3 for double/tailgun, 4 for laser/ripple/3-way/spread-gun
Missile rank: 0 for no missiles, 2 for missiles
Shield rank: 0 for no shield/force field, 2 for active shield/force field
Bell rank: 0 for no active/held bell, 2 for any active or held colored bell
Assuming a full stable of powerups, powerup rank effectively maxes out at:
5 for Vic Viper/Octopus (4 options)
4 for Twinbee/Pentarou (3 options)
Note that it's impossible to hold both shield and a colored bell at the same time.
Base rank by difficulty | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Difficulty | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |||||||||||
Rank | 0 | 1 | 3 | 5 | 8 | 11 | 14 | 0x0FFF (!) |
Survival rank:
Code: Select all
Minimum value = 1
Set to 1 on game start
+1 for each stage completed
-1 for each death
Reset to 1 when starting new loops
Code: Select all
Loop rank = (Loop #) * 4
Note that the loop # is 0-indexed, so Loop 1 is 0, Loop 2 is 1, ...
THE COMPLETE LACK OF FRAME RANK.
This means that speedups do NOTHING to the rank, whereas shields/force fields only increase powerup rank.
You can safely get as many speedups as you want

Survival rank is what makes up for this, which is why dying later in the game still makes the game noticeably easier.
Moreover, bell stock does not affect rank in the same way as the arcade - as far as rank is concerned, it's "You either have bells active or in stock, or you don't".
This means having 3 blue bells has the same rank effect as having 1 blue bell.
This is especially nice given that this version gives you a dedicated bell button...
---
The Omake! Special stage uses a different total rank algorithm from the base game:
Code: Select all
Omake Stage total rank = (Powerup rank * 2) + Base rank by difficulty + 1
Total capped at #1F
I still need to investigate how rank actually affects various things (e.g. bullet speed and enemy spawns).
I'll follow up on this thread once I find that out.
---
Appendix: Here are the Player state variables (not the full list, but enough to cover rank-related things):
Code: Select all
$7C - Player number (0 for P1, 1 for P2)
$88 - Total rank
$8A - Stage counter (0x0 through 0xA for main game stages, 0xB for Omake stage)
$98 - Lives counter
$A0 - Loop counter
$E0 - Survival rank
$1B76 - 0-3 counter (incremented on each enemy kill) for determining if revenge bullets are fired (Loop 2+)
$1B8A - Base rank by difficulty
$1B8E - Current player's difficulty level
$1C64 - # of speedups
$1C66 - 2 if player has missile/rocket punch, 0 if not
$1C68 - # of options
$1C6A - 2 if player has a shield/force field (type/shield HP doesn't matter), 0 if not
$1C6C - Powerup bar status
$1C70 - Shot type (Vic Viper: 0 for normal shot, 1 for double, 2 for laser)
$1C8E - Currently held bell type (1 for blue, 2 for white, 3 for green, 4 for red)
$1CAE - Powerup rank
$1F48 - Player 1 score
$1F40 or $1F44 - High Score
$1FB0 - Starting Life count from settings ($1FB0 for P1, $1FB2 for P2)
$1FB4 - Difficulty level from settings ($1FB4 for P1, $1FB6 for P2)
$1FB8-$1FCF - Other settings (Button config/autoshot/roulette)
$1FD8 - Loop counter ($1FD8 for P1, $1FDA for P2)
$1FE8 - Survival rank per player