Castlevania: Circle of the Moon
Game Mechanics FAQ
(c) Synneth Relmn, 2014
Version 1.11

-------------------------------------------------------------------------------
Version History
-------------------------------------------------------------------------------

1.00 - Initial release

1.10 - Explained how to use the formulas better.
      Made it read more like a guide and less like an IRS tax form.

1.11 - Made minor corrections.

-------------------------------------------------------------------------------
Table of Contents
-------------------------------------------------------------------------------

(1)  Introduction
(2)  Basic Statistics
(3)  Using the Formulas
(4)  The Damage Formula - Nathan Attacking
(5)  The Damage Formula - Nathan Defending
(6)  Attack-Specific Modifiers
(7)  DSS Modifiers
(8)  Formula Examples
(9)  Status Effect Mechanics
(10) Other Game Mechanics
(11) Legal Info

-------------------------------------------------------------------------------
(1) Introduction
-------------------------------------------------------------------------------

This guide mainly covers the various calculations involved in determining how
much damage is done by any possible attack. The mechanics of damage in this
game are actually relatively simple; all of the information in this guide was
obtained by black-box testing on the original cartridge. Also, this guide is
relatively sparse in actual data (such as monster statistics and equipment
modifiers), but you can find that in other FAQs.

This guide is very math and number oriented. If you don't want to pore over
formulas and numbers, the most basic things you can take away from this guide
are these:

- If you double your STR, your damage is multiplied by 4.
- If your STR is cut in half, you deal one-fourth the damage.
- If you double your DEF, the damage you take is cut in half, and vice versa.
- Your INT does not affect your magic damage in any way; it only determines
 how fast your MP comes back.

For the rest of you, it is important to note that this game uses integer math.
What this means is, any time a division occurs, the result will have everything
after the decimal point thrown away. For example, if the game tries to divide
7 by 2, it will return 3 and not 3.5. This also includes multiplication by
decimals; if a skill says it multiplies STR by 1.1, the game will internally
multiply by 110, then divide by 100. Also, all damage values are given PER HIT.
Many attacks will hit multiple times, but these calculations are performed each
time. Essentially, each time you see a red damage number pop up, the following
formulas are run. Finally, there is no randomization of damage in this game;
the same attack performed under identical conditions will always do the same
amount of damage each time.

This guide is designed to be viewed in a monospaced font, as is seen in basic
text editors. Using advanced word processors or otherwise rendering this guide
in a variable-width font may screw up the alignments and whitespace.

-------------------------------------------------------------------------------
(2) Basic Statistics
-------------------------------------------------------------------------------

Before we dive into the formulas, here is a quick rundown on the statistics:

HP:  Hit points. This is how much damage you can take before you die.
MP:  Magic points/mind power. This is consumed by using DSS combos.
STR: Determines how much damage you do with any weapon, be it your whip,
    sub-weapons, or magic. If something deals damage, it involves STR.
DEF: Determines how much damage you take from enemies. If something takes
    damage, it involves DEF.
INT: Determines how fast your MP regenerates. This does NOT influence magic
    damage; only STR does that. This is why the magician class does pitiful
    damage despite having a large amount of INT.
LCK: Determines how often enemies drop items.

All of these statistics grow at different rates depending on your character
class (i.e. Vampirekiller, Magician, Fighter, Shooter, or Thief). Vampirekiller
is the default class used when you don't put in a special name at name entry.

Out of these statistics, monsters only make use of HP, STR, and DEF. Monsters
may have different values for STR depending on their attack. For example, the
Skeleton Bomber has 75 STR if it hits you with a bomb, but it only has 50 STR
if you bump into its body. The statistics for each monster in the game can be
found in other guides.

-------------------------------------------------------------------------------
(3) Using the Formulas
-------------------------------------------------------------------------------

The formulas in this game have been written as if they were being run as a
computer program. All mathematical expressions have been marked with a ">".
For those familiar with programming languages, the formulas can be run like
a program by plugging in numbers from tables and running the marked lines
sequentially. Lines with square brackets [] are only run if the condition
inside them is true.

The math notation used in this guide is:
* = multiplication
/ = division
^ 2 = square
floor() = round down to the next lowest integer

If you are new to these sorts of guides, the formulas consist of a number of
mathematical expressions that are evaluated in order, each using the result
of the previous one in some way. In this guide, lines with a condition in
square brackets are skipped over if that condition isn't true. For example,
if the formula was:

> x = 5 * Bonus1
> x = x + Bonus2 [if x > 10]
> y = floor(x / 2)

you would start by looking up the values for Bonus1 and Bonus2 in tables.
Assume that you find that Bonus1 is 3 and Bonus2 is 4. You run the first line
and find that x is 5 * 3, or 15. Looking at the second line, we only run it
if x is greater than 10. It is, so you would plug 15 into the second line
to find that the new x is 15 + 4, or 19. Finally, you plug that into the third
line to find that y is floor(19 / 2) = 9.5 rounded down, or 9. This is not
algebra; the equal sign is considered to be what we call an "assignment"
operator, meaning that the expression on the right is evaluated and assigned
to the variable on the left, overwriting it if need be. In the case of the
second line, everything on the right side of the equal sign refers to the
"old" x from the previous line, and the x on the left side is the "new" x
that we want to find. If this concept seems confusing, please look at the
Formula Examples to see how values carry over from one step to the next
when the formulas are carried out as they should be.

Sections 4 and 5 contain the actual formulas, and sections 6 and 7 contain some
of the values that you plug into these formulas. Not all of the data you need
is here yet; monster statistics, elemental affinities, and equipment modifiers
must be found either by trial-and-error or pulled from other guides. Also, some
bonus values are given as both a decimal number and a + or - percent. When
plugging values into the formulas, use the decimal number.

-------------------------------------------------------------------------------
(4) The Damage Formula - Nathan Attacking
-------------------------------------------------------------------------------

4a) Start with Nathan's base STR

   Nathan's base STR is dependent only on character class and experience
   level. LV is Nathan's current experience level.

>   BaseSTR = 90 + (10 * LV)  [Vampirekiller]
>   BaseSTR = 64 + (7 * LV)   [Magician, Shooter, or Thief]
>   BaseSTR = 127 + (14 * LV) [Fighter]

