Effect 06 - Status Routine
$03/D515 AD A3 28 LDA $28A3 [$7E:28A3] A:0003 X:000C Y:0000 P:envMxdizc - Load Status to Inflict from 7E28A3.
$03/D518 10 0A BPL $0A [$D524] A:0004 X:000C Y:0000 P:envMxdizc - Branch if Plus to 03D524. (Death and Curse would be the branch point here)
-----------------------------------------------------------------------------------------------------------------------------------------------
$03/D51A AD 40 27 LDA $2740 [$7E:2740] A:0080 X:000C Y:0000 P:eNvMxdizc - Check Target's Creature Type.
$03/D51D 29 8A AND #$8A A:0000 X:000C Y:0000 P:envMxdiZc - Is it Machine, Spirit, or Undead?
$03/D51F F0 03 BEQ $03 [$D524] A:0000 X:000C Y:0000 P:envMxdiZc - If not, branch to 03D524.
----------------------------------------------------------------------------------------------------------------------------------------------------
$03/D521 4C B2 D5 JMP $D5B2 [$03:D5B2] A:0008 X:000C Y:0000 P:envMxdizc - Jump to 03D5B2 (which leads to a Return)
----------------------------------------------------------------------------------------------------------------------------------------------
$03/D524 AD 03 27 LDA $2703 [$7E:2703] A:0004 X:000C Y:0000 P:envMxdizc - Load Target's Status Byte 1 into A.
$03/D527 85 AC STA $AC [$00:00AC] A:0000 X:000C Y:0000 P:envMxdiZc - Store Current Status1 in AC.
$03/D529 85 A9 STA $A9 [$00:00A9] A:0000 X:000C Y:0000 P:envMxdiZc - Store Current Status1 in A9.
$03/D52B AD 04 27 LDA $2704 [$7E:2704] A:0000 X:000C Y:0000 P:envMxdiZc - Load Target's Status Byte 2 into A.
$03/D52E 85 AA STA $AA [$00:00AA] A:0000 X:000C Y:0000 P:envMxdiZc - Store Current Status2 in AA.
$03/D530 29 BF AND #$BF A:0000 X:000C Y:0000 P:envMxdiZc - (-48 meaning it will get rid of ?Charm and Float? Maybe for other purposes, as that doesn't actually happen to the target)
$03/D532 85 AB STA $AB [$00:00AB] A:0000 X:000C Y:0000 P:envMxdiZc - Store Current Status2 in AB.
$03/D534 AD A3 28 LDA $28A3 [$7E:28A3] A:0000 X:000C Y:0000 P:envMxdiZc - Load Status to inflict from 7E28A3.
$03/D537 85 AE STA $AE [$00:00AE] A:0004 X:000C Y:0000 P:envMxdizc - Store it in AE.
$03/D539 AD A4 28 LDA $28A4 [$7E:28A4] A:0004 X:000C Y:0000 P:envMxdizc - Load Second Status to Inflict from 7E28A4.
$03/D53C 85 AD STA $AD [$00:00AD] A:0000 X:000C Y:0000 P:envMxdiZc - Store it in AD.
$03/D53E C2 20 REP #$20 A:0000 X:000C Y:0000 P:envMxdiZc - Reset Processor.
$03/D540 A5 AB LDA $AB [$00:00AB] A:0000 X:000C Y:0000 P:envmxdiZc - Load Current Status2 from AB.
$03/D542 C5 AD CMP $AD [$00:00AD] A:0000 X:000C Y:0000 P:envmxdiZc - Compare it to Second Status to inflict from AD.
$03/D544 90 06 BCC $06 [$D54C] A:0000 X:000C Y:0000 P:eNvmxdizc - If equal, branch to 03D54C.
---------------------------------------------------------------------------------------------------------------------------------
(Appears to be the Miss or Resist Routine?)
$03/D546 7B TDC A:0400 X:000C Y:0000 P:envmxdizC -Transfer Direct Page to A?
$03/D547 E2 20 SEP #$20 A:0000 X:000C Y:0000 P:envmxdiZC - Set Processor Status.
$03/D549 4C B2 D5 JMP $D5B2 [$03:D5B2] A:0000 X:000C Y:0000 P:envMxdiZC - Jump to 03D5B2.
-----------------------------------------------------------------------------------------------------------------------------------
$03/D54C 7B TDC A:0000 X:000C Y:0000 P:eNvmxdizc - Transfer Direct Page to A?
$03/D54D E2 20 SEP #$20 A:0000 X:000C Y:0000 P:envmxdiZc - Set Processor Status.
$03/D54F AD 2B 27 LDA $272B [$7E:272B] A:0000 X:000C Y:0000 P:envMxdiZc - Load Target's Status Immunity1 into A.
$03/D552 2D A3 28 AND $28A3 [$7E:28A3] A:00B9 X:000C Y:0000 P:eNvMxdizc - Check it against Status to Inflict1.
$03/D555 D0 06 BNE $06 [$D55D] A:0000 X:000C Y:0000 P:envMxdiZc - If bits aligned branch to 03D55D.
$03/D557 AD 2C 27 LDA $272C [$7E:272C] A:0000 X:000C Y:0000 P:envMxdiZc - Load Target's Status Immunity2 into A.
$03/D55A 2D A4 28 AND $28A4 [$7E:28A4] A:0030 X:000C Y:0000 P:envMxdizc - Check it against Status to Inflict2.
$03/D55D D0 53 BNE $53 [$D5B2] A:0000 X:000C Y:0000 P:envMxdiZc - If bits aligned branch to 03D5B2.
$03/D55F AD 03 27 LDA $2703 [$7E:2703] A:0000 X:000C Y:0000 P:envMxdiZc - Load Target's Status Byte 1 into A.
$03/D562 05 AE ORA $AE [$00:00AE] A:0000 X:000C Y:0000 P:envMxdiZc - Somehow adds the Stored Status to inflict from AE.
$03/D564 8D 03 27 STA $2703 [$7E:2703] A:0004 X:000C Y:0000 P:envMxdizc - Store A in Target's Status Byte 1.
$03/D567 AD 04 27 LDA $2704 [$7E:2704] A:0004 X:000C Y:0000 P:envMxdizc - Load Target's Status Byte 2 into A.
$03/D56A 05 AD ORA $AD [$00:00AD] A:0000 X:000C Y:0000 P:envMxdiZc - Somehow adds the Stored Status2 to inflict from AD.
$03/D56C 8D 04 27 STA $2704 [$7E:2704] A:0000 X:000C Y:0000 P:envMxdiZc - Store A in Target's Status Byte 2.
$03/D56F AD A4 28 LDA $28A4 [$7E:28A4] A:0000 X:000C Y:0000 P:envMxdiZc - Load A from Status to Inflict2.
$03/D572 29 28 AND #$28 A:0000 X:000C Y:0000 P:envMxdiZc - Is it Charm or Paralyze
$03/D574 F0 3A BEQ $3A [$D5B0] A:0000 X:000C Y:0000 P:envMxdiZc - Branch if not to 03D5B0.
--------------------------------------------------------------------------------------------------------------------------------------------
$03/D576 AD 04 27 LDA $2704 [$7E:2704] A:0008 X:000C Y:0000 P:envMxdizc - Load A from Target's Status Byte 2.
$03/D579 29 FB AND #$FB A:000C X:000C Y:0000 P:envMxdizc - ?? (-4 somehow?) Replaces Berserk with Charm.
$03/D57B 8D 04 27 STA $2704 [$7E:2704] A:0008 X:000C Y:0000 P:envMxdizc - Store A in Target's Status Byte 2.
$03/D57E A5 CF LDA $CF [$00:00CF] A:0008 X:000C Y:0000 P:envMxdizc - Load CF into A.
$03/D580 85 DF STA $DF [$00:00DF] A:0008 X:000C Y:0000 P:envMxdizc - Store A in DF.
$03/D582 A9 15 LDA #$15 A:0008 X:000C Y:0000 P:envMxdizc - Load 15 into A.
$03/D584 85 E1 STA $E1 [$00:00E1] A:0015 X:000C Y:0000 P:envMxdizc - Store A in E1.
$03/D586 20 E0 83 JSR $83E0 [$03:83E0] A:0015 X:000C Y:0000 P:envMxdizc - Jump to Subroutine.
$03/D589 A6 E3 LDX $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZc - Load the value in E3 into X.
$03/D58B 8E 30 35 STX $3530 [$7E:3530] A:0000 X:00A8 Y:0000 P:envMxdizc - Store X in 7E3530.
$03/D58E A9 03 LDA #$03 A:0000 X:00A8 Y:0000 P:envMxdizc - Load 03 into A.
$03/D590 20 69 85 JSR $8569 [$03:8569] A:0003 X:00A8 Y:0000 P:envMxdizc - Jump to Subroutine.
$03/D596 AD 04 27 LDA $2704 [$7E:2704] A:0000 X:00AB Y:0000 P:envMxdizc - Target's Status Byte 2.
$03/D599 29 20 AND #$20 A:0008 X:00AB Y:0000 P:envMxdizc - Is it Paralyze?
$03/D59B F0 13 BEQ $13 [$D5B0] A:0000 X:00AB Y:0000 P:envMxdiZc - If not branch to 03D5B0
-----------------------------------------------------------------------------------------------------------------------
$03/D59D AD 04 27 LDA $2704 [$7E:2704] A:0020 X:00AB Y:FFFF P:envMxdizc - Load Target's Status Byte 2.
$03/D5A0 29 F7 AND #$F7 A:0020 X:00AB Y:FFFF P:envMxdizc - Get rid of Charm, if affecting Target.
$03/D5A2 8D 04 27 STA $2704 [$7E:2704] A:0020 X:00AB Y:FFFF P:envMxdizc - Store Paralyze in Status Byte 2.
$03/D5A5 A9 01 LDA #$01 A:0020 X:00AB Y:FFFF P:envMxdizc - Load 01 into A.
$03/D5A7 9D 04 2A STA $2A04,x[$7E:2AAF] A:0001 X:00AB Y:FFFF P:envMxdizc - Store in 7E2A04
$03/D5AA 9E 05 2A STZ $2A05,x[$7E:2AB0] A:0001 X:00AB Y:FFFF P:envMxdizc - Store Zero in 7E2A05.
$03/D5AD 9E 06 2A STZ $2A06,x[$7E:2AB1] A:0001 X:00AB Y:FFFF P:envMxdizc - Store Zero in 7E2A06
-----------------------------------------------------------------------------------------------------------------------
$03/D5B0 80 03 BRA $03 [$D5B5] A:0000 X:00AB Y:0000 P:envMxdiZc - Always Branch to 03D5B5.
--------------------------------------------------------------------------------------------------------------------------------------------
$03/D5B2 20 2D E0 JSR $E02D [$03:E02D] A:0000 X:000C Y:0000 P:envMxdiZC - Jump to Subroutine
------------------------------------------------------------------------------------------------------------------------------------------
$03/D5B5 60 RTS A:0000 X:000C Y:0000 P:envMxdiZc - Return.
Now this is strange. As far as I can see and from my own tests there is nothing that prevents this from working on any specific monster type. Mute, Charm, Berserk, Float works perfectly fine on Zombie-type, Machine-type, and Spirits. They all use the formula that says it shouldn't work on them. The only thing I can think of is that Yousei may have looked at the start of the data, not paying attention that this only occurs if the status to inflict is Death or Curse.
So this...
06 status: various, does not affect spirits, undead, or machines
Is debunked. It works on anything that doesn't resist it.
However the purpose of the separate routine for statuses with timers make sense as this formula does not appear to have any safety drop for them. Even its special coding for Paralyze doesn't work (do I foresee some Free Code in our future?) the enemy will never properly recover from Paralyze when used from this routine. That is a freed up 19 bytes for us to use if we ever wanted to add something else special to the Status Routine. Even the Creature Type check at the start is rather redundant as you can set it easily enough in the monster's individual status, freeing up even more bytes.