4b) Add Nathan's equipment modifiers

   The items that Nathan has equipped can add or subtract a flat amount from
   his base STR. STRBodyBonus is the amount added by his body equip, and the
   two STRArmBonus values are the amounts added by each arm equip. For any
   slot that is unequipped, set that bonus to 0. The actual stat bonuses for
   each item in the game can be found in other guides.

>   ModifiedSTR = BaseSTR + STRBodyBonus + STRArmBonus1 + STRArmBonus2

4c) Factor in Nathan's DSS stat modifiers

   Some DSS cards will add either flat bonuses or percent bonuses to the
   previous value. The values for these bonuses are found in section 7.
   For any bonuses that aren't listed, or if DSS is inactive, use default
   values of 1 for STRCardTimesBonus and 0 for STRCardPlusBonus.
   Sub-weapons do not benefit from any bonuses in this step.

>   ModifiedSTR = floor(ModifiedSTR * STRCardTimesBonus) + STRCardPlusBonus
   [unless using sub-weapon]

4d) Factor in Nathan's attack-specific modifiers

   Certain attacks have a modifier to STR that is applied in this step. These
   attacks include the whip-spin, all sub-weapons, and certain DSS attacks.
   The values for these bonuses are found in section 6 for non-DSS attacks
   and section 7 for DSS attacks. If an attack has no modifier listed, use a
   default value of 1 for STRAttackBonus.

>   ModifiedSTR = floor(ModifiedSTR * STRAttackBonus)

   Some DSS attacks have a fixed STR value that is used regardless of Nathan's
   base STR or anything he has equipped. Attacks that do this will list a
   value for STRAttackDefinite in section 7 instead of STRAttackBonus.
   When this happens, nothing else before this step really matters.

>   ModifiedSTR = STRAttackDefinite [if attack has a fixed STR value]

4e) Perform damage calculation

   The meat-and-potatoes of the damage formula. Nathan's modified STR is
   compared to the enemy's DEF to figure out the damage dealt. EDEF is the
   target enemy's DEF stat. Monster statistics can be found in other guides.

>   Damage = floor((ModifiedSTR ^ 2) / (10 * EDEF))

4f) Adjust for elements

   Some DSS combos deal elemental damage. Although enemies cannot be weak to
   any element, they can be strong to one, which cuts damage in half. If an
   attack has an element, it will be the element of the attribute DSS card.
   The elemental affinities of monsters can be found in other guides.

>   Damage = floor(Damage / 2) [if enemy is strong to element]

4g) Cap damage

   After everything else is done, the damage is capped to fall between 1 and
   9999. No attack can do less than 1 damage or more than 9999 damage.

>   Damage = 1    [if damage was less than 1]
>   Damage = 9999 [if damage was greater than 9999]

After all of these steps, the final Damage total gets applied to the enemy.

-------------------------------------------------------------------------------
(5) The Damage Formula - Nathan Defending
-------------------------------------------------------------------------------

5a) Start with Nathan's base DEF

   Nathan's base DEF is dependent only on character class and experience
   level. LV is Nathan's current experience level.

>   BaseDEF = 90 + (10 * LV) [Vampirekiller]
>   BaseDEF = 45 + (5 * LV) [Magician, Shooter, or Thief]
>   BaseDEF = 180 + (20 * LV) [Fighter]

5b) Add Nathan's equipment modifiers

   The items that Nathan has equipped can add or subtract a flat amount from
   his base DEF. DEFBodyBonus is the amount added by his body equip, and the
   two DEFArmBonus values are the amounts added by each arm equip. For any
   slot that is unequipped, set that bonus to 0. The actual stat bonuses for
   each item in the game can be found in other guides.

>   ModifiedDEF = BaseDEF + DEFBodyBonus + DEFArmBonus1 + DEFArmBonus2

5c) Factor in Nathan's DSS stat modifiers

   Some DSS cards will add either flat bonuses or percent bonuses to the
   previous value. The values for these bonuses are found in section 7.
   For any bonuses that aren't listed, or if DSS is inactive, use default
   values of 1 for DEFCardTimesBonus and 0 for DEFCardPlusBonus.

>   ModifiedDEF = floor(ModifiedDEF * DEFCardTimesBonus) + DEFCardPlusBonus

5d) Perform damage calculation

   The meat-and-potatoes of the damage formula. The enemy's STR is compared
   to Nathan's modified DEF to figure out the damage dealt. ESTR is the
   attacking enemy's STR stat. Note that the enemy's STR depends on which
   attack it uses; projectiles usually cause more damage than collision with
   the enemy's body. Monster statistics can be found in other guides.

>   Damage = floor((ESTR ^ 2) / (10 * ModifiedDEF))

5e) Adjust for status effects

   If Nathan is either frozen or stoned when attacked, damage is quadrupled.

>   Damage = Damage * 4 [if Nathan is currently frozen or stoned]

5f) Cap damage

   After everything else is done, the damage is capped to fall between 1 and
   9999. No attack can do less than 1 damage or more than 9999 damage. Being a
   skeleton with the Pluto-Black Dog combo also guarantees that any hit will
   cause the maximum damage allowed by the game.

>   Damage = 1    [if damage was less than 1]
>   Damage = 9999 [if damage was greater than 9999, or Nathan is a skeleton]

5g) Adjust for elements

   The Neptune card can be paired with any attribute DSS card to allow
   absorption of elemental damage. If an enemy attacks with the same element
   as the attribute card, all damage will be dealt to MP instead of HP, and
   some HP will also be healed. Details can be found in section 7. AvailableMP
   is the amount of MP Nathan had at the time he was hit by the attack.

>   Damage = 0 [if aligned Neptune combo is active and AvailableMP >= Damage]
>   Damage = Damage - AvailableMP
   [if aligned Neptune combo is active and AvailableMP < Damage]

After all of these steps, the final Damage total gets applied to Nathan.

-------------------------------------------------------------------------------
(6) Attack-Specific Modifiers
-------------------------------------------------------------------------------

This section covers the attacks and sub-weapons that modify STR as a percentage
when they happen. The basic whip attack, slide attack, and tackle all have no
modifier (STRAttackBonus is 1). The attacks that do have a modifier are:

Whip Spin:               STRAttackBonus = 0.32 (-68%)
Dagger:                  STRAttackBonus = 0.45 (-55%)
Axe:                     STRAttackBonus = 0.89 (-11%)
Holy Water:              STRAttackBonus = 0.63 (-37%)
Cross:                   STRAttackBonus = 1.10 (+10%)

Item Crush - Empty:      STRAttackBonus = 1.00 (+0%)
Item Crush - Dagger:     STRAttackBonus = 0.32 (-68%)
Item Crush - Axe:        STRAttackBonus = 0.89 (-11%)
Item Crush - Holy Water: STRAttackBonus = 0.45 (-55%)
Item Crush - Cross:      STRAttackBonus = 1.00 (+0%)

These values may be higher for the Shooter class. Item crush attacks can only
be used if the Pluto-Salamander DSS combo is active. The empty item crush can
only be used if you can acquire both of these DSS cards and 100 hearts without
picking up a sub-weapon during the entire game.

-------------------------------------------------------------------------------
(7) DSS Modifiers
-------------------------------------------------------------------------------

The combos in this section will be broken down by action, then by attribute.
As a rough guide, adding 41% to STR will double damage, and subtracting 29%
will cut damage in half. Adding 50% to DEF will decrease damage by 33%.
Only bonuses which affect damage are listed here (namely, STR and DEF).
Attacks that list no bonuses will do the same damage as the basic whip attack.
Modifiers specific only to certain attacks or projectiles are shown in {}.

Mercury +

   Salamander

       Bonuses:     STRCardTimesBonus = 1.05 (+5%)
       Explanation: Fire-elemental whip.

   Serpent

       Bonuses:     STRCardTimesBonus = 0.71 (-29%)
       Explanation: Fast ice-elemental whip that can freeze enemies.

   Mandragora

       Bonuses:     STRCardTimesBonus = 1.10 (+10%)
       Explanation: Plant-elemental whip.

   Golem

       Bonuses:     None
       Explanation: Long earth-elemental whip.

   Cockatrice

       Bonuses:     STRCardTimesBonus = 1.10 (+10%)
       Explanation: Stone-elemental whip that can stone enemies.

   Manticore

       Bonuses:     STRCardTimesBonus = 0.89 (-11%)
                    {Poison clouds}: STRAttackBonus = 0.32 (-68%)
       Explanation: Diagonal-upwards poison-elemental whip that releases
                    poison clouds.

   Griffin

       Bonuses:     STRCardTimesBonus = 0.87 (-13%)
                    {Whip upper limit}: STRAttackBonus = 1.00 (0%)
                    {Goes down as button is held}
                    {Whip lower limit}: STRAttackBonus = 0.63 (-37%)
       Explanation: Wind-elemental whip that stabs continuously. Damage goes
                    down the longer the button is held.

   Thunderbird

       Bonuses:     {Whip upper limit}: STRAttackBonus = 1.00 (0%)
                    {Goes down as button is held}
                    {Whip lower limit}: STRAttackBonus = 0.01 (-99%)
       Explanation: Electric-elemental whip that deals continuous damage.
                    Damage goes down the longer the button is held.

   Unicorn

       Bonuses:     STRCardTimesBonus = 1.22 (+22%)
       Explanation: Holy-elemental whip that heals HP with each swing.

>                    Healing = floor(MaxHP / 100) [minimum of 1]

   Black Dog

       Bonuses:     STRCardTimesBonus = 1.41 (+41%)
       Explanation: Dark-elemental whip.

Venus +

   Salamander

       Bonuses:     STRCardTimesBonus = 1.12 (+12%)
       Explanation: Increases damage dealt by 25%.

   Serpent

       Bonuses:     DEFCardTimesBonus = 1.25 (+25%)
       Explanation: Decreases damage taken by 20%.

   Mandragora

       Bonuses:     None
       Explanation: Increases LCK by 25% (rounded down).

   Golem

       Bonuses:     DEFCardPlusBonus = floor(MapPercent * 3)
       Explanation: Increases defense based on the map explored percentage.
                    Every percent complete gives you three points of DEF.

   Cockatrice

       Bonuses:     None
       Explanation: Gain 1 experience point every second while walking.

   Manticore

       Bonuses:     None
       Explanation: Doubles the number of hearts received from heart pickups.
                    Does not work for the heart-replenishing inventory items.

   Griffin

       Bonuses:     None
       Explanation: Increases INT by 25% (rounded down).

   Thunderbird

       Bonuses:     STRCardPlusBonus = floor(MapPercent * 3)
       Explanation: Increases strength based on the map explored percentage.
                    Every percent complete gives you three points of STR.

   Unicorn

       Bonuses:     STRCardTimesBonus = 0.71 (-29%)
                    DEFCardTimesBonus = 2.00 (+100%)
       Explanation: All damage (both dealt and taken) is halved.

   Black Dog

       Bonuses:     STRCardTimesBonus = 1.41 (+41%)
                    DEFCardTimesBonus = 0.50 (-50%)
       Explanation: All damage (both dealt and taken) is doubled.

Jupiter +

   Salamander

       Bonuses:     None
       Explanation: Creates two rotating fireballs.

   Serpent

       Bonuses:     {Ice balls}: STRAttackBonus = (-55%)
       Explanation: Creates four rotating ice balls that can freeze enemies.

   Mandragora

       Bonuses:     None
       Explanation: Heals HP every second while standing still.

>                    Healing = floor(MaxHP / 100) [minimum of 1]

   Golem

       Bonuses:     None
       Explanation: Quadruples mercy invincibility time.

   Cockatrice

       Bonuses:     None
       Explanation: Turns you into a statue. You take normal damage, but
                    cannot be knocked back. Speed and jump height are reduced.

   Manticore

       Bonuses:     {Clouds}: STRAttackBonus = (-86%)
       Explanation: Creates a field of poison clouds that do
                    very little damage.

   Griffin

       Bonuses:     {Dash Energy Wave}: STRAttackBonus = (-29%)
       Explanation: Projects an energy wave in front of you when you dash.

   Thunderbird

       Bonuses:     DEFTimesBonus = 2.00 (+100%)
       Explanation: All damage is cut in half, but all attacks will cause a
                    knockback rather than a flinch.

   Unicorn

       Bonuses:     None
       Explanation: Creates a circular barrier.

   Black Dog

       Bonuses:     {Black hole}: STRAttackBonus = (+41%)
       Explanation: Creates a black hole, but poisons you as long as the
                    combo as active. You can cure poison with it by toggling
                    it on and right back off.

Mars +

   Salamander

       Bonuses:     STRCardTimesBonus = 1.10 (+10%)
       Explanation: Fire-elemental sword.

   Serpent

       Bonuses:     STRCardTimesBonus = 0.71 (-29%)
       Explanation: Ice-elemental sword that can freeze enemies.

   Mandragora

       Bonuses:     STRCardTimesBonus = 1.12 (+12%)
       Explanation: Plant-elemental sword.

   Golem

       Bonuses:     {Earthquake}: STRAttackBonus = 0.32 (-68%)
       Explanation: Earth-elemental hammer. If it hits the ground, it causes
                    an earthquake that hits all enemies on the screen.

   Cockatrice

       Bonuses:     STRCardTimesBonus = 1.22 (+22%)
       Explanation: Stone-elemental tonfers that can stone enemies.

   Manticore

       Bonuses:     STRCardTimesBonus = 0.89 (-11%)
                    {Claws}: STRAttackBonus = 0.89 (-11%)
       Explanation: Poison-elemental claws.

   Griffin

       Bonuses:     STRCardTimesBonus = 1.41 (+41%)
                    {Sword, no charge}:     STRAttackBonus = 0.32 (-68%)
                    {Sword, small charge}:  STRAttackBonus = 0.45 (-55%)
                    {Sword, medium charge}: STRAttackBonus = 0.67 (-23%)
                    {Sword, full charge}:   STRAttackBonus = 1.00 (0%)
       Explanation: Wind-elemental sword that deals damage based on
                    how long it charges.

   Thunderbird

       Bonuses:     {First two punches}: STRAttackBonus = 0.71 (-29%)
                    {Third punch}:       STRAttackBonus = 1.00 (0%)
                    {Kick}:              STRAttackBonus = 1.41 (+41%)
       Explanation: Thunder-elemental martial arts combo. It consists of
                    three punches followed by a kick.

   Unicorn

       Bonuses:     STRCardTimesBonus = 1.73 (+73%)
                    {Sword, closest to hilt}:    STRAttackBonus = 1.00 (0%)
                    {Sword, close to hilt}:      STRAttackBonus = 0.84 (-16%)
                    {Sword, middle}:             STRAttackBonus = 0.77 (-23%)
                    {Sword, far from hilt}:      STRAttackBonus = 0.71 (-29%)
                    {Sword, farthest from hilt}: STRAttackBonus = 0.63 (-37%)
       Explanation: Holy-elemental sword that does more damage the closer
                    you are to the enemy.

   Black Dog

       Bonuses:     STRCardTimesBonus = 2.00 (+100%)
       Explanation: Dark-elemental gun.

Diana +

   Salamander

       Bonuses:     {Fireball}: STRAttackDefinite = 400
       Explanation: Shoots a fireball.

   Serpent

       Bonuses:     {Ice ball}: STRAttackDefinite = 500
       Explanation: Shoots three ice balls that can freeze enemies.

   Mandragora

       Bonuses:     {Center plume}: STRAttackDefinite = 660
                    {Side plumes}:  STRAttackDefinite = 600
       Explanation: Shoots three plumes of petals.

   Golem

       Bonuses:     {Quake wave}: STRAttackBonus = 0.63 (-37%)
       Explanation: Releases an earth wave that runs along the ground.

   Cockatrice

       Bonuses:     {Rock}: STRAttackBonus = 0.71 (-29%)
       Explanation: Shoots three rocks that can stone enemies.

   Manticore

       Bonuses:     {Poison spore}: STRAttackBonus = 0.63 (-37%)
       Explanation: Shoots a poison spore diagonally upward.

   Griffin

       Bonuses:     {Wind wave}: STRAttackBonus = 1.29 (+29%)
       Explanation: Shoots a wind wave.

   Thunderbird

       Bonuses:     {Electric whip spin}: STRAttackBonus = 0.50 (-50%)
       Explanation: Does continuous electric damage when the whip is spun.

   Unicorn

       Bonuses:     {Shell}: STRAttackBonus = 0.50 (-50%)
       Explanation: Fires a holy shell that homes in on enemies.

   Black Dog

       Bonuses:     {Black balls}: STRAttackBonus = 1.41 (+41%)
       Explanation: Shoots dark balls in eight directions.

Apollo +

   Salamander

       Bonuses:     {Bomb}: STRAttackBonus = 1.41 (+41%)
       Explanation: Throws a fire bomb in an arc.

   Serpent

       Bonuses:     {Ice ball}:      STRAttackBonus = 0.71 (-29%)
                    {Ice fragments}: STRAttackBonus = 0.50 (-50%)
       Explanation: Throws an ice ball in an arc. It sends fragments in
                    eight directions when it hits a surface. All of the
                    above can freeze enemies.

   Mandragora

       Bonuses:     {Rose}:   STRAttackBonus = 0.71 (-29%)
                    {Petals}: STRAttackBonus = 0.50 (-50%)
       Explanation: Throws a rose in an arc. Petals fall off as it moves.

   Golem

       Bonuses:     None
       Explanation: Five spears rise from the ground.

   Cockatrice

       Bonuses:     {Comet}:     STRAttackBonus = 1.22 (+22%)
                    {Fragments}: STRAttackBonus = 0.50 (-50%)
       Explanation: Three comets fall from the sky. Each one breaks into
                    pieces when it hits something. All of the above
                    projectiles can stone enemies.

   Manticore

       Bonuses:     {Bomb}:   STRAttackBonus = 0.32 (-68%)
                    {Clouds}: STRAttackBonus = 0.22 (-78%)
       Explanation: A poison bomb is thrown in an arc. It explodes in mid-air,
                    throwing clouds in all directions.

   Griffin

       Bonuses:     {Wind spears}: STRAttackBonus = 0.63 (-37%)
       Explanation: Creates a tornado, which throws wind spears
                    left and right.

   Thunderbird

       Bonuses:     None
       Explanation: Throws a lightning ball in an arc.

   Unicorn

       Bonuses:     None
       Explanation: Several arrows descend from the sky.

   Black Dog

       Bonuses:     {Black hole}: STRAttackBonus = 0.71 (-29%)
       Explanation: Throws a black hole horizontally.

Neptune +

   Salamander:  Fire absorption
   Serpent:     Ice absorption
   Mandragora:  Plant absorption
   Golem:       Earth absorption
   Cockatrice:  Stone absorption
   Manticore:   Poison absorption
   Griffin:     Wind absorption
   Thunderbird: Electric absorption
   Unicorn:     Holy absorption
   Black Dog:   Dark absorption

   Explanation: Each attribute card provides protection against its element
   when paired with Neptune. When you are hit by an attack of the same
   element, you will lose no HP; instead you will lose MP equal to the damage
   you would have taken. If you do not have enough MP to absorb all of the
   damage, the rest of your MP will be used up and the remainder of the damage
   will be applied to your HP. The amount of HP healed equal to 1/8th of the
   MP you lost, rounded down. The formula is:

>   Healing = floor(MPLost / 8)

Saturn +

   Salamander

       Bonuses:     {Bat fireballs}: STRAttackBonus = 0.63 (-37%)
       Explanation: Spawns a bat that shoots fireballs as long as you
                    hold down the attack button.

   Serpent

       Bonuses:     {Ghost}: STRAttackBonus = 0.32 (-68%)
       Explanation: Spawns a ghost that runs into enemies and can freeze them.

   Mandragora

       Bonuses:     {Owl seeds}: STRAttackBonus = 0.77 (-23%)
       Explanation: Spawns an owl that shoots seeds as long as you
                    hold down the attack button.

   Golem

       Bonuses:     {Hawk}: STRAttackBonus = 0.87 (-13%)
       Explanation: Spawns a hawk that dive-bombs enemies.

   Cockatrice

       Bonuses:     {Medusa stones}: STRAttackBonus = 0.77 (-23%)
       Explanation: Spawns a medusa that shoots stones as long as you
                    hold down the attack button. These can stone enemies.

   Manticore

       Bonuses:     None
       Explanation: Spawns a ghast that runs into enemies.

   Griffin

       Bonuses:     {Sprite energy balls}: STRAttackBonus = 0.71 (-29%)
       Explanation: Spawns a wind sprite that shoots energy balls as long as
                    you hold down the attack button.

   Thunderbird

       Bonuses:     {Crow electricity}: STRAttackBonus = 1.41 (+41%)
       Explanation: Spawns a crow that generates electric fields.

   Unicorn

       Bonuses:     None
       Explanation: Spawns a cherub that shoots arrows as long as you
                    hold down the attack button.

   Black Dog

       Bonuses:     {Imp flames}: STRAttackBonus = 0.45 (-55%)
       Explanation: Spawns an imp that shoots dark flames. It can charge up
                    the longer as you hold down the attack button.

Uranus +

   Salamander

       Bonuses:     {Large fireballs}:  None
                    {Medium fireballs}: STRAttackBonus = 0.71 (-29%)
                    {Small fireballs}:  STRAttackBonus = 0.50 (-50%)
       Explanation: Summons a Salamander that rains down fireballs of
                    various sizes.

   Serpent

       Bonuses:     {Big ice balls}:   None
                    {Snowflakes}:      STRAttackBonus = 0.71 (-29%)
                    {Small ice balls}: STRAttackBonus = 0.50 (-50%)
                    {Hail clouds}:     STRAttackBonus = 0.32 (-68%)
       Explanation: Summons a Serpent that creates a whirlwind of various
                    ice particles. These can freeze enemies.

   Mandragora

       Bonuses:     {Sonic wave 1}: STRAttackBonus = 1.41 (+41%)
                    {Sonic wave 2}: STRAttackBonus = 0.87 (-13%)
       Explanation: Summons a Mandragora that generates sonic waves
                    all over the screen.

   Golem

       Bonuses:     {Big rocks}:   STRAttackBonus = 1.12 (+12%)
                    {Small rocks}: STRAttackBonus = 0.87 (-13%)
                    {Crumbs}:      STRAttackBonus = 0.32 (-68%)
       Explanation: Summons a Golem that sends up rocks of various sizes.

   Cockatrice

       Bonuses:     {Big stones}:   STRAttackBonus = 1.10 (+10%)
                    {Small stones}: STRAttackBonus = 0.89 (-11%)
                    {Crumbs}:       STRAttackBonus = 0.63 (-37%)
       Explanation: Summons a cockatrice that horizontally rains stones of
                    various sizes. These can stone enemies.

   Manticore

       Bonuses:     {Poison rain}: STRAttackBonus = 0.71 (-29%)
       Explanation: Summons a Manticore that rains poison.

   Griffin

       Bonuses:     {Wind sickles}: STRAttackBonus = 0.84 (-16%)
       Explanation: Summons a Griffin that attacks with wind sickles.

   Thunderbird

       Bonuses:     {Lightning type 1}: STRAttackBonus = 1.32 (+32%)
                    {Lightning type 2}: STRAttackBonus = 1.12 (+12%)
       Explanation: Summons a Thunderbird that rains lightning bolts.
                    Some bolts do more damage than others, but they are
                    visually indistinguishable.

   Unicorn

       Bonuses:     None
       Explanation: Summons a Unicorn. Does not damage enemies, but heals
                    HP at a rate of about 4 times per second.

>                    Healing = floor(MaxHP / 100) [minimum of 1]

   Black Dog

       Bonuses:     {Black lightning}: STRAttackBonus = 0.22 (-78%)
       Explanation: Summons a Black Dog. Each hit heals some HP.

>                    Healing = floor(MaxHP / 100) [minimum of 1]

Pluto +

   Salamander

       Bonuses:     None
       Explanation: Allows an item crush attack, which is a special attack
                    available for each sub-weapon. See section 6 for each
                    sub-weapon's modifier. The watch crush will stop enemies
                    that are only slowed by the regular watch, and will slow
                    enemies that are not affected at all by the regular watch.

   Serpent

       Bonuses:     None
       Explanation: Lets you throw two sub-weapons at once. Does not double
                    heart consumption.

   Mandragora

       Bonuses:     None
       Explanation: Increases experience by 20%, rounded down. Actual
                    experience gained is calculated as floor(EXP * 1.2).

   Golem

       Bonuses:     None
       Explanation: Creates a shadow double that follows ahead of you.
                    Its whip and sub-weapons do the same damage as yours,
                    and it cannot be damaged.

   Cockatrice

       Bonuses:     DEFCardPlusBonus = floor(HoursPlayed * 10)
       Explanation  Increases defense based on the game timer. HoursPlayed is
                    a decimal number of hours; every 6 minutes of play time
                    gives you one point of DEF.

   Manticore

       Bonuses:     None
       Explanation: Sub-weapons use MP instead of hearts. MP use is equal to
                    five times the number of hearts that the sub-weapon
                    normally uses.

   Griffin

       Bonuses:     None
       Explanation: Increases horizontal movement speed, but only while on the
                    ground. Movement speed in the air is normal.

   Thunderbird

       Bonuses:     STRCardPlusBonus = floor(HoursPlayed * 10)
       Explanation: Increases strength based on the game timer. HoursPlayed is
                    a decimal number of hours; every 6 minutes of play time
                    gives you one point of STR.

   Unicorn

       Bonuses:     None
       Explanation: Essentially makes you into a ghost. As long as this combo
                    is active, enemies cannot interact with you, and you
                    cannot interact with them.

   Black Dog

       Bonuses:     {Small bone}: STRAttackBonus = 0.45 (-55%)
                    {Big bone}:   STRAttackDefinite = 3000
       Explanation: This is one of the more interesting combos; you turn into
                    a skeleton who can do nothing but throw bones. You cannot
                    use sub-weapons or special moves, your jump height is
                    reduced, and your defense is non-existent; any attack at
                    all will utterly disintegrate you with 9999 damage.
                    However, though most of your attacks will be small bones
                    that deal pathetic damage, you will randomly throw large
                    ones with a fixed strength of 3000, which is the highest
                    possible STR in the game without cheating.

-------------------------------------------------------------------------------
(8) Examples
-------------------------------------------------------------------------------

These examples will show the damage formulas in action, step-by-step. You may
follow the formulas by using the given lettered lists.

(See section 4 for attack formulas and section 5 for defense formulas).

Attack Example 1:

   A freshly started LV 1 Vampirekiller attacks the very first enemy,
   a Skeleton Bomber, with his whip. He has no cards or equipment yet,
   and the Skeleton Bomber has a DEF of 40.

   a) BaseSTR = 90 + (10 * 1) = 100
   b) ModifiedSTR = 100 + 0 + 0 + 0 = 100
   c) ModifiedSTR = floor(100 * 1) + 0 = 100
   d) ModifiedSTR = floor(100 * 1) = 100
   e) Damage = floor((100 ^ 2) / (10 * 40)) = 25
   There is no elemental damage, so f is skipped
   Damage is not outside the cap, so g is skipped
   Final damage is 25.

Attack Example 2:

   A LV 33 Magician is equipped with the Night Suit (+20 STR) and two
   Strength Rings (+50 STR each). He activates the Mars-Thunderbird punch
   combo, and hits an Electric Skeleton with the first punch only.
   Electric Skeletons have a DEF of 50 and are strong to lightning.

   a) BaseSTR = 64 + (7 * 33) = 295
   b) ModifiedSTR = 295 + 20 + 50 + 50 = 415
   c) ModifiedSTR = floor(415 * 1) + 0 = 415
   d) ModifiedSTR = floor(415 * 0.71) = 294
   e) Damage = floor((294 ^ 2) / (10 * 50)) = 172
   f) Damage = floor(172 / 2) = 86
   Damage is not outside the cap, so g is skipped
   Final damage is 86.

Attack Example 3:

   A LV 40 Thief is equipped with the Silk Robe (+0 STR), one Cursed Ring
   (+30 STR), and one Hard Ring (-10 STR). He activates the Venus-Black Dog
   combo and throws a cross at an Ice Shade, who has a DEF of 560.

   a) BaseSTR = 64 + (7 * 40) = 344
   b) ModifiedSTR = 344 + 0 + 30 - 10 = 364
   Nathan is using a sub-weapon, so c is skipped
   d) ModifiedSTR = floor(364 * 1.10) = 400
   e) Damage = floor((400 ^ 2) / (10 * 560)) = 28
   There is no elemental damage, so f is skipped
   Damage is not outside the cap, so g is skipped
   Final damage is 28.

Attack Example 4:

   A LV 60 Vampirekiller is equipped with the Soldier Fatigues (+50 STR) and
   two Strength Armbands (+100 STR each). He activates the Mars-Unicorn combo
   and hits a Bat close to the hilt of the sword. The Bat has a DEF of 15.

   a) BaseSTR = 90 + (10 * 60) = 690
   b) ModifiedSTR = 690 + 50 + 100 + 100 = 940
   c) ModifiedSTR = floor(940 * 1.73) + 0 = 1626
   d) ModifiedSTR = floor(1626 * 0.84) = 1365
   e) Damage = floor((1365 ^ 2) / (10 * 15)) = 12421
   Bat is not strong to holy element, so f is skipped
   g) Damage = 9999 <lowered by cap>
   Final damage is 9999.

Defense Example 1:

   A freshly started LV 1 Vampirekiller is bombed by the very first
   enemy, a Skeleton Bomber. Nathan has no cards or equipment yet,
   and the Skeleton Bomber's bomb has a STR of 75.

   a) BaseDEF = 90 + (10 * 1) = 100
   b) ModifiedDEF = 100 + 0 + 0 + 0 = 100
   c) ModifiedDEF = floor(100 * 1) + 0 = 100
   d) Damage = floor((75 ^ 2) / (10 * 100)) = 5
   Nathan has no status effect, so e is skipped
   Damage is not outside the cap, so f is skipped
   Nathan is not using Neptune, so g is skipped
   Final damage is 5.

Defense Example 2:

   A LV 25 Fighter is equipped with the Steel Armor (+120 DEF) and
   nothing else. He has been frozen by an Ice Armor, and another
   icicle hits him before he can break free. He cannot use DSS,
   and the Ice Armor's icicle has a STR of 500.

   a) BaseDEF = 127 + (14 * 25) = 474
   b) ModifiedDEF = 474 + 120 + 0 + 0 = 594
   c) ModifiedDEF = floor(594 * 1) + 0 = 594
   d) Damage = floor((500 ^ 2) / (10 * 594)) = 42
   e) Damage = 42 * 4 = 168
   Damage is not outside the cap, so f is skipped
   Nathan is not using Neptune, so g is skipped
   Final damage is 168.

Defense Example 3:

   A LV 40 Shooter is equipped with the Platinum Armor (+150 DEF) and both
   Double Grips (+75 DEF together). He has the Venus-Golem combo active while
   fighting Dracula's second form, and is hit by a laser. Nathan has 95.0% of
   the map explored, and Dracula's laser attack has a STR of 1500.

   a) BaseDEF = 64 + (7 * 40) = 344
   b) ModifiedDEF = 344 + 150 + 75 = 569
   c) ModifiedDEF = floor(569 * 1) + floor(95.0 * 3) = 854
   d) Damage = floor((1500 ^ 2) / (10 * 854)) = 263
   Nathan has no status effect, so e is skipped
   Damage is not outside the cap, so f is skipped
   Nathan is not using Neptune, so g is skipped
   Final damage is 263.

Defense Example 4:

   A LV 60 Vampirekiller is equipped with the Dark Armor (+550 DEF) and two
   Defense Armbands (+100 DEF each). He has the Neptune-Black Dog combo active
   when he is hit by a spear from a Skeleton Spear. Nathan has full MP, and
   the Skeleton Spear is dark-elemental with a spear that has a STR of 100.

   a) BaseDEF = 90 + (10 * 60) = 690
   b) ModifiedDEF = 690 + 550 + 100 + 100 = 1440
   c) ModifiedDEF = floor(1440 * 1) + 0 = 1440
   d) Damage = floor((100 ^ 2) / (10 * 1440)) = 0
   Nathan has no status effect, so e is skipped
   f) Damage = 1 <raised by cap>
   g) Damage = 0 <negated by Neptune>
   Final damage is 0. Nathan loses 1 MP, and heals nothing.

-------------------------------------------------------------------------------
(9) Status Effect Mechanics
-------------------------------------------------------------------------------

The four status effects in this game are Poison, Curse, Stone, and Freeze.
Only one of these status effects can be active at once; getting a second one
will override the first one. For instance, getting stoned while already cursed
will remove the curse and only leave you stoned.

Poison Mechanics:

   When Nathan is poisoned, he begins taking poison damage about 2 seconds
   after the attack that caused it. Poison damage occurs once per second,
   and lasts for 18 "hits" if not cured. Each of these "hits" does damage
   approximately equal to 1% of Nathan's maximum HP. You can therefore expect
   to lose about 18% of your maximum HP each time you are poisoned. More
   accurately, the game keeps two counters, both of which start at 0 when
   Nathan is initially poisoned. These will be called "LifeCounter" and
   "PoisonCounter". Since damage is limited to integer values, these two
   counters work together to ensure that Nathan takes an average of 1% damage
   each time. Sometimes it will be more, sometimes it will be less, but this
   formula makes it average out:

>   LifeCounter = LifeCounter + MaxHP
>   Damage = floor(LifeCounter / 100) - PoisonCounter
>   PoisonCounter = PoisonCounter + Damage

   If Nathan is poisoned again while already poisoned, the 18 hits will be
   reset, but these two counters won't be. Also, a low-level advanced class
   can have less than 100 maximum HP, in which case the damage can be 0. If
   it is 0, no number will appear at all. An illustration follows: suppose we
   have a LV 10 Vampirekiller with four HP max upgrades. His maximum HP is
   230, and he gets poisoned. The damage he takes with each second is:

   1)  0    + 230 = 230  ->  floor(230/100)  - 0  = 2 damage ->  0  + 2 = 2
   2)  230  + 230 = 460  ->  floor(460/100)  - 2  = 2 damage ->  2  + 2 = 4
   3)  460  + 230 = 690  ->  floor(690/100)  - 4  = 2 damage ->  4  + 2 = 6
   4)  690  + 230 = 920  ->  floor(920/100)  - 6  = 3 damage ->  6  + 3 = 9
   5)  920  + 230 = 1150 ->  floor(1150/100) - 9  = 2 damage ->  9  + 2 = 11
   6)  1150 + 230 = 1380 ->  floor(1380/100) - 11 = 2 damage ->  11 + 2 = 13
   Assume Nathan gets poisoned again right here; counters don't reset.
   1)  1380 + 230 = 1610 ->  floor(1610/100) - 13 = 3 damage ->  13 + 3 = 16
   2)  1610 + 230 = 1840 ->  floor(1840/100) - 16 = 2 damage ->  16 + 2 = 18
   3)  1840 + 230 = 2070 ->  floor(2070/100) - 18 = 2 damage ->  18 + 2 = 20
   4)  2070 + 230 = 2300 ->  floor(2300/100) - 20 = 3 damage ->  20 + 3 = 23
   5)  2300 + 230 = 2530 ->  floor(2530/100) - 23 = 2 damage ->  23 + 2 = 25
   6)  2530 + 230 = 2760 ->  floor(2760/100) - 25 = 2 damage ->  25 + 2 = 27
   7)  2760 + 230 = 2990 ->  floor(2990/100) - 27 = 2 damage ->  27 + 2 = 29
   8)  2990 + 230 = 3220 ->  floor(3220/100) - 29 = 3 damage ->  29 + 3 = 32
   9)  3220 + 230 = 3450 ->  floor(3450/100) - 32 = 2 damage ->  32 + 2 = 34
   10) 3450 + 230 = 3680 ->  floor(3680/100) - 34 = 2 damage ->  34 + 2 = 36
   11) 3680 + 230 = 3910 ->  floor(3910/100) - 36 = 3 damage ->  36 + 3 = 39
   12) 3910 + 230 = 4140 ->  floor(4140/100) - 39 = 2 damage ->  39 + 2 = 41
   13) 4140 + 230 = 4370 ->  floor(4370/100) - 41 = 2 damage ->  41 + 2 = 43
   14) 4370 + 230 = 4600 ->  floor(4600/100) - 43 = 3 damage ->  43 + 3 = 46
   15) 4600 + 230 = 4830 ->  floor(4830/100) - 46 = 2 damage ->  46 + 2 = 48
   16) 4830 + 230 = 5060 ->  floor(5060/100) - 48 = 2 damage ->  48 + 2 = 50
   17) 5060 + 230 = 5290 ->  floor(5290/100) - 50 = 2 damage ->  50 + 2 = 52
   18) 5290 + 230 = 5520 ->  floor(5520/100) - 52 = 3 damage ->  52 + 3 = 55
   The poison is now gone.

   The Neptune-Manticore combo will prevent poisoning, but only if all damage
   from the relevant attack is blocked.

   Enemies cannot be poisoned. If the Jupiter-Black Dog combo is equipped,
   you will be poisoned for as long as the combo is active and cured when
   the combo is ended. This can be used to cure poison that an enemy gave
   you. Finally, uncleansed water uses the same general poison formula to
   deal damage, but it happens several times per second and does not stop
   until you exit the water.

Curse Mechanics:

   A curse lasts for 20 seconds after the instant you are hit by a curse
   attack, or until you are cured. Being hit with a curse again while you're
   already cursed will simply reset this timer. The curse status prevents all
   use of the attack button, including normal attacks, sub-weapons, and active
   DSS attacks (i.e. ones that you must hit B to use). DSS effects and passive
   DSS attacks (such as rotating fireballs) will still work, as will equipping
   and using items from the menu.

   The Neptune-Black Dog combo will prevent cursing, but only if all damage
   from the relevant attack is blocked.

   Enemies cannot be cursed.

Stone Mechanics:

   The status effect from a stoning attack has no time limit; rather, you
   become closer to freedom each time you push a direction on the D-pad.
   You are free once you have pushed on the D-pad 27 times, but you cannot
   do anything else while stoned except equip and use items in the menu.
   You are also freed if you are hit, but the attack that hit you will
   cause four times its normal damage. Rotating the D-pad seems to be the
   fastest to way to free yourself.

   The Neptune-Cockatrice combo will prevent stoning, but only if all damage
   from the relevant attack is blocked.

   Some stone-elemental DSS combos can stone enemies when they would otherwise
   be killed. If an enemy is stoned, its HP is set to 1 and it will stay
   stoned for 5 seconds before reviving. Stoned enemies can be used as
   platforms. Stone-elemental enemies cannot be stoned.

Freeze Mechanics:

   The status effect from a freezing attack lasts 3 seconds after the instant
   you hit the ground. You cannot do anything except equip and use items in
   the menu until you thaw. Being attacked will also free you, but that attack
   will cause four times its normal damage.

   The Neptune-Serpent combo will prevent freezing, but only if all damage
   from the relevant attack is blocked.

   Some ice-elemental DSS combos can freeze enemies when they would otherwise
   be killed. If an enemy is frozen, its HP is set to 1 and it will stay
   frozen for 5 seconds before reviving. Frozen enemies can be used as
   platforms. Ice-elemental enemies cannot be frozen.

Web Mechanics:

   This is not a true status effect (it will not appear as a status on the
   menu screen), but the Arachne can encase you in webbing. Movement speed
   and jump height is reduced while webbed. It cannot be cured, nor does
   damage free you from it, but it will wear off after 5 seconds. Getting
   hit by a web again while already webbed will pile a new web on top of you;
   this doesn't reduce your speed further, but it does reset the timer.

-------------------------------------------------------------------------------
(10) Other Game Mechanics
-------------------------------------------------------------------------------

Intelligence and Magic Regeneration:

   Your INT stat (after modification by equipment and DSS) is the only factor
   which determines how fast your magic regenerates. On average, every 100
   points of INT you have will cause you to regenerate 1 MP per second. This
   happens at a continuous rate. Using constant-effect DSS combos will also
   drain MP at a continuous rate, so it is possible for some combos to be
   essentially "free" if your INT is high enough. For instance, an active
   Venus-Salamander combo costs 4 MP per second, but if your INT is at least
   400, your natural regeneration will take care of this cost and you won't
   see your MP go down.

   DSS attack combos cannot be activated if you do not have enough MP to use
   them, and they will immediately deactivate if you don't have enough left
   to use them again. For instance, if you use the Thunderbird summon and only
   have 150 MP left afterwards, your DSS will immediately deactivate since you
   need 200 MP to use it again, even if you would have regenerated enough MP
   by the time the summon was over.

   While in the Battle Arena, your MP is drained very quickly. A full bar of
   magic will be completely emptied in roughly 1.5 seconds, regardless of your
   maximum MP. However, since this is not instantaneous, it is possible to use
   MP recovery items, then quickly activate DSS and use a magic attack
   (usually a summon) before your MP is emptied again.

Knockback and Mercy Invincibility:

   When you take damage, you will either flinch or be knocked back. In either
   case, you have one second after the instant you can move again until you
   become vulnerable to damage. In general, the choice whether to cause a
   flinch or a knockback seems to depend on the type of attack. Also, an
   attack that would ordinarily knock you back may cause you to flinch instead
   if the game can't decide which direction you should be thrown (say, if your
   invincibility wears off while you're directly in the middle of an enemy).

   Certain Jupiter DSS combos affect knockback and invincibility. With
   Cockatrice, all attacks becomes flinches, and with Thunderbird, all
   attacks become knockbacks. With Golem, the invincibility time is
   extended from 1 second to 4 seconds. This duration will outlast freezing,
   and can also outlast stoning if you are fast enough on the D-pad. There
   appears to be a bug that makes the invincibility last much longer than
   usual (on the order of about 15 seconds) if you manage to break free
   from either status effect while still invincible.

   Enemies do not suffer from any sort of pain-induced movement, but they
   do have a limit as to how quickly they can register hits. Single-action
   attacks such as whipping only cause damage once, but most continuous
   attacks (such as the whip spin) will damage enemies at a rate of roughly
   3.5 times per second. Some DSS attacks (such as Uranus-Thunderbird) can
   only register hits half this fast, and others (Jupiter-Manticore) can do
   it twice this fast.

Game Timer:

   The game keeps a running timer of how long you've played, which is used in
   certain DSS combos and for general achievement purposes. It starts running
   as soon as the cutscene with Camilla and Dracula begins, and only stops
   during certain occasions. Upon saving, the timer is recorded at the instant
   the screen goes completely white. This information is probably of most
   interest to those doing game-timed (not real-timed) speedruns.

   The timer runs during:

       Normal gameplay
       Dialogue cutscenes
       DSS activation
       Choice to save (Yes/No)
       Saving process

   The timer does NOT run during:

       Menu screen
       Map screen
       Teleportation process
       Battle Arena entrance message
       Opening message (It is 1830...)

-------------------------------------------------------------------------------
(11) Legal Info
-------------------------------------------------------------------------------

Do whatever you want with this information as long as proper credit is given.
That's pretty much it. It should also be noted that all information in this
guide was reverse-engineered simply by playing the game. Anyone who has
access to the ROM and knowledge of GBA assembly can probably figure out the
exact computations used by the processor, but this guide should still be fairly
accurate. The order of any additions or multiplications that don't overflow the
registers shouldn't matter anyway, nor should any divisions that don't involve
loss of precision due to truncation from bit shifting.