improved SF2 series codes

This forum is for posting M.A.M.E. arcade cheats. Requests will be fulfilled here....but please keep the requests to the requests forum.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

improved SF2 series codes

Post by d9x »

The infinite energy codes for the SF2 games do what they say, but they also make the player pretty much unhittable. This makes them useless for practical training. If you apply some conditionals they behave as intended:

[sf2]

Code: Select all

  <cheat desc="Infinite Energy PL1">
    <script state="run">
      <action condition="maincpu.rw@FF83F0 lt 60 and (maincpu.rb@FF83C9 band 10) == 00 and maincpu.rb@FF89E0 == 0">
        maincpu.pw@FF83F0=90, maincpu.pw@FF8582=90
      </action>
    </script>
  </cheat>

  <cheat desc="Infinite Energy PL2">
    <script state="run">
      <action condition="maincpu.rw@FF86F0 lt 60 and (maincpu.rb@FF86C9 band 10) == 00 and maincpu.rb@FF89E0 == 0">
        maincpu.pw@FF86F0=90, maincpu.pw@FF8882=90
      </action>
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="Infinite Energy PL1">
    <script state="run">
      <action condition="maincpu.rw@FF83E8 lt 60 and (maincpu.rb@FF83C1 band 10) == 00 and maincpu.rb@FF89D4 == 0">
        maincpu.pw@FF83E8=90, maincpu.pw@FF857A=90
      </action>
    </script>
  </cheat>

  <cheat desc="Infinite Energy PL2">
    <script state="run">
      <action condition="maincpu.rw@FF86E8 lt 60 and (maincpu.rb@FF86C1 band 10) == 00 and maincpu.rb@FF89D4 == 0">
        maincpu.pw@FF86E8=90, maincpu.pw@FF887A=90
      </action>
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Infinite Energy PL1">
    <script state="run">
      <action condition="maincpu.rw@FF83F8 lt 60 and (maincpu.rb@FF83D1 band 10) == 00 and maincpu.rb@FF8BE4 == 0">
        maincpu.pw@FF83F8=90, maincpu.pw@FF858A=90
      </action>
    </script>
  </cheat>

  <cheat desc="Infinite Energy PL2">
    <script state="run">
      <action condition="maincpu.rw@FF87F8 lt 60 and (maincpu.rb@FF87D1 band 10) == 00 and maincpu.rb@FF8BE4 == 0">
        maincpu.pw@FF87F8=90, maincpu.pw@FF898A=90
      </action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Infinite Energy PL1">
    <script state="run">
      <action condition="maincpu.rw@FF8478 lt 60 and (maincpu.rb@FF8451 band 10) == 00">
        maincpu.pw@FF8478=90, maincpu.pw@FF860A=90
      </action>
    </script>
  </cheat>

  <cheat desc="Infinite Energy PL2">
    <script state="run">
      <action condition="maincpu.rw@FF8878 lt 60 and (maincpu.rb@FF8851 band 10) == 00">
        maincpu.pw@FF8878=90, maincpu.pw@FF8A0A=90
      </action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Infinite Energy PL1">
    <script state="run">
      <action condition="maincpu.rw@FF8366 lt 60 and (maincpu.rb@FF833F band 10) == 00">
        maincpu.pw@FF8366=90, maincpu.pw@FF84F8=90
      </action>
    </script>
  </cheat>

  <cheat desc="Infinite Energy PL2">
    <script state="run">
      <action condition="maincpu.rw@FF8766 lt 60 and (maincpu.rb@FF873F band 10) == 00">
        maincpu.pw@FF8766=90, maincpu.pw@FF88F8=90
      </action>
    </script>
  </cheat>
(ssf2t and hsf2 have no bonus stages so they don't need the bonus stage check.)
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Codes to control getting stunned/dizzied.

[sf2]

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF8422=param</action> <!--timeout-->
      <action>maincpu.pw@FF8424=param</action> <!--damage-->
    </script>
  </cheat>

  <cheat desc="PL2 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF8722=param</action> <!--timeout-->
      <action>maincpu.pw@FF8724=param</action> <!--damage-->
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF841A=param</action> <!--timeout-->
      <action>maincpu.pw@FF841C=param</action> <!--damage-->
    </script>
  </cheat>

  <cheat desc="PL2 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF871A=param</action> <!--timeout-->
      <action>maincpu.pw@FF871C=param</action> <!--damage-->
    </script>
  </cheat>
[ssf2] (already had one but it doesn't really work)

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF842A=param</action> <!--timeout-->
      <action>maincpu.pw@FF842C=param</action> <!--damage-->
    </script>
  </cheat>

  <cheat desc="PL2 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF882A=param</action> <!--timeout-->
      <action>maincpu.pw@FF882C=param</action> <!--damage-->
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF84AA=param</action> <!--timeout-->
      <action>maincpu.pw@FF84AC=param</action> <!--damage-->
    </script>
  </cheat>

  <cheat desc="PL2 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF88AA=param</action> <!--timeout-->
      <action>maincpu.pw@FF88AC=param</action> <!--damage-->
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF8398=param</action> <!--timeout-->
      <action>maincpu.pw@FF839A=param</action> <!--damage-->
    </script>
  </cheat>

  <cheat desc="PL2 dizzy status">
    <parameter>
      <item value="0x00">Never get dizzied</item>
      <item value="0x40">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action>maincpu.pw@FF8798=param</action> <!--timeout-->
      <action>maincpu.pw@FF879A=param</action> <!--damage-->
    </script>
  </cheat>
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

These infinite time codes also give inf selection time.

[sf2]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action condition="maincpu.rb@FF8AD2 == 0"> <!--prevent hang on bonus stages-->
        maincpu.pw@FF8ACE=9928 <!--round time-->
      </action>
      <action>maincpu.pw@FFDDC2=203C</action> <!--char select time-->
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action condition="maincpu.rb@FF8AC2 == 0"> <!--prevent hang on bonus stages-->
        maincpu.pw@FF8ABE=9928 <!--round time-->
      </action>
      <action>maincpu.pw@FFDDA2=203C</action> <!--char select time-->
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action condition="maincpu.rb@FF8CD2 == 0"> <!--prevent hang on bonus stages-->
        maincpu.pw@FF8CCE=9928 <!--round time-->
      </action>
      <action>maincpu.pw@FFE0D2=253C</action> <!--char select time-->
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pw@FF8DCE=9928</action> <!--round time-->
      <action>maincpu.pw@FFE1D2=253C</action> <!--char select time-->
      <action condition="maincpu.rw@FF84D6 == 0101">
        maincpu.pw@FF846C=0258 <!--PL1 speed select time-->
      </action>
      <action condition="maincpu.rw@FF88D6 == 0101">
        maincpu.pw@FF886C=0258 <!--PL2 speed select time-->
      </action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pw@FF8BFC=9928</action> <!--round time-->
      <action>maincpu.pw@FF1E4C=503C</action> <!--char select time-->
      <action condition="maincpu.rw@FF83BE == 0202 or maincpu.rw@FF83BE == 0402">
        maincpu.pw@FF835A=0384 <!--PL1 speed/mode select time-->
      </action>
      <action condition="maincpu.rw@FF87BE == 0202 or maincpu.rw@FF87BE == 0402">
        maincpu.pw@FF875A=0384 <!--PL2 speed/mode select time-->
      </action>
    </script>
  </cheat>
I think with the conditionals on inf energy and inf time, you can now get rid of the "You must turn OFF ALL cheats at the beginning of the bonus levels." warning.


When a fireball, sonic boom, etc., hits someone, it slows down the game for awhile. This can be annoying. Here are the disable codes. The conditional ensures it still happens when someone gets killed, otherwise the game would hang.

[sf2]

Code: Select all

  <cheat desc="Disable projectile impact slowdown">
    <script state="run">
      <action condition="maincpu.rb@FF83F0 != FF and maincpu.rb@FF86F0 != FF"> <!-- allow KO slowdown -->
        maincpu.pb@FF82E6=00
      </action>
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="Disable projectile impact slowdown">
    <script state="run">
      <action condition="maincpu.rb@FF83E8 != FF and maincpu.rb@FF86E8 != FF"> <!-- allow KO slowdown -->
        maincpu.pb@FF82E2=00
      </action>
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Disable projectile impact slowdown">
    <script state="run">
      <action condition="maincpu.rb@FF83F8 != FF and maincpu.rb@FF87F8 != FF"> <!-- allow KO slowdown -->
        maincpu.pb@FF82F2=00
      </action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Disable projectile impact slowdown">
    <script state="run">
      <action condition="maincpu.rb@FF8478 != FF and maincpu.rb@FF8878 != FF"> <!-- allow KO slowdown -->
        maincpu.pb@FF82F2=00
      </action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Disable projectile impact slowdown">
    <script state="run">
      <action condition="maincpu.rb@FF8366 != FF and maincpu.rb@FF8766 != FF"> <!-- allow KO slowdown -->
        maincpu.pb@FF8C29=00
      </action>
    </script>
  </cheat>
Character select for [ssf2t] that consolidates the old char select plus the Gouki codes.

Code: Select all

  <cheat desc="Select Character PL1"> <comment>Use on the character select screen.</comment>
    <parameter>
      <item value="0x00">Ryu</item>
      <item value="0x01">E. Honda</item>
      <item value="0x02">Blanka</item>
      <item value="0x03">Guile</item>
      <item value="0x04">Ken</item>
      <item value="0x05">Chun Li</item>
      <item value="0x06">Zangief</item>
      <item value="0x07">Dhalsim</item>
      <item value="0x08">M. Bison (Dictator)</item>
      <item value="0x09">Sagat</item>
      <item value="0x0A">Balrog (Boxer)</item>
      <item value="0x0B">Vega (Claw)</item>
      <item value="0x0C">Cammy</item>
      <item value="0x0D">T. Hawk</item>
      <item value="0x0E">Fei Long</item>
      <item value="0x0F">Dee Jay</item>
      <item value="0x10">#Akuma/Gouki</item>
    </parameter>
    <script state="run">
      <action condition="param le 0F">
        maincpu.pb@FF87DF=param, maincpu.pb@FF880B=00, maincpu.pb@FF87FF=00
      </action>
      <action condition="param gt 0F">
        maincpu.pb@FF880B=01, <!--actual selection-->
        maincpu.pb@FF87FF=0A <!--portrait-->
      </action>
    </script>
  </cheat>

  <cheat desc="Select Character PL2"> <comment>Use on the character select screen.</comment>
    <parameter>
      <item value="0x00">Ryu</item>
      <item value="0x01">E. Honda</item>
      <item value="0x02">Blanka</item>
      <item value="0x03">Guile</item>
      <item value="0x04">Ken</item>
      <item value="0x05">Chun Li</item>
      <item value="0x06">Zangief</item>
      <item value="0x07">Dhalsim</item>
      <item value="0x08">M. Bison (Dictator)</item>
      <item value="0x09">Sagat</item>
      <item value="0x0A">Balrog (Boxer)</item>
      <item value="0x0B">Vega (Claw)</item>
      <item value="0x0C">Cammy</item>
      <item value="0x0D">T. Hawk</item>
      <item value="0x0E">Fei Long</item>
      <item value="0x0F">Dee Jay</item>
      <item value="0x10">#Akuma/Gouki</item>
    </parameter>
    <script state="run">
      <action condition="param le 0F">
        maincpu.pb@FF8BDF=param, maincpu.pb@FF8C0B=00, maincpu.pb@FF8BFF=00
      </action>
      <action condition="param gt 0F">
        maincpu.pb@FF8C0B=01, <!--actual selection-->
        maincpu.pb@FF8BFF=0B <!--portrait-->
      </action>
    </script>
  </cheat>
Char mode select for [ssf2t] that consolidates the codes for old and new.

Code: Select all

  <cheat desc="Select character mode PL1"> <comment>Use on the character select screen.</comment>
    <parameter>
      <item value="0x01">old (SSF2)</item>
      <item value="0x00">new (SSF2T)</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8804=param</action>
    </script>
  </cheat>

  <cheat desc="Select character mode PL2"> <comment>Use on the character select screen.</comment>
    <parameter>
      <item value="0x01">old (SSF2)</item>
      <item value="0x00">new (SSF2T)</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8C04=param</action>
    </script>
  </cheat>
Inf super for [ssf2t]. Same as the current code but with a conditional to avoid a graphics glitch at the start of rounds.

Code: Select all

  <cheat desc="Infinite Power PL1">
    <script state="run">
      <action condition="maincpu.rw@FF8008 == A">maincpu.pb@FF8702=30</action>
    </script>
  </cheat>

  <cheat desc="Infinite Power PL2">
    <script state="run">
      <action condition="maincpu.rw@FF8008 == A">maincpu.pb@FF8B02=30</action>
    </script>
  </cheat>
Same as above for [hsf2].

Code: Select all

  <cheat desc="Infinite Power PL1">
    <script state="run">
      <action condition="maincpu.rw@FF8008 == 2">maincpu.pb@FF85F0=30</action>
    </script>
  </cheat>

  <cheat desc="Infinite Power PL2">
    <script state="run">
      <action condition="maincpu.rw@FF8008 == 2">maincpu.pb@FF89F0=30</action>
    </script>
  </cheat>
Free play for [ssf2] and [ssf2t]. It works on the versions without a free play operator setting, like [ssf2xj].

Code: Select all

  <cheat desc="Free play">
    <script state="run">
      <action>maincpu.pb@FF82DF=01</action>
    </script>
  </cheat>
Free play for [hsf2]. Better than "Infinite credits" if you ask me.

Code: Select all

  <cheat desc="Free play">
    <script state="run">
      <action>maincpu.pb@FF82C0=01</action> <!--actual setting-->
      <action>maincpu.pb@FF82C4=24</action> <!--screen text-->
    </script>
  </cheat>
The other games had dip switches for free play.


Set the number of rounds won. This consolidates all those pointless "Sets won" and "Finish round to win match" codes.

[sf2]

Code: Select all

  <cheat desc="Set PL1 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF8656=param</action>
    </script>
  </cheat>

  <cheat desc="Set PL2 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF8956=param</action>
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="Set PL1 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF864E=param</action>
    </script>
  </cheat>

  <cheat desc="Set PL2 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF894E=param</action>
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Set PL1 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF875E=param</action>
    </script>
  </cheat>

  <cheat desc="Set PL2 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF8B5E=param</action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Set PL1 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF87DE=param</action>
    </script>
  </cheat>

  <cheat desc="Set PL2 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF8BDE=param</action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Set PL1 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF8685=param</action>
    </script>
  </cheat>

  <cheat desc="Set PL2 rounds won">
    <parameter min="00" max="02" step="1" />
    <script state="change">
      <action>maincpu.pb@FF8A85=param</action>
    </script>
  </cheat>
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

(Char select for ssf2t above edited.)

Char select for [hsf2] that prevents incompatible mode+character combinations:

Code: Select all

  <cheat desc="Select Character PL1"> <comment>Use on the character select screen.</comment>
    <parameter>
      <item value="0x00">Ryu</item>
      <item value="0x01">E. Honda</item>
      <item value="0x02">Blanka</item>
      <item value="0x03">Guile</item>
      <item value="0x04">Ken</item>
      <item value="0x05">Chun-Li</item>
      <item value="0x06">Zangief</item>
      <item value="0x07">Dhalsim</item>
      <item value="0x08">M. Bison (Dictator)</item>
      <item value="0x09">Sagat</item>
      <item value="0x0A">Balrog (Boxer)</item>
      <item value="0x0B">Vega (Claw)</item>
      <item value="0x0C">Cammy</item>
      <item value="0x0D">T. Hawk</item>
      <item value="0x0E">Fei Long</item>
      <item value="0x0F">Dee Jay</item>
      <item value="0x10">#Akuma/Gouki</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8667=param</action>
      <action condition="param ge 08 and maincpu.rb@FF8666 == 04">
        maincpu.pb@FF8666=06 <!--bosses require Champ or above-->
      </action>
      <action condition="param ge 0C and maincpu.rb@FF8666 ge 04">
        maincpu.pb@FF8666=02 <!--new challengers require Super or above-->
      </action>
      <action condition="param ge 10 and maincpu.rb@FF8666 != 00">
        maincpu.pb@FF8666=00 <!--Akuma requires SuperT-->
      </action>
    </script>
  </cheat>

  <cheat desc="Select Character PL2"> <comment>Use on the character select screen.</comment>
    <parameter>
      <item value="0x00">Ryu</item>
      <item value="0x01">E. Honda</item>
      <item value="0x02">Blanka</item>
      <item value="0x03">Guile</item>
      <item value="0x04">Ken</item>
      <item value="0x05">Chun-Li</item>
      <item value="0x06">Zangief</item>
      <item value="0x07">Dhalsim</item>
      <item value="0x08">M. Bison (Dictator)</item>
      <item value="0x09">Sagat</item>
      <item value="0x0A">Balrog (Boxer)</item>
      <item value="0x0B">Vega (Claw)</item>
      <item value="0x0C">Cammy</item>
      <item value="0x0D">T. Hawk</item>
      <item value="0x0E">Fei Long</item>
      <item value="0x0F">Dee Jay</item>
      <item value="0x10">#Akuma/Gouki</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8A67=param</action>
      <action condition="param ge 08 and maincpu.rb@FF8A66 == 04">
        maincpu.pb@FF8A66=06 <!--bosses require Champ or above-->
      </action>
      <action condition="param ge 0C and maincpu.rb@FF8A66 ge 04">
        maincpu.pb@FF8A66=02 <!--new challengers require Super or above-->
      </action>
      <action condition="param ge 10 and maincpu.rb@FF8A66 != 00">
        maincpu.pb@FF8A66=00 <!--Akuma requires SuperT-->
      </action>
    </script>
  </cheat>
The char select code for [sf2] crashes the game if you pick one of the bosses for a human player. You might want to add a <comment> about that. It won't crash if the computer is controlling, but the sprite colors are messed up outside of the boss's own stage.

Code: Select all

  <cheat desc="Set user control PL1">
    <parameter>
      <item value="0x01">Human</item>
      <item value="0x00">Computer</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@FF8654=param</action>
    </script>
  </cheat>

  <cheat desc="Set user control PL2">
    <parameter>
      <item value="0x01">Human</item>
      <item value="0x00">Computer</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@FF8954=param</action>
    </script>
  </cheat>
These color codes have better descriptions than the current ones.
[ssf2]

Code: Select all

  <cheat desc="Select Colour PL1">
    <parameter>
      <item value="0x00">LP button</item>
      <item value="0x01">MP button</item>
      <item value="0x02">HP button</item>
      <item value="0x03">LK button</item>
      <item value="0x04">MK button</item>
      <item value="0x05">HK button</item>
      <item value="0x06">Start button</item>
      <item value="0x07">Hold any P/K button</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF877F=param</action>
    </script>
  </cheat>

  <cheat desc="Select Colour PL2">
    <parameter>
      <item value="0x00">LP button</item>
      <item value="0x01">MP button</item>
      <item value="0x02">HP button</item>
      <item value="0x03">LK button</item>
      <item value="0x04">MK button</item>
      <item value="0x05">HK button</item>
      <item value="0x06">Start button</item>
      <item value="0x07">Hold any P/K button</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8B7F=param</action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Select Colour PL1">
    <parameter>
      <item value="0x00">LP button</item>
      <item value="0x01">MP button</item>
      <item value="0x02">HP button</item>
      <item value="0x03">LK button</item>
      <item value="0x04">MK button</item>
      <item value="0x05">HK button</item>
      <item value="0x06">Start button</item>
      <item value="0x07">Hold any P/K button</item>
      <item value="0x08">SSF2 primary</item>
      <item value="0x09">SSF2 alternate</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.pb@FF880B == 00"> <!--does not apply to Akuma-->
        maincpu.pb@FF87FF=param
      </action>
    </script>
  </cheat>

  <cheat desc="Select Colour PL2">
    <parameter>
      <item value="0x00">LP button</item>
      <item value="0x01">MP button</item>
      <item value="0x02">HP button</item>
      <item value="0x03">LK button</item>
      <item value="0x04">MK button</item>
      <item value="0x05">HK button</item>
      <item value="0x06">Start button</item>
      <item value="0x07">Hold any P/K button</item>
      <item value="0x08">SSF2 primary</item>
      <item value="0x09">SSF2 alternate</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.pb@FF8C0B == 00"> <!--does not apply to Akuma-->
        maincpu.pb@FF8BFF=param
      </action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Select SuperT Colour PL1">
    <parameter>
      <item value="0x00">LP button</item>
      <item value="0x01">MP button</item>
      <item value="0x02">HP button</item>
      <item value="0x03">LK button</item>
      <item value="0x04">MK button</item>
      <item value="0x05">HK button</item>
      <item value="0x06">Start button</item>
      <item value="0x07">Hold any P/K button</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8668=param</action>
      <action condition="maincpu.rb@FF8666 != 0 or maincpu.rb@FF8667 == 10">
        maincpu.pb@FF8668=(param band 01) <!--non-SuperT chars and Akuma only get two choices-->
      </action>
    </script>
  </cheat>

  <cheat desc="Select SuperT Colour PL2">
    <parameter>
      <item value="0x00">LP button</item>
      <item value="0x01">MP button</item>
      <item value="0x02">HP button</item>
      <item value="0x03">LK button</item>
      <item value="0x04">MK button</item>
      <item value="0x05">HK button</item>
      <item value="0x06">Start button</item>
      <item value="0x07">Hold any P/K button</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8A68=param</action>
      <action condition="maincpu.rb@FF8A66 != 0 or maincpu.rb@FF8A67 == 10">
        maincpu.pb@FF8A68=(param band 01) <!--non-SuperT chars and Akuma only get two choices-->
      </action>
    </script>
  </cheat>
The "Command during jump 'ON'" codes would be better named "Allow special moves during jump". They are already in all the games except [hsf2]:

Code: Select all

  <cheat desc="Allow special moves during jump PL1">
    <script state="run">
      <action>maincpu.pb@FF84BD=00</action>
    </script>
  </cheat>

  <cheat desc="Allow special moves during jump PL2">
    <script state="run">
      <action>maincpu.pb@FF88BD=00</action>
    </script>
  </cheat>
The "All Hits Combo" codes in [sf2ce] and [sf2hf] codes would be better named "All normal moves cancelable". The rest:
[ssf2]

Code: Select all

  <cheat desc="All normal moves cancelable PL1">
    <script state="run">
      <action>maincpu.pb@FF8563=01</action>
    </script>
  </cheat>

  <cheat desc="All normal moves cancelable PL2">
    <script state="run">
      <action>maincpu.pb@FF8963=01</action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="All normal moves cancelable PL1">
    <script state="run">
      <action>maincpu.pb@FF85E3=01</action>
    </script>
  </cheat>

  <cheat desc="All normal moves cancelable PL2">
    <script state="run">
      <action>maincpu.pb@FF89E3=01</action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="All normal moves cancelable PL1">
    <script state="run">
      <action>maincpu.pb@FF84D1=01</action>
    </script>
  </cheat>

  <cheat desc="All normal moves cancelable PL2">
    <script state="run">
      <action>maincpu.pb@FF88D1=01</action>
    </script>
  </cheat>
This only works for three chars in [sf2] for some reason.

Code: Select all

  <cheat desc="All normal moves cancelable PL1"> <comment>Only works for Ryu, Ken and Dhalsim.</comment>
    <script state="run">
      <action>maincpu.pb@FF8488=01</action>
    </script>
  </cheat>

  <cheat desc="All normal moves cancelable PL2"> <comment>Only works for Ryu, Ken and Dhalsim.</comment>
    <script state="run">
      <action>maincpu.pb@FF8788=01</action>
    </script>
  </cheat>
BTW, the only codes I tested on clones are the Free Play settings, which do work on all the ssf2, ssf2t and hsf2 clones.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Here are the codes to skip having to charge special moves. Some of them have conditions to avoid shortening the execution window, which would make it harder. You can get rid of all the old "Quick charge" codes now. (These have been edited.)

[sf2] (For PL2, replace all FF83C6 with FF86C6.)

Code: Select all

  <cheat desc="Easy charge moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83C6+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83C6 == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and maincpu.rb@(FF83C6+91) le 02">
        maincpu.pb@(FF83C6+92)=01 <!--E.Honda B,F+P-->
      </action>
      <action condition="temp0 == 2 and maincpu.rb@(FF83C6+90) le 02">
        maincpu.pb@(FF83C6+91)=01 <!--Blanka B,F+P-->
      </action>
      <action condition="temp0 == 3">
        maincpu.pb@(FF83C6+81)=01, <!--Guile B,F+P-->
        maincpu.pb@(FF83C6+87)=01 <!--Guile D,U+K-->
      </action>
      <action condition="temp0 == 5">
        maincpu.pb@(FF83C6+81)=01 <!--Chun Li D,U+K-->
      </action>
    </script>
  </cheat>
[sf2ce] (For PL2, replace all FF83BE with FF86BE.)

Code: Select all

  <cheat desc="Easy charge moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1"> <!--E.Honda-->
        maincpu.pb@(FF83BE+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 2"> <!--Blanka-->
        maincpu.pb@(FF83BE+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 3"> <!--Guile-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+87)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == 5"> <!--Chun Li-->
        maincpu.pb@(FF83BE+81)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 8"> <!--Dictator-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+89)=01, <!--B,F+K-->
        maincpu.pb@(FF83BE+92)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == A"> <!--Boxer-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+89)=01, <!--B,F+K-->
        maincpu.pw@(FF83BE+B2)=0101 <!--TAP-->
      </action>
      <action condition="temp0 == B"> <!--Claw-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+89)=01  <!--D,U+K-->
      </action>
    </script>
  </cheat>
[sf2hf] (For PL2, replace all FF83BE with FF86BE.)

Code: Select all

  <cheat desc="Easy charge moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1"> <!--E.Honda-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+AB)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == 2"> <!--Blanka-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+B4)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == 3"> <!--Guile-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+87)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == 5"> <!--Chun Li-->
        maincpu.pb@(FF83BE+81)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 8"> <!--Dictator-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+89)=01, <!--B,F+K-->
        maincpu.pb@(FF83BE+92)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == A"> <!--Boxer-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+89)=01, <!--B,F+K-->
        maincpu.pw@(FF83BE+B2)=0101 <!--TAP-->
      </action>
      <action condition="temp0 == B"> <!--Claw-->
        maincpu.pb@(FF83BE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83BE+89)=01  <!--D,U+K-->
      </action>
    </script>
  </cheat>
[ssf2] (For PL2, replace all FF83CE with FF87CE.)

Code: Select all

  <cheat desc="Easy charge moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83CE+391)</action> <!--character-->
      <action condition="maincpu.rb@FF83CE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1"> <!--E.Honda-->
        maincpu.pb@(FF83CE+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83CE+AA) le 02"> <!--E.Honda-->
        maincpu.pb@(FF83CE+AB)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 2"> <!--Blanka-->
        maincpu.pb@(FF83CE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83CE+B4)=01, <!--D,U+K-->
        maincpu.pb@(FF83CE+BA)=01  <!--B,F+K-->
      </action>
      <action condition="temp0 == 3"> <!--Guile-->
        maincpu.pb@(FF83CE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83CE+87)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == 5"> <!--Chun Li-->
        maincpu.pb@(FF83CE+81)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF83CE+B0) le 02"> <!--Chun Li-->
        maincpu.pb@(FF83CE+B1)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 8"> <!--Dictator-->
        maincpu.pb@(FF83CE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83CE+89)=01, <!--B,F+K-->
        maincpu.pb@(FF83CE+92)=01  <!--D,U+K-->
      </action>
      <action condition="temp0 == 8 and maincpu.rb@(FF83CE+AC) le 02"> <!--Dictator-->
        maincpu.pb@(FF83CE+AD)=01  <!--D,U+P-->
      </action>
      <action condition="temp0 == A"> <!--Boxer-->
        maincpu.pb@(FF83CE+81)=01, <!--B,F+P-->
        maincpu.pb@(FF83CE+89)=01, <!--B,F+K-->
        maincpu.pb@(FF83CE+C1)=01, <!--D,U+P-->
        maincpu.pw@(FF83CE+B2)=0101 <!--TAP-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF83CE+88) le 02"> <!--Claw-->
        maincpu.pb@(FF83CE+89)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF83CE+8C) le 02"> <!--Claw-->
        maincpu.pb@(FF83CE+8D)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF83CE+90) le 02"> <!--Claw-->
        maincpu.pb@(FF83CE+91)=01 <!--D,U+P-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF83CE+92) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF83CE+93)=01 <!--B,F+K-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF83CE+96) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF83CE+97)=01 <!--D,U+P-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF83CE+A6) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF83CE+A7)=01 <!--B,F+P-->
      </action>
    </script>
  </cheat>
[ssf2t] (For PL2, replace all FF844E with FF884E.)

Code: Select all

  <cheat desc="Easy charge moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391), temp1=maincpu.rb@(FF844E+3B6)</action> <!--char and mode-->
      <action condition="maincpu.rb@(FF844E+3BD) != 0">temp0=10</action> <!--Akuma-->
      <action condition="maincpu.rb@FF844E == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and temp1 == 1"> <!--old E.Honda-->
        maincpu.pb@(FF844E+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 1 and temp1 == 1 and maincpu.rb@(FF844E+AA) le 02"> <!--old E.Honda-->
        maincpu.pb@(FF844E+AB)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF844E+88) le 02"> <!--E.Honda-->
        maincpu.pb@(FF844E+89)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF844E+90) le 02"> <!--E.Honda-->
        maincpu.pb@(FF844E+91)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF844E+94) le 02"> <!--E.Honda-->
        maincpu.pb@(FF844E+95)=01 <!--B,F,B,F+P-->
      </action>
      <action condition="temp0 == 2"> <!--Blanka-->
        maincpu.pb@(FF844E+81)=01, <!--B,F+P-->
        maincpu.pb@(FF844E+B4)=01, <!--D,U+K-->
        maincpu.pb@(FF844E+BA)=01, <!--B,F+K-->
        maincpu.pb@(FF844E+C2)=01  <!--B,F,B,F+P-->
      </action>
      <action condition="temp0 == 3"> <!--Guile-->
        maincpu.pb@(FF844E+81)=01, <!--B,F+P-->
        maincpu.pb@(FF844E+87)=01, <!--D,U+K-->
        maincpu.pb@(FF844E+95)=01  <!--D,F,B,U+K-->
      </action>
      <action condition="temp0 == 5"> <!--Chun Li-->
        maincpu.pb@(FF844E+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF844E+B0) le 02"> <!--Chun Li-->
        maincpu.pb@(FF844E+B1)=01 <!--B,F,B,F+K-->
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF844E+BA) le 02"> <!--Chun Li-->
        maincpu.pb@(FF844E+BB)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF844E+BF) le 02"> <!--Chun Li-->
        maincpu.pb@(FF844E+C0)=01 <!--B,F+K-->
      </action>
      <action condition="temp0 == 8"> <!--Dictator-->
        maincpu.pb@(FF844E+81)=01, <!--B,F+P-->
        maincpu.pb@(FF844E+89)=01, <!--B,F+K-->
        maincpu.pb@(FF844E+92)=01, <!--D,U+K-->
        maincpu.pb@(FF844E+C6)=01  <!--B,F,B,F+K-->
      </action>
      <action condition="temp0 == 8 and maincpu.rb@(FF844E+AC) le 02"> <!--Dictator-->
        maincpu.pb@(FF844E+AD)=01  <!--D,U+P-->
      </action>
      <action condition="temp0 == A"> <!--Boxer-->
        maincpu.pb@(FF844E+81)=01, <!--B,F+P-->
        maincpu.pb@(FF844E+89)=01, <!--B,F+K-->
        maincpu.pb@(FF844E+C1)=01, <!--D,U+P-->
        maincpu.pb@(FF844E+D7)=01, <!--B,DF+P-->
        maincpu.pb@(FF844E+DE)=01, <!--B,DF+K-->
        maincpu.pw@(FF844E+B2)=0101 <!--TAP-->
      </action>
      <action condition="temp0 == A and temp1 == 0 and maincpu.rb@(FF844E+D4) le 02"> <!--Boxer-->
        maincpu.pb@(FF844E+D5)=01 <!--B,F,B,F+P-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF844E+88) le 02"> <!--Claw-->
        maincpu.pb@(FF844E+89)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF844E+8C) le 02"> <!--Claw-->
        maincpu.pb@(FF844E+8D)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF844E+90) le 02"> <!--Claw-->
        maincpu.pb@(FF844E+91)=01 <!--D,U+P-->
      </action>
      <action condition="temp0 == B and temp1 == 0 and maincpu.rb@(FF844E+99) le 02"> <!--Claw-->
        maincpu.pb@(FF844E+9A)=01 <!--D,F,B,U+K-->
      </action>
      <action condition="temp0 == B and temp1 == 0 and maincpu.rb@(FF844E+9D) le 02"> <!--Claw-->
        maincpu.pb@(FF844E+9E)=01 <!--DB,F+K-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF844E+92) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF844E+93)=01 <!--B,F+K-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF844E+96) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF844E+97)=01 <!--D,U+P-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF844E+A6) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF844E+A7)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == F and temp1 == 0 and maincpu.rb@(FF844E+AB) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF844E+AC)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == F and temp1 == 0 and maincpu.rb@(FF844E+AF) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF844E+B0)=01 <!--B,F,B,F+K-->
      </action>
    </script>
  </cheat>
[hsf2] (For PL2, replace all FF833C with FF873C.)

Code: Select all

  <cheat desc="Easy charge moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF833C+32B), temp1=maincpu.rb@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and temp1 != 0 "> <!--old Honda-->
        maincpu.pb@(FF833C+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 1 and temp1 != 0 and maincpu.rb@(FF833C+AA) le 02"> <!--old Honda-->
        maincpu.pb@(FF833C+AB)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF833C+88) le 02"> <!--E.Honda-->
        maincpu.pb@(FF833C+89)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF833C+90) le 02"> <!--E.Honda-->
        maincpu.pb@(FF833C+91)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF833C+94) le 02"> <!--E.Honda-->
        maincpu.pb@(FF833C+95)=01 <!--B,F,B,F+P-->
      </action>
      <action condition="temp0 == 2"> <!--Blanka-->
        maincpu.pb@(FF833C+81)=01, <!--B,F+P-->
        maincpu.pb@(FF833C+B4)=01, <!--D,U+K-->
        maincpu.pb@(FF833C+BA)=01, <!--B,F+K-->
        maincpu.pb@(FF833C+C2)=01  <!--B,F,B,F+P-->
      </action>
      <action condition="temp0 == 3"> <!--Guile-->
        maincpu.pb@(FF833C+81)=01, <!--B,F+P-->
        maincpu.pb@(FF833C+87)=01, <!--D,U+K-->
        maincpu.pb@(FF833C+95)=01  <!--D,F,B,U+K-->
      </action>
      <action condition="temp0 == 5"> <!--Chun Li-->
        maincpu.pb@(FF833C+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == 5 and temp1 == 0 and maincpu.rb@(FF833C+B0) le 02"> <!--Chun Li-->
        maincpu.pb@(FF833C+B1)=01 <!--B,F,B,F+K-->
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF833C+BA) le 02"> <!--Chun Li-->
        maincpu.pb@(FF833C+BB)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF833C+BF) le 02"> <!--Chun Li-->
        maincpu.pb@(FF833C+C0)=01 <!--B,F+K-->
      </action>
      <action condition="temp0 == 8"> <!--Dictator-->
        maincpu.pb@(FF833C+81)=01, <!--B,F+P-->
        maincpu.pb@(FF833C+89)=01, <!--B,F+K-->
        maincpu.pb@(FF833C+92)=01, <!--D,U+K-->
        maincpu.pb@(FF833C+C6)=01  <!--B,F,B,F+K-->
      </action>
      <action condition="temp0 == 8 and maincpu.rb@(FF833C+AC) le 02"> <!--Dictator-->
        maincpu.pb@(FF833C+AD)=01  <!--D,U+P-->
      </action>
      <action condition="temp0 == A"> <!--Boxer-->
        maincpu.pb@(FF833C+81)=01, <!--B,F+P-->
        maincpu.pb@(FF833C+89)=01, <!--B,F+K-->
        maincpu.pb@(FF833C+C1)=01, <!--D,U+P-->
        maincpu.pb@(FF833C+D7)=01, <!--B,DF+P-->
        maincpu.pb@(FF833C+DE)=01, <!--B,DF+K-->
        maincpu.pw@(FF833C+B2)=0101 <!--TAP-->
      </action>
      <action condition="temp0 == A and temp1 == 0 and maincpu.rb@(FF833C+D4) le 02"> <!--Boxer-->
        maincpu.pb@(FF833C+D5)=01 <!--B,F,B,F+P-->
      </action>
      <action condition="temp0 == B"> <!--old Claw-->
        maincpu.pb@(FF833C+81)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF833C+88) le 02"> <!--Claw-->
        maincpu.pb@(FF833C+89)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF833C+8C) le 02"> <!--Claw-->
        maincpu.pb@(FF833C+8D)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == B and maincpu.rb@(FF833C+90) le 02"> <!--Claw-->
        maincpu.pb@(FF833C+91)=01 <!--D,U+P-->
      </action>
      <action condition="temp0 == B and temp1 == 0 and maincpu.rb@(FF833C+99) le 02"> <!--Claw-->
        maincpu.pb@(FF833C+9A)=01 <!--D,F,B,U+K-->
      </action>
      <action condition="temp0 == B and temp1 == 0 and maincpu.rb@(FF833C+9D) le 02"> <!--Claw-->
        maincpu.pb@(FF833C+9E)=01 <!--DB,F+K-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF833C+92) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF833C+93)=01 <!--B,F+K-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF833C+96) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF833C+97)=01 <!--D,U+P-->
      </action>
      <action condition="temp0 == F and maincpu.rb@(FF833C+A6) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF833C+A7)=01 <!--B,F+P-->
      </action>
      <action condition="temp0 == F and temp1 == 0 and maincpu.rb@(FF833C+AB) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF833C+AC)=01 <!--D,U+K-->
      </action>
      <action condition="temp0 == F and temp1 == 0 and maincpu.rb@(FF833C+AF) le 02"> <!--Dee Jay-->
        maincpu.pb@(FF833C+B0)=01 <!--B,F,B,F+K-->
      </action>
    </script>
  </cheat>
Here are the codes to set the level of the turn around punch move. You can get rid of any old "Max Turnpunch" codes, particularly the ones from sf2ce... TAP did not have levels in that game. It was either charged or not.

[sf2hf]

Code: Select all

  <cheat desc="Set Boxer Turnpunch level PL1">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF83BE+291) == 0A"> <!--Boxer only-->
        maincpu.pw@(FF83BE+B6)=param, maincpu.pw@(FF83BE+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>

  <cheat desc="Set Boxer Turnpunch level PL2">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF86BE+291) == 0A"> <!--Boxer only-->
        maincpu.pw@(FF86BE+B6)=param, maincpu.pw@(FF86BE+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Set Boxer Turnpunch level PL1">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF83CE+391) == 0A"> <!--Boxer only-->
        maincpu.pw@(FF83CE+B6)=param, maincpu.pw@(FF83CE+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>

  <cheat desc="Set Boxer Turnpunch level PL2">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF87CE+391) == 0A"> <!--Boxer only-->
        maincpu.pw@(FF87CE+B6)=param, maincpu.pw@(FF87CE+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Set Boxer Turnpunch level PL1">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF844E+391) == 0A and maincpu.rb@(FF844E+3BD) == 00"> <!--Boxer only-->
        maincpu.pw@(FF844E+B6)=param, maincpu.pw@(FF844E+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>

  <cheat desc="Set Boxer Turnpunch level PL2">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF884E+391) == 0A and maincpu.rb@(FF884E+3BD) == 00"> <!--Boxer only-->
        maincpu.pw@(FF884E+B6)=param, maincpu.pw@(FF884E+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Set Boxer Turnpunch level PL1">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF833C+32B) == 0A"> <!--Boxer only-->
        maincpu.pw@(FF833C+B6)=param, maincpu.pw@(FF833C+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>

  <cheat desc="Set Boxer Turnpunch level PL2">
    <parameter>
      <item value="0001">"One"</item>
      <item value="0121">"Two"</item>
      <item value="0241">"Three"</item>
      <item value="0481">"Four"</item>
      <item value="0961">"Five"</item>
      <item value="1441">"Six"</item>
      <item value="1921">"Seven"</item>
      <item value="2401">"Final"</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.rb@(FF873C+32B) == 0A"> <!--Boxer only-->
        maincpu.pw@(FF873C+B6)=param, maincpu.pw@(FF873C+B8)=param <!--both P and K versions-->
      </action>
    </script>
  </cheat>
Last edited by d9x on Sun Jun 12, 2011 9:46 am, edited 2 times in total.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Here are all the "easy special move" codes. Like the "quick charge" codes, some of the old ones didn't work and had to be fixed first, so it's good you can get rid of them now.

They are grouped into classes to keep the number of codes down. (These have been edited.)

[sf2] For PL2, replace all FF83C6 with FF86C6.

Code: Select all

  <cheat desc="Easy QCF & QCB moves moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83C6+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83C6 == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4)"> <!--Ryu/Ken-->
        maincpu.pb@(FF83C6+90)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF83C6+98)=04  <!--D,DB,B+K-->
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim D,DF,F+P-->
        maincpu.pd@(FF83C6+90)=02080004 
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,D,DF moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83C6+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83C6 == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4)"> <!--Ryu/Ken F,D,DF+P-->
        maincpu.pb@(FF83C6+A0)=04
      </action>
    </script>
  </cheat>

  <cheat desc="Easy 360 & half-circle moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83C6+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83C6 == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 7"> <!--Dhalsim B,DB,D,DF,F+P-->
        maincpu.pd@(FF83C6+98)=02080008
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83C6+12) != 0"> <!--Zangief 360+P-->
        maincpu.pd@(FF83C6+80)=06060800 <!--L+P from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83C6+12) == 0"> <!--Zangief 360+P-->
        maincpu.pd@(FF83C6+80)=06070800 <!--R+P from the right-->
      </action>
    </script>
  </cheat>
[sf2ce] For PL2, replace all FF83BE with FF86BE.

Code: Select all

  <cheat desc="Easy QCF & QCB moves moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 0 or temp0 == 4"> <!--Ryu/Ken-->
        maincpu.pb@(FF83BE+90)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF83BE+98)=04  <!--D,DB,B+K-->
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim D,DF,F+P-->
        maincpu.pd@(FF83BE+90)=02080004
      </action>
      <action condition="temp0 == 9"> <!--Sagat-->
        maincpu.pd@(FF83BE+90)=02080004, <!--D,DF,F+P-->
        maincpu.pd@(FF83BE+A0)=02080004  <!--D,DF,F+K-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,D,DF moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 0 or temp0 == 4"> <!--Ryu/Ken F,D,DF+P-->
        maincpu.pb@(FF83BE+A0)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat F,D,DF+P-->
        maincpu.pd@(FF83BE+98)=02080004
      </action>
    </script>
  </cheat>

  <cheat desc="Easy 360, half-circle & tiger-knee moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 7"> <!--Dhalsim B,DB,D,DF,F+P-->
        maincpu.pd@(FF83BE+98)=02080008
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83BE+12) != 0"> <!--Zangief 360+P-->
        maincpu.pd@(FF83BE+80)=06060800 <!--L+P from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83BE+12) == 0"> <!--Zangief 360+P-->
        maincpu.pd@(FF83BE+80)=06070800 <!--R+P from the right-->
      </action>
      <action condition="temp0 == 9 and maincpu.rb@(FF83BE+AB) lt 4"> <!--Sagat D,F,UF+K-->
        maincpu.pd@(FF83BE+A8)=02080004
      </action>
    </script>
  </cheat>
[sf2hf] For PL2, replace all FF83BE with FF86BE.

Code: Select all

  <cheat desc="Easy QCF & QCB moves moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 0 or temp0 == 4"> <!--Ryu/Ken-->
        maincpu.pb@(FF83BE+90)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF83BE+98)=04  <!--D,DB,B+K-->
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim D,DF,F+P-->
        maincpu.pd@(FF83BE+90)=02080004
      </action>
      <action condition="temp0 == 9"> <!--Sagat-->
        maincpu.pd@(FF83BE+90)=02080004, <!--D,DF,F+P-->
        maincpu.pd@(FF83BE+A0)=02080004  <!--D,DF,F+K-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,D,DF moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 0 or temp0 == 4"> <!--Ryu/Ken F,D,DF+P-->
        maincpu.pb@(FF83BE+A0)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat F,D,DF+P-->
        maincpu.pd@(FF83BE+98)=02080004
      </action>
      <action condition="temp0 == 7 and (maincpu.rw@(FF83BE+292) band 2) gt 0"> <!--Dhalsim L,D,DL+PPP/KKK-->
        maincpu.pw@(FF83BE+C8)=0608, maincpu.pb@(FF83BE+D3)=05 <!--L+PPP/KKK-->
      </action>
      <action condition="temp0 == 7 and (maincpu.rw@(FF83BE+292) band 1) gt 0"> <!--Dhalsim R,D,DR+PPP/KKK-->
        maincpu.pw@(FF83BE+C8)=0608, maincpu.pb@(FF83BE+D3)=06 <!--R+PPP/KKK-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy 360, half-circle & tiger-knee moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 5"> <!--Chun Li B,DB,D,DF,F+P-->
        maincpu.pb@(FF83BE+B0)=08
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim B,DB,D,DF,F+P-->
        maincpu.pd@(FF83BE+98)=02080008
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83BE+12) != 0"> <!--Zangief 360+P-->
        maincpu.pd@(FF83BE+80)=06060800 <!--L+P from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83BE+12) == 0"> <!--Zangief 360+P-->
        maincpu.pd@(FF83BE+80)=06070800 <!--R+P from the right-->
      </action>
      <action condition="temp0 == 9 and maincpu.rb@(FF83BE+AB) lt 4"> <!--Sagat D,F,UF+K-->
        maincpu.pd@(FF83BE+A8)=02080004
      </action>
    </script>
  </cheat>
[ssf2] For PL2, replace all FF83CE with FF87CE.

Code: Select all

  <cheat desc="Easy QCF & QCB moves moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83CE+391)</action> <!--character-->
      <action condition="maincpu.rb@FF83CE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4)"> <!--Ryu/Ken-->
        maincpu.pb@(FF83CE+90)=04, <!--D,DB,B+K-->
        maincpu.pb@(FF83CE+94)=04  <!--D,DF,F+P-->
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim D,DF,F+P-->
        maincpu.pb@(FF83CE+80)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat-->
        maincpu.pb@(FF83CE+88)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF83CE+8C)=04  <!--D,DF,F+K-->
      </action>
      <action condition="temp0 == C"> <!--Cammy D,DF,F+K-->
        maincpu.pb@(FF83CE+96)=04
      </action>
      <action condition="temp0 == E"> <!--Fei Long D,DF,F+P-->
        maincpu.pb@(FF83CE+90)=04,
        maincpu.pb@(FF83CE+A0)=04
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,D,DF & B,D,DB moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83CE+391)</action> <!--character-->
      <action condition="maincpu.rb@FF83CE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4)"> <!--Ryu/Ken F,D,DF+P-->
        maincpu.pb@(FF83CE+98)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat F,D,DF+P-->
        maincpu.pb@(FF83CE+80)=04
      </action>
      <action condition="temp0 == C"> <!--Cammy F,D,DF+K-->
        maincpu.pb@(FF83CE+92)=04
      </action>
      <action condition="temp0 == D"> <!--T.Hawk F,D,DF+P-->
        maincpu.pb@(FF83CE+8D)=04
      </action>
      <action condition="temp0 == E"> <!--Fei Long B,D,DB+K-->
        maincpu.pb@(FF83CE+94)=04
      </action>
      <action condition="temp0 == 7 and (maincpu.rw@(FF83CE+392) band 2) gt 0"> <!--Dhalsim L,D,DL+PPP/KKK-->
        maincpu.pw@(FF83CE+88)=0608, maincpu.pb@(FF83CE+8D)=05 <!--L+PPP/KKK-->
      </action>
      <action condition="temp0 == 7 and (maincpu.rw@(FF83CE+392) band 1) gt 0"> <!--Dhalsim R,D,DR+PPP/KKK-->
        maincpu.pw@(FF83CE+88)=0608, maincpu.pb@(FF83CE+8D)=06 <!--R+PPP/KKK-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy 360, half-circle & tiger-knee moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83CE+391)</action> <!--character-->
      <action condition="maincpu.rb@FF83CE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 0"> <!--Ryu B,DB,D,DF,F+P-->
        maincpu.pb@(FF83CE+E0)=08
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim B,DB,D,DF,F+P-->
        maincpu.pb@(FF83CE+84)=08
      </action>
      <action condition="temp0 == C"> <!--Cammy B,DB,F+P-->
        maincpu.pb@(FF83CE+A2)=04
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83CE+12) != 0"> <!--Zangief 360+P/K-->
        maincpu.pd@(FF83CE+80)=06060800, <!--L+P from the left-->
        maincpu.pd@(FF83CE+9B)=06040800  <!--L+K from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF83CE+12) == 0"> <!--Zangief 360+P/K-->
        maincpu.pd@(FF83CE+80)=06070800, <!--R+P from the right-->
        maincpu.pd@(FF83CE+9B)=06050800  <!--R+K from the right-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF83CE+12) != 0"> <!--T.Hawk 360+P-->
        maincpu.pd@(FF83CE+91)=04060800 <!--L+P from the left-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF83CE+12) == 0"> <!--T.Hawk 360+P-->
        maincpu.pd@(FF83CE+91)=05060800 <!--R+P from the right-->
      </action>
      <action condition="temp0 == 9"> <!--Sagat D,F,UF+K-->
        maincpu.pb@(FF83CE+84)=04
      </action>
    </script>
  </cheat>
[ssf2t] For PL2, replace all FF844E with FF884E.

Code: Select all

  <cheat desc="Easy QCF & QCB moves moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391), temp1=maincpu.rb@(FF844E+3B6)</action> <!--char and mode-->
      <action condition="maincpu.rb@(FF844E+3BD) != 0">temp0=10</action> <!--Akuma-->
      <action condition="maincpu.rb@FF844E == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4 or temp0 == 10)"> <!--Ryu/Ken/Akuma-->
        maincpu.pb@(FF844E+90)=04, <!--D,DB,B+K-->
        maincpu.pb@(FF844E+94)=04  <!--D,DF,F+P-->
      </action>
      <action condition="temp0 == 4 and temp1 == 0"> <!--Ken D,DF,F+K-->
        maincpu.pb@(FF844E+E6)=04
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim D,DF,F+P-->
        maincpu.pb@(FF844E+80)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat-->
        maincpu.pb@(FF844E+88)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF844E+8C)=04  <!--D,DF,F+K-->
      </action>
      <action condition="temp0 == C"> <!--Cammy D,DF,F+K-->
        maincpu.pb@(FF844E+96)=04
      </action>
      <action condition="temp0 == E"> <!--Fei Long D,DF,F+P-->
        maincpu.pb@(FF844E+90)=04,
        maincpu.pb@(FF844E+A0)=04
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,D,DF & B,D,DB moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391)</action> <!--character-->
      <action condition="maincpu.rb@(FF844E+3BD) != 0">temp0=10</action> <!--Akuma-->
      <action condition="maincpu.rb@FF844E == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4 or temp0 == 10)"> <!--Ryu/Ken/Akuma F,D,DF+P-->
        maincpu.pb@(FF844E+98)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat F,D,DF+P-->
        maincpu.pb@(FF844E+80)=04
      </action>
      <action condition="temp0 == C"> <!--Cammy F,D,DF+K-->
        maincpu.pb@(FF844E+92)=04
      </action>
      <action condition="temp0 == D"> <!--T.Hawk F,D,DF+P-->
        maincpu.pb@(FF844E+8D)=04
      </action>
      <action condition="temp0 == E"> <!--Fei Long B,D,DB+K-->
        maincpu.pb@(FF844E+94)=04
      </action>
      <action condition="temp0 == 7 and (maincpu.rw@(FF844E+392) band 2) gt 0"> <!--Dhalsim L,D,DL+PPP/KKK-->
        maincpu.pw@(FF844E+88)=0608, maincpu.pb@(FF844E+8D)=05 <!--L+PPP/KKK-->
      </action>
      <action condition="temp0 == 7 and (maincpu.rw@(FF844E+392) band 1) gt 0"> <!--Dhalsim R,D,DR+PPP/KKK-->
        maincpu.pw@(FF844E+88)=0608, maincpu.pb@(FF844E+8D)=06 <!--R+PPP/KKK-->
      </action>
      <action condition="temp0 == 10 and (maincpu.rw@(FF844E+392) band 2) gt 0"> <!--Akuma L,D,DL+PPP/KKK-->
        maincpu.pw@(FF844E+9E)=0608, maincpu.pb@(FF844E+A5)=05 <!--L+PPP/KKK-->
      </action>
      <action condition="temp0 == 10 and (maincpu.rw@(FF844E+392) band 1) gt 0"> <!--Akuma R,D,DR+PPP/KKK-->
        maincpu.pw@(FF844E+9E)=0608, maincpu.pb@(FF844E+A5)=06 <!--L+PPP/KKK-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy 360 & half-circle moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391), temp1=maincpu.rb@(FF844E+3B6)</action> <!--char and mode-->
      <action condition="maincpu.rb@(FF844E+3BD) != 0">temp0=10</action> <!--Akuma-->
      <action condition="maincpu.rb@FF844E == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 10)"> <!--Ryu/Akuma B,DB,D,DF,F+P-->
        maincpu.pb@(FF844E+E0)=08
      </action>
      <action condition="temp0 == 1 and temp1 == 0"> <!--E.Honda F,DF,D,B+P-->
        maincpu.pb@(FF844E+96)=06
      </action>
      <action condition="temp0 == 4 and temp1 == 0"> <!--Ken B,DB,D,DF,F+K-->
        maincpu.pb@(FF844E+EA)=08
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim-->
        maincpu.pb@(FF844E+84)=08, <!--B,DB,D,DF,F+P-->
        maincpu.pb@(FF844E+9A)=08  <!--B,DB,D,DF,F+K-->
      </action>
      <action condition="temp0 == C"> <!--Cammy B,DB,F+P-->
        maincpu.pb@(FF844E+A2)=04
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF844E+12) != 0"> <!--Zangief 360+P/K-->
        maincpu.pd@(FF844E+80)=06060800, <!--L+P from the left-->
        maincpu.pd@(FF844E+9B)=06040800  <!--L+K from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF844E+12) == 0"> <!--Zangief 360+P/K-->
        maincpu.pd@(FF844E+80)=06070800, <!--R+P from the right-->
        maincpu.pd@(FF844E+9B)=06050800  <!--R+K from the right-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF844E+12) != 0"> <!--T.Hawk 360+P-->
        maincpu.pd@(FF844E+91)=04060800 <!--L+P from the left-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF844E+12) == 0"> <!--T.Hawk 360+P-->
        maincpu.pd@(FF844E+91)=05060800 <!--R+P from the right-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,DF,D & tiger-knee moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391), temp1=maincpu.rb@(FF844E+3B6)</action> <!--char and mode-->
      <action condition="maincpu.rb@(FF844E+3BD) != 0">temp0=10</action> <!--Akuma-->
      <action condition="maincpu.rb@FF844E == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 4 and temp1 == 0"> <!--Ken F,DF,D+K-->
        maincpu.pb@(FF844E+E8)=04
      </action>
      <action condition="temp0 == 6"> <!--Zangief F,DF,D+P-->
        maincpu.pb@(FF844E+B3)=04
      </action>
      <action condition="temp0 == 9"> <!--Sagat D,F,UF+K-->
        maincpu.pb@(FF844E+84)=04
      </action>
      <action condition="temp0 == C and temp1 == 0"> <!--Cammy B,D,DF,UF+P-->
        maincpu.pb@(FF844E+A9)=06
      </action>
      <action condition="temp0 == E and temp1 == 0"> <!--Fei Long B,D,DF,UF+K-->
        maincpu.pb@(FF844E+B4)=06
      </action>
    </script>
  </cheat>

  <cheat desc="Easy super moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391)</action> <!--character-->
      <action condition="maincpu.rb@FF844E == 0 or maincpu.rb@(FF844E+3BD) != 0 or maincpu.rb@(FF844E+3B6) != 0">
        temp0=FF <!--match inactive, Akuma, or old mode-->
      </action>
      <action condition="temp0 == 0"> <!--Ryu D,DF,F,D,DF,F+P-->
        maincpu.pb@(FF844E+A0)=0A
      </action>
      <action condition="temp0 == 1"> <!--E.Honda _B,F,B,F+P-->
        maincpu.pb@(FF844E+94)=0A
      </action>
      <action condition="temp0 == 2"> <!--Blanka _B,F,B,F+P-->
        maincpu.pb@(FF844E+C1)=0A
      </action>
      <action condition="temp0 == 3"> <!--Guile _D,R,B,U+K-->
        maincpu.pb@(FF844E+94)=0A
      </action>
      <action condition="temp0 == 4"> <!--Ken D,DF,F,D,DF+P-->
        maincpu.pb@(FF844E+A0)=08
      </action>
      <action condition="temp0 == 5"> <!--Chun Li _B,F,B,F+K-->
        maincpu.pb@(FF844E+BF)=0A
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF844E+12) != 0"> <!--Zangief 720+P-->
        maincpu.pw@(FF844E+AC)=0E06 <!--L+P from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF844E+12) == 0"> <!--Zangief 720+P-->
        maincpu.pw@(FF844E+AC)=0E07 <!--R+P from the right-->
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim B,DB,D,DF,F,B,DB,D,DF,F+P-->
        maincpu.pb@(FF844E+96)=10
      </action>
      <action condition="temp0 == 8"> <!--Dictator _B,F,B,F+K-->
        maincpu.pb@(FF844E+C5)=0A
      </action>
      <action condition="temp0 == 9"> <!--Sagat D,DF,F,D,DF+P/K-->
        maincpu.pb@(FF844E+9E)=08
      </action>
      <action condition="temp0 == A"> <!--Boxer _B,F,B,F+P-->
        maincpu.pb@(FF844E+D4)=0A
      </action>
      <action condition="temp0 == B"> <!--Claw _D,R,B,U+K-->
        maincpu.pb@(FF844E+99)=0A
      </action>
      <action condition="temp0 == C"> <!--Cammy D,DF,F,D,DF+K-->
        maincpu.pb@(FF844E+A6)=08
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF844E+12) != 0"> <!--T.Hawk 720+P-->
        maincpu.pw@(FF844E+9E)=0E06 <!--L+P from the left-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF844E+12) == 0"> <!--T.Hawk 720+P-->
        maincpu.pw@(FF844E+9E)=0E07 <!--R+P from the right-->
      </action>
      <action condition="temp0 == E"> <!--Fei Long D,DF,F,D,DF,F+P-->
        maincpu.pb@(FF844E+B0)=0A
      </action>
      <action condition="temp0 == F"> <!--Dee Jay _B,F,B,F+K-->
        maincpu.pb@(FF844E+AF)=0A
      </action>
    </script>
  </cheat>
[hsf2] For PL2, replace all FF833C with FF873C.

Code: Select all

  <cheat desc="Easy QCF & QCB moves moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF833C+32B), temp1=maincpu.rb@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4 or temp0 == 10) and temp1 le 2"> <!--Ryu/Ken/Akuma-->
        maincpu.pb@(FF833C+90)=04, <!--D,DB,B+K-->
        maincpu.pb@(FF833C+94)=04  <!--D,DF,F+P-->
      </action>
      <action condition="(temp0 == 0 or temp0 == 4) and temp1 gt 2"> <!--old Ryu/Ken-->
        maincpu.pb@(FF833C+90)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF833C+98)=04  <!--D,DB,B+K-->
      </action>
      <action condition="temp0 == 4 and temp1 == 0"> <!--Ken D,DF,F+K-->
        maincpu.pb@(FF833C+E6)=04
      </action>
      <action condition="temp0 == 7 and temp1 le 2"> <!--Dhalsim D,DF,F+P-->
        maincpu.pb@(FF833C+80)=04
      </action>
      <action condition="temp0 == 7 and temp1 gt 2"> <!--old Dhalsim D,DF,F+P-->
        maincpu.pd@(FF833C+90)=02080004
      </action>
      <action condition="temp0 == 9 and temp1 le 2"> <!--Sagat-->
        maincpu.pb@(FF833C+88)=04, <!--D,DF,F+P-->
        maincpu.pb@(FF833C+8C)=04  <!--D,DF,F+K-->
      </action>
      <action condition="temp0 == 9 and temp1 gt 2"> <!--old Sagat-->
        maincpu.pd@(FF833C+90)=02080004, <!--D,DF,F+P-->
        maincpu.pd@(FF833C+A0)=02080004  <!--D,DF,F+K-->
      </action>
      <action condition="temp0 == C"> <!--Cammy D,DF,F+K-->
        maincpu.pb@(FF833C+96)=04
      </action>
      <action condition="temp0 == E"> <!--Fei Long D,DF,F+P-->
        maincpu.pb@(FF833C+90)=04,
        maincpu.pb@(FF833C+A0)=04
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,D,DF & B,D,DB moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF833C+32B), temp1=maincpu.rb@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 4 or temp0 == 10) and temp1 le 2"> <!--Ryu/Ken/Akuma F,D,DF+P-->
        maincpu.pb@(FF833C+98)=04
      </action>
      <action condition="(temp0 == 0 or temp0 == 4) and temp1 gt 2"> <!--old Ryu/Ken F,D,DF+P-->
        maincpu.pb@(FF833C+A0)=04
      </action>
      <action condition="temp0 == 9 and temp1 le 2"> <!--Sagat F,D,DF+P-->
        maincpu.pb@(FF833C+80)=04
      </action>
      <action condition="temp0 == 9 and temp1 gt 2"> <!--old Sagat F,D,DF+P-->
        maincpu.pd@(FF833C+98)=02080004
      </action>
      <action condition="temp0 == C"> <!--Cammy F,D,DF+K-->
        maincpu.pb@(FF833C+92)=04
      </action>
      <action condition="temp0 == D"> <!--T.Hawk F,D,DF+P-->
        maincpu.pb@(FF833C+8D)=04
      </action>
      <action condition="temp0 == E"> <!--Fei Long B,D,DB+K-->
        maincpu.pb@(FF833C+94)=04
      </action>
      <action condition="temp0 == 7 and temp1 le 2 and (maincpu.rw@(FF833C+314) band 2) gt 0">
        maincpu.pw@(FF833C+88)=0608, maincpu.pb@(FF833C+8D)=05 <!--Dhalsim L,D,DL+PPP/KKK-->
      </action>
      <action condition="temp0 == 7 and temp1 le 2 and (maincpu.rw@(FF833C+314) band 1) gt 0">
        maincpu.pw@(FF833C+88)=0608, maincpu.pb@(FF833C+8D)=06 <!--Dhalsim R,D,DR+PPP/KKK-->
      </action>
      <action condition="temp0 == 7 and temp1 eq 8 and (maincpu.rw@(FF833C+314) band 2) gt 0">
        maincpu.pw@(FF833C+C8)=0608, maincpu.pb@(FF833C+D3)=05 <!--HF Dhalsim L,D,DL+PPP/KKK-->
      </action>
      <action condition="temp0 == 7 and temp1 eq 8 and (maincpu.rw@(FF833C+314) band 1) gt 0">
        maincpu.pw@(FF833C+C8)=0608, maincpu.pb@(FF833C+D3)=06 <!--HF Dhalsim R,D,DR+PPP/KKK-->
      </action>
      <action condition="temp0 == 10 and (maincpu.rw@(FF833C+314) band 2) gt 0"> <!--Akuma L,D,DL+PPP/KKK-->
        maincpu.pw@(FF833C+9E)=0608, maincpu.pb@(FF833C+A5)=05 <!--L+PPP/KKK-->
      </action>
      <action condition="temp0 == 10 and (maincpu.rw@(FF833C+314) band 1) gt 0"> <!--Akuma R,D,DR+PPP/KKK-->
        maincpu.pw@(FF833C+9E)=0608, maincpu.pb@(FF833C+A5)=06 <!--L+PPP/KKK-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy 360 & half-circle moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF833C+32B), temp1=maincpu.rb@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="(temp0 == 0 or temp0 == 10) and temp1 le 2"> <!--Ryu/Akuma B,DB,D,DF,F+P-->
        maincpu.pb@(FF833C+E0)=08
      </action>
      <action condition="temp0 == 1 and temp1 == 0"> <!--E.Honda F,DF,D,B+P-->
        maincpu.pb@(FF833C+96)=06
      </action>
      <action condition="temp0 == 4 and temp1 == 0"> <!--Ken B,DB,D,DF,F+K-->
        maincpu.pb@(FF833C+EA)=08
      </action>
      <action condition="temp0 == 5 and temp1 == 8"> <!--HF Chun Li B,DB,D,DF,F+P-->
        maincpu.pb@(FF833C+B0)=08
      </action>
      <action condition="temp0 == 7 and temp1 le 2"> <!--Dhalsim-->
        maincpu.pb@(FF833C+84)=08, <!--B,DB,D,DF,F+P-->
        maincpu.pb@(FF833C+9A)=08  <!--B,DB,D,DF,F+K-->
      </action>
      <action condition="temp0 == 7 and temp1 gt 2"> <!--old Dhalsim-->
        maincpu.pd@(FF833C+98)=02080008 <!--B,DB,D,DF,F+P-->
      </action>
      <action condition="temp0 == C"> <!--Cammy B,DB,F+P-->
        maincpu.pb@(FF833C+A2)=04
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF833C+12) != 0"> <!--Zangief 360+P/K-->
        maincpu.pd@(FF833C+80)=06060800, <!--L+P from the left-->
        maincpu.pd@(FF833C+9B)=06040800  <!--L+K from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF833C+12) == 0"> <!--Zangief 360+P/K-->
        maincpu.pd@(FF833C+80)=06070800, <!--R+P from the right-->
        maincpu.pd@(FF833C+9B)=06050800  <!--R+K from the right-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF833C+12) != 0"> <!--T.Hawk 360+P-->
        maincpu.pd@(FF833C+91)=04060800 <!--L+P from the left-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF833C+12) == 0"> <!--T.Hawk 360+P-->
        maincpu.pd@(FF833C+91)=05060800 <!--R+P from the right-->
      </action>
    </script>
  </cheat>

  <cheat desc="Easy F,DF,D & tiger-knee moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF833C+32B), temp1=maincpu.rb@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 4 and temp1 == 0"> <!--Ken F,DF,D+K-->
        maincpu.pb@(FF833C+E8)=04
      </action>
      <action condition="temp0 == 6 and temp1 == 0"> <!--Zangief F,DF,D+P-->
        maincpu.pb@(FF833C+B3)=04
      </action>
      <action condition="temp0 == 9 and temp1 le 2"> <!--Sagat D,F,UF+K-->
        maincpu.pb@(FF833C+84)=04
      </action>
      <action condition="temp0 == 9 and temp1 gt 2"> <!--old Sagat D,F,UF+K-->
        maincpu.pd@(FF833C+A8)=02080004
      </action>
      <action condition="temp0 == C"> <!--Cammy B,D,DF,UF+P-->
        maincpu.pb@(FF833C+A9)=06
      </action>
      <action condition="temp0 == E"> <!--Fei Long B,D,DF,UF+K-->
        maincpu.pb@(FF833C+B4)=06
      </action>
    </script>
  </cheat>

  <cheat desc="Easy super moves PL1">
    <script state="run">
      <action>temp0=maincpu.rw@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 0"> <!--Ryu D,DF,F,D,DF,F+P-->
        maincpu.pb@(FF833C+A0)=0A
      </action>
      <action condition="temp0 == 1"> <!--E.Honda _B,F,B,F+P-->
        maincpu.pb@(FF833C+94)=0A
      </action>
      <action condition="temp0 == 2"> <!--Blanka _B,F,B,F+P-->
        maincpu.pb@(FF833C+C1)=0A
      </action>
      <action condition="temp0 == 3"> <!--Guile _D,R,B,U+K-->
        maincpu.pb@(FF833C+94)=0A
      </action>
      <action condition="temp0 == 4"> <!--Ken D,DF,F,D,DF+P-->
        maincpu.pb@(FF833C+A0)=08
      </action>
      <action condition="temp0 == 5"> <!--Chun Li _B,F,B,F+K-->
        maincpu.pb@(FF833C+BF)=0A
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF833C+12) != 0"> <!--Zangief 720+P-->
        maincpu.pw@(FF833C+AC)=0E06 <!--L+P from the left-->
      </action>
      <action condition="temp0 == 6 and maincpu.rb@(FF833C+12) == 0"> <!--Zangief 720+P-->
        maincpu.pw@(FF833C+AC)=0E07 <!--R+P from the right-->
      </action>
      <action condition="temp0 == 7"> <!--Dhalsim B,DB,D,DF,F,B,DB,D,DF,F+P-->
        maincpu.pb@(FF833C+96)=10
      </action>
      <action condition="temp0 == 8"> <!--Dictator _B,F,B,F+K-->
        maincpu.pb@(FF833C+C5)=0A
      </action>
      <action condition="temp0 == 9"> <!--Sagat D,DF,F,D,DF+P/K-->
        maincpu.pb@(FF833C+9E)=08
      </action>
      <action condition="temp0 == A"> <!--Boxer _B,F,B,F+P-->
        maincpu.pb@(FF833C+D4)=0A
      </action>
      <action condition="temp0 == B"> <!--Claw _D,R,B,U+K-->
        maincpu.pb@(FF833C+99)=0A
      </action>
      <action condition="temp0 == C"> <!--Cammy D,DF,F,D,DF+K-->
        maincpu.pb@(FF833C+A6)=08
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF833C+12) != 0"> <!--T.Hawk 720+P-->
        maincpu.pw@(FF833C+9E)=0E06 <!--L+P from the left-->
      </action>
      <action condition="temp0 == D and maincpu.rb@(FF833C+12) == 0"> <!--T.Hawk 720+P-->
        maincpu.pw@(FF833C+9E)=0E07 <!--R+P from the right-->
      </action>
      <action condition="temp0 == E"> <!--Fei Long D,DF,F,D,DF,F+P-->
        maincpu.pb@(FF833C+B0)=0A
      </action>
      <action condition="temp0 == F"> <!--Dee Jay _B,F,B,F+K-->
        maincpu.pb@(FF833C+AF)=0A
      </action>
    </script>
  </cheat>
Last edited by d9x on Sun Jun 12, 2011 9:56 am, edited 2 times in total.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Proper stage select, including bonus stages.

To get something as the first stage, you have to apply right after picking your character. If you apply it during a match, the next stage will be the one below the chosen stage, or the end sequence if it's the last stage. You can't go directly from char select to the ending.

[sf2]

Code: Select all

  <cheat desc="Set current stage"> <comment>To set the first stage, use just after picking character.</comment>
    <parameter>
      <item value="0x0000">Stage 1</item>
      <item value="0x0100">Stage 2</item>
      <item value="0x0200">Stage 3</item>
      <item value="0x0300">Bonus stage: car</item>
      <item value="0x0301">Stage 4</item>
      <item value="0x0401">Stage 5</item>
      <item value="0x0501">Stage 6</item>
      <item value="0x0601">Bonus stage: barrels</item>
      <item value="0x0602">Stage 7</item>
      <item value="0x0702">Stage 8 (Boxer)</item>
      <item value="0x0802">Stage 9 (Claw)</item>
      <item value="0x0902">Bonus stage: drums</item>
      <item value="0x0903">Stage 10 (Sagat)</item>
      <item value="0x0A03">Stage 11 (Dictator)</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@FF89CD=param/100, maincpu.pw@FF89F9=param</action>
      <action condition="param/100 gt 08">maincpu.pb@FF89F4=1</action>
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="Set current stage"> <comment>To set the first stage, use just after picking character.</comment>
    <parameter>
      <item value="0x0000">Stage 1</item>
      <item value="0x0100">Stage 2</item>
      <item value="0x0200">Stage 3</item>
      <item value="0x0300">Bonus stage: car</item>
      <item value="0x0301">Stage 4</item>
      <item value="0x0401">Stage 5</item>
      <item value="0x0501">Stage 6</item>
      <item value="0x0601">Bonus stage: barrels</item>
      <item value="0x0602">Stage 7</item>
      <item value="0x0702">Stage 8</item>
      <item value="0x0802">Stage 9 (Boxer)</item>
      <item value="0x0902">Bonus stage: drums</item>
      <item value="0x0903">Stage 10 (Claw)</item>
      <item value="0x0A03">Stage 11 (Sagat)</item>
      <item value="0x0B03">Stage 12 (Dictator)</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@FF89C1=param/100, maincpu.pw@FF89ED=param</action>
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Set current stage"> <comment>To set the first stage, use just after picking character.</comment>
    <parameter>
      <item value="0x0000">Stage 1</item>
      <item value="0x0100">Stage 2</item>
      <item value="0x0200">Stage 3</item>
      <item value="0x0300">Bonus stage: car</item>
      <item value="0x0301">Stage 4</item>
      <item value="0x0401">Stage 5</item>
      <item value="0x0501">Stage 6</item>
      <item value="0x0601">Bonus stage: barrels</item>
      <item value="0x0602">Stage 7</item>
      <item value="0x0702">Stage 8</item>
      <item value="0x0802">Stage 9 (Boxer)</item>
      <item value="0x0902">Bonus stage: drums</item>
      <item value="0x0903">Stage 10 (Claw)</item>
      <item value="0x0A03">Stage 11 (Sagat)</item>
      <item value="0x0B03">Stage 12 (Dictator)</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@FF8BD1=param/100, maincpu.pw@FF8C01=param</action>
    </script>
  </cheat>
[ssf2t]

Code: Select all

  <cheat desc="Set current stage"> <comment>To set the first stage, use just after picking character.</comment>
    <parameter>
      <item value="0x00">Stage 1</item>
      <item value="0x01">Stage 2</item>
      <item value="0x02">Stage 3</item>
      <item value="0x03">Stage 4</item>
      <item value="0x04">Stage 5</item>
      <item value="0x05">Stage 6</item>
      <item value="0x06">Stage 7</item>
      <item value="0x07">Stage 8</item>
      <item value="0x08">Stage 9 (Boxer)</item>
      <item value="0x09">Stage 10 (Claw)</item>
      <item value="0x0A">Stage 11 (Sagat)</item>
      <item value="0x0B">Stage 12 (Dictator)</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@FF8C51=param</action>
    </script>
  </cheat>
In [hsf2] what you set is the next stage, and the input period is too short to manipulate the first stage.

Code: Select all

  <cheat desc="Set next stage"> <comment>Use after picking character.</comment>
    <parameter>
      <item value="0x00">Stage 1</item>
      <item value="0x01">Stage 2</item>
      <item value="0x02">Stage 3</item>
      <item value="0x03">Stage 4</item>
      <item value="0x04">Stage 5</item>
      <item value="0x05">Stage 6</item>
      <item value="0x06">Stage 7</item>
      <item value="0x07">Stage 8</item>
      <item value="0x08">Stage 9 (Boxer)</item>
      <item value="0x09">Stage 10 (Claw)</item>
      <item value="0x0A">Stage 11 (Sagat)</item>
      <item value="0x0B">Stage 12 (Dictator)</item>
    </parameter>
    <script state="change">
      <action>maincpu.pw@(FF833C+346)=param, maincpu.pw@(FF873C+346)=param</action>
    </script>
  </cheat>
This consolidates "Next level = Last level" & "Lose a credit = Last level" for sf2, sf2ce and sf2hf, "Select Next Fight Now!" for ssf2, and "Go to Final Stage Next" for ssf2t.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

(Updated all special move and charge codes above.)

Here's the codes for the last type of special move. There are no codes like this in the current version.

[sf2] For PL2, replace all FF83C6 with FF86C6.

Code: Select all

  <cheat desc="Easy button tap moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83C6+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83C6 == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and maincpu.rb@(FF83C6+98) lt 6"> <!--E.Honda mash LP-->
        maincpu.rb@(FF83C6+98)=6
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83C6+9A) lt 6"> <!--E.Honda mash MP-->
        maincpu.rb@(FF83C6+9A)=6
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83C6+9C) lt 6"> <!--E.Honda mash HP-->
        maincpu.rb@(FF83C6+9C)=6
      </action>
      <action condition="temp0 == 2 and maincpu.rb@(FF83C6+9C) lt 8"> <!--Blanka mash LP-->
        maincpu.rb@(FF83C6+9C)=8
      </action>
      <action condition="temp0 == 2 and maincpu.rb@(FF83C6+9E) lt 8"> <!--Blanka mash MP-->
        maincpu.rb@(FF83C6+9E)=8
      </action>
      <action condition="temp0 == 2 and maincpu.rb@(FF83C6+A0) lt 8"> <!--Blanka mash HP-->
        maincpu.rb@(FF83C6+A0)=8
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF83C6+9A) lt 8"> <!--Chun Li mash LK-->
        maincpu.rb@(FF83C6+9A)=8
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF83C6+9C) lt 8"> <!--Chun Li mash MK-->
        maincpu.rb@(FF83C6+9C)=8
      </action>
      <action condition="temp0 == 5 and maincpu.rb@(FF83C6+9E) lt 8"> <!--Chun Li mash HK-->
        maincpu.rb@(FF83C6+9E)=8
      </action>
    </script>
  </cheat>
[sf2ce], [sf2hf] For PL2, replace all FF83BE with FF86BE.

Code: Select all

  <cheat desc="Easy button tap moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83BE+291)</action> <!--character-->
      <action condition="maincpu.rb@FF83BE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and maincpu.rb@(FF83BE+9A) lt 2"> <!--E.Honda mash LP-->
        maincpu.rb@(FF83BE+9A)=2
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83BE+9C) lt 2"> <!--E.Honda mash MP-->
        maincpu.rb@(FF83BE+9C)=2
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83BE+9E) lt 2"> <!--E.Honda mash HP-->
        maincpu.rb@(FF83BE+9E)=2
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF83BE+9A) lt 3"> <!--Blanka LP/Chun Li LK-->
        maincpu.rb@(FF83BE+9A)=3
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF83BE+9C) lt 3"> <!--Blanka MP/Chun Li MK-->
        maincpu.rb@(FF83BE+9C)=3
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF83BE+9E) lt 3"> <!--Blanka HP/Chun Li HK-->
        maincpu.rb@(FF83BE+9E)=3
      </action>
    </script>
  </cheat>
[ssf2] For PL2, replace all FF83CE with FF87CE.

Code: Select all

  <cheat desc="Easy button tap moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF83CE+391)</action> <!--character-->
      <action condition="maincpu.rb@FF83CE == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and maincpu.rb@(FF83CE+9A) lt 2"> <!--E.Honda mash LP-->
        maincpu.rb@(FF83CE+9A)=2
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83CE+9C) lt 2"> <!--E.Honda mash MP-->
        maincpu.rb@(FF83CE+9C)=2
      </action>
      <action condition="temp0 == 1 and maincpu.rb@(FF83CE+9E) lt 2"> <!--E.Honda mash HP-->
        maincpu.rb@(FF83CE+9E)=2
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF83CE+9A) lt 3"> <!--Blanka LP/Chun Li LK-->
        maincpu.rb@(FF83CE+9A)=3
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF83CE+9C) lt 3"> <!--Blanka MP/Chun Li MK-->
        maincpu.rb@(FF83CE+9C)=3
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF83CE+9E) lt 3"> <!--Blanka HP/Chun Li HK-->
        maincpu.rb@(FF83CE+9E)=3
      </action>
    </script>
  </cheat>
[ssf2t] For PL2, replace all FF844E with FF884E.

Code: Select all

  <cheat desc="Easy button tap moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF844E+391), temp1=maincpu.rb@(FF844E+3B6)</action> <!--char and mode-->
      <action condition="maincpu.rb@(FF844E+3BD) != 0">temp0=10</action> <!--Akuma-->
      <action condition="maincpu.rb@FF844E == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF844E+C6) lt 2"> <!--E.Honda mash LP-->
        maincpu.rb@(FF844E+C6)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF844E+C8) lt 2"> <!--E.Honda mash MP-->
        maincpu.rb@(FF844E+C8)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF844E+CA) lt 2"> <!--E.Honda mash HP-->
        maincpu.rb@(FF844E+CA)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 1 and maincpu.rb@(FF844E+9A) lt 3"> <!--old E.Honda mash LP-->
        maincpu.rb@(FF844E+9A)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 1 and maincpu.rb@(FF844E+9C) lt 3"> <!--old E.Honda mash MP-->
        maincpu.rb@(FF844E+9C)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 1 and maincpu.rb@(FF844E+9E) lt 3"> <!--old E.Honda mash HP-->
        maincpu.rb@(FF844E+9E)=2
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF844E+9A) lt 3"> <!--Blanka LP/Chun Li LK-->
        maincpu.rb@(FF844E+9A)=3
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF844E+9C) lt 3"> <!--Blanka MP/Chun Li MK-->
        maincpu.rb@(FF844E+9C)=3
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and maincpu.rb@(FF844E+9E) lt 3"> <!--Blanka HP/Chun Li HK-->
        maincpu.rb@(FF844E+9E)=3
      </action>
    </script>
  </cheat>
[hsf2] For PL2, replace all FF833C with FF873C.

Code: Select all

  <cheat desc="Easy button tap moves PL1">
    <script state="run">
      <action>temp0=maincpu.rb@(FF833C+32B), temp1=maincpu.rb@(FF833C+32A)</action> <!--character and mode-->
      <action condition="maincpu.rb@FF833C == 0">temp0=FF</action> <!--match inactive-->
      <action condition="temp0 == 1 and temp1 == 4 and maincpu.rb@(FF833C+9A) lt 2"> <!--WW E.Honda mash LP-->
        maincpu.rb@(FF833C+9A)=6
      </action>
      <action condition="temp0 == 1 and temp1 == 4 and maincpu.rb@(FF833C+9C) lt 2"> <!--WW E.Honda mash MP-->
        maincpu.rb@(FF833C+9C)=6
      </action>
      <action condition="temp0 == 1 and temp1 == 4 and maincpu.rb@(FF833C+9E) lt 2"> <!--WW E.Honda mash HP-->
        maincpu.rb@(FF833C+9E)=6
      </action>
      <action condition="temp0 == 1 and (temp1 == 2 or temp1 == 6 or temp1 == 8) and maincpu.rb@(FF833C+9A) lt 2">
        maincpu.rb@(FF833C+9A)=2 <!--old E.Honda mash LP-->
      </action>
      <action condition="temp0 == 1 and (temp1 == 2 or temp1 == 6 or temp1 == 8) and maincpu.rb@(FF833C+9C) lt 2">
        maincpu.rb@(FF833C+9C)=2 <!--old E.Honda mash MP-->
      </action>
      <action condition="temp0 == 1 and (temp1 == 2 or temp1 == 6 or temp1 == 8) and maincpu.rb@(FF833C+9E) lt 2">
        maincpu.rb@(FF833C+9E)=2 <!--old E.Honda mash HP-->
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF833C+C6) lt 2"> <!--E.Honda mash LP-->
        maincpu.rb@(FF833C+C6)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF833C+C8) lt 2"> <!--E.Honda mash MP-->
        maincpu.rb@(FF833C+C8)=2
      </action>
      <action condition="temp0 == 1 and temp1 == 0 and maincpu.rb@(FF833C+CA) lt 2"> <!--E.Honda mash HP-->
        maincpu.rb@(FF833C+CA)=2
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and temp1 == 4 and maincpu.rb@(FF833C+9A) lt 3">
        maincpu.rb@(FF833C+9A)=8 <!--WW Blanka LP/Chun Li LK-->
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and temp1 == 4 and maincpu.rb@(FF833C+9C) lt 3">
        maincpu.rb@(FF833C+9C)=8 <!--WW Blanka MP/Chun Li MK-->
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and temp1 == 4 and maincpu.rb@(FF833C+9E) lt 3">
        maincpu.rb@(FF833C+9E)=8 <!--WW Blanka HP/Chun Li HK-->
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and temp1 != 4 and maincpu.rb@(FF833C+9A) lt 3">
        maincpu.rb@(FF833C+9A)=3 <!--Blanka LP/Chun Li LK-->
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and temp1 != 4 and maincpu.rb@(FF833C+9C) lt 3">
        maincpu.rb@(FF833C+9C)=3 <!--Blanka MP/Chun Li MK-->
      </action>
      <action condition="(temp0 == 2 or temp0 == 5) and temp1 != 4 and maincpu.rb@(FF833C+9E) lt 3">
        maincpu.rb@(FF833C+9E)=3 <!--Blanka HP/Chun Li HK-->
      </action>
    </script>
  </cheat>
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Here are the codes to control what ending you get in single player.

[sf2]

Code: Select all

  <cheat desc="Select ending">
    <parameter>
      <item value="1">No losses</item>
      <item value="2">No continues</item>
      <item value="3">Normal</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@FF8321=00, maincpu.pb@FF8A19=00</action>
      <action condition="param == 2">maincpu.pb@FF8321=00, maincpu.pb@FF8A19=01</action>
      <action condition="param == 3">maincpu.pb@FF8321=01</action>
    </script>
  </cheat>
[sf2ce], [sf2hf]

Code: Select all

  <cheat desc="Select ending">
    <parameter>
      <item value="1">No losses</item>
      <item value="2">No continues</item>
      <item value="3">Normal</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@FF831D=00, maincpu.pb@FF8A0D=00</action>
      <action condition="param == 2">maincpu.pb@FF831D=00, maincpu.pb@FF8A0D=01</action>
      <action condition="param == 3">maincpu.pb@FF831D=01</action>
    </script>
  </cheat>
[ssf2]

Code: Select all

  <cheat desc="Select ending">
    <parameter>
      <item value="1">No losses</item>
      <item value="2">No continues</item>
      <item value="3">Normal</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@FF831A=00, maincpu.pb@FF8C21=00</action>
      <action condition="param == 2">maincpu.pb@FF831A=00, maincpu.pb@FF8C21=01</action>
      <action condition="param == 3">maincpu.pb@FF831A=01</action>
    </script>
  </cheat>
[ssf2t] (consolidates "Normal Ending"/"Special Ending")

Code: Select all

  <cheat desc="Select ending">
    <parameter>
      <item value="1">No losses (Akuma/Gouki)</item>
      <item value="2">No continues (Akuma/Gouki)</item>
      <item value="3">Normal (Dictator)</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@FF831A=00, maincpu.pb@FF8CA1=00</action>
      <action condition="param == 2">maincpu.pb@FF831A=00, maincpu.pb@FF8CA1=01</action>
      <action condition="param == 3">maincpu.pb@FF831A=01</action>
    </script>
  </cheat>
[hsf2]

Code: Select all

  <cheat desc="Select ending">
    <parameter>
      <item value="1">No losses (Akuma/Gouki)</item>
      <item value="2">No continues (Dictator)</item>
      <item value="3">Normal (Dictator)</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pw@(FF833C+34E)=0101, maincpu.pw@(FF873C+34E)=0101</action>
      <action condition="param == 2">maincpu.pw@(FF833C+34E)=0100, maincpu.pw@(FF873C+34E)=0100</action>
      <action condition="param == 3">maincpu.pb@(FF833C+34E)=00, maincpu.pb@(FF873C+34E)=00</action>
    </script>
  </cheat>
User avatar
Pugsy
Posts: 3638
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 12 times
Contact:

Re: improved SF2 series codes

Post by Pugsy »

Strewth!!! Are you trying to kill me!

These are going to take an age to add, so many clones :(

Nice work though.....groan ;) Please don't edit any cheats above this message as I will miss them.


BTW, I notice in the above you are using quite a lot of maincpu.r - which is normally just ROM cheats. I take it maincpu.p doesn't work for those?


EDIT: I'm currently changing your select current/next stage select cheats into select starting stage cheats (working from the bottom)
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.259 XML cheat collection (6 OCTOBER 2023) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/q4dHGZ6K#i-EUiqIjH ... KMz7hnbTfw (ZIP Archive 3.76MB)
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Haha, mostly I got tired of too many esoteric codes spamming up the list when I was looking for the basics.

I had thought that "r" was for "read" and "p" was for "poke" (or write). Turns out they mean something else huh? "p" should work in place of "r" then. Every one of these is a straight RAM write.

The stage selector could be current/next depending on if it's change/run. It's kind of confusing. The important thing is to make it consistent.
User avatar
Pugsy
Posts: 3638
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 12 times
Contact:

Re: improved SF2 series codes

Post by Pugsy »

d9x wrote:Haha, mostly I got tired of too many esoteric codes spamming up the list when I was looking for the basics.
haha, tell me about it....I added those cheats blind and I didn't understand what many of them did. Not that I understand what yours do either, but I know those fighter fanatics will certainly know what they do and it will certainly tidy up the cheat lists.
d9x wrote:I had thought that "r" was for "read" and "p" was for "poke" (or write). Turns out they mean something else huh? "p" should work in place of "r" then. Every one of these is a straight RAM write.

No problem, it can be confusing as 'r' is down as RAM write in the cheat source, but this equates to the old :A000000: type and there are probably under 100 cheats (cheats not games) that use it for RAM writes. This post gives a little more info on the regions:-

viewtopic.php?p=13271

d9x wrote:The stage selector could be current/next depending on if it's change/run. It's kind of confusing. The important thing is to make it consistent.
It the majority of cases it should just be a matter of adding some conditions to check if it's trying to poke level 1 values and then the cheat has no grey area on how it works (hopefully!). It's been on my todo list for a while to replace current and next level cheats with starting level cheats for the reason they can be inconsistent and they often need comments - it's either a matter of introducing conditions or making them into ROM cheats for those games that poke/read the addresses too fast

Eg for sf2:

Code: Select all

  <cheat desc="Select Starting Stage">
    <parameter>
      <item value="0x0000">Stage 1</item>
      <item value="0x0100">Stage 2</item>
      <item value="0x0200">Stage 3</item>
      <item value="0x0300">Bonus stage: car</item>
      <item value="0x0301">Stage 4</item>
      <item value="0x0401">Stage 5</item>
      <item value="0x0501">Stage 6</item>
      <item value="0x0601">Bonus stage: barrels</item>
      <item value="0x0602">Stage 7</item>
      <item value="0x0702">Stage 8 (Boxer)</item>
      <item value="0x0802">Stage 9 (Claw)</item>
      <item value="0x0902">Bonus stage: drums</item>
      <item value="0x0903">Stage 10 (Sagat)</item>
      <item value="0x0A03">Stage 11 (Dictator)</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.pw@FF89F9==0000">maincpu.pb@FF89CD=param/100, maincpu.pw@FF89F9=param</action>
      <action condition="param GT 0802">maincpu.pb@FF89F4=01</action>
    </script>
  </cheat>
Eg for hsf2:

Code: Select all

  <cheat desc="Select Starting Stage">
    <parameter>
      <item value="0x00">Stage 1</item>
      <item value="0x01">Stage 2</item>
      <item value="0x02">Stage 3</item>
      <item value="0x03">Stage 4</item>
      <item value="0x04">Stage 5</item>
      <item value="0x05">Stage 6</item>
      <item value="0x06">Stage 7</item>
      <item value="0x07">Stage 8</item>
      <item value="0x08">Stage 9 (Boxer)</item>
      <item value="0x09">Stage 10 (Claw)</item>
      <item value="0x0A">Stage 11 (Sagat)</item>
      <item value="0x0B">Stage 12 (Dictator)</item>
    </parameter>
    <script state="on">
      <action>temp0 =maincpu.rb@003FB7</action>
    </script>
    <script state="run">
      <action>maincpu.rb@003FB7=param</action>
    </script>
    <script state="off">
      <action>maincpu.rb@003FB7=temp0 </action>
    </script>
  </cheat>
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.259 XML cheat collection (6 OCTOBER 2023) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/q4dHGZ6K#i-EUiqIjH ... KMz7hnbTfw (ZIP Archive 3.76MB)
User avatar
Pugsy
Posts: 3638
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 12 times
Contact:

Re: improved SF2 series codes

Post by Pugsy »

Here are the codes to set the level of the turn around punch move. You can get rid of any old "Max Turnpunch" codes, particularly the ones from sf2ce... TAP did not have levels in that game. It was either charged or not.
You've not specified which are the codes for sf2ce, I take they are to be completely removed rather than replaced?
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.259 XML cheat collection (6 OCTOBER 2023) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/q4dHGZ6K#i-EUiqIjH ... KMz7hnbTfw (ZIP Archive 3.76MB)
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

Pugsy wrote:
Here are the codes to set the level of the turn around punch move. You can get rid of any old "Max Turnpunch" codes, particularly the ones from sf2ce... TAP did not have levels in that game. It was either charged or not.
You've not specified which are the codes for sf2ce, I take they are to be completely removed rather than replaced?
Right, that one doesn't belong in [sf2ce] at all. What probably happened is the person copied over the code from [sf2hf], since the addresses are all the same, without realizing that particular code doesn't apply to the earlier game.
Pugsy wrote:It the majority of cases it should just be a matter of adding some conditions to check if it's trying to poke level 1 values and then the cheat has no grey area on how it works (hopefully!). It's been on my todo list for a while to replace current and next level cheats with starting level cheats for the reason they can be inconsistent and they often need comments - it's either a matter of introducing conditions or making them into ROM cheats for those games that poke/read the addresses too fast
That's a pretty good way to do it I think. But in this case, the "stage 1" option should be disabled or else the player might accidentally be stuck there, since its value is the same as the condition check. And actually, if you make the [hsf2] stage select a "run" type, it's not necessary to mess with ROM:

Code: Select all

  <cheat desc="Select starting stage">
    <parameter>
      <item value="0x01">Stage 2</item>
      <item value="0x02">Stage 3</item>
      <item value="0x03">Stage 4</item>
      <item value="0x04">Stage 5</item>
      <item value="0x05">Stage 6</item>
      <item value="0x06">Stage 7</item>
      <item value="0x07">Stage 8</item>
      <item value="0x08">Stage 9 (Boxer)</item>
      <item value="0x09">Stage 10 (Claw)</item>
      <item value="0x0A">Stage 11 (Sagat)</item>
      <item value="0x0B">Stage 12 (Dictator)</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.pw@(FF833C+346)==0000">maincpu.pw@(FF833C+346)=param</action>
      <action condition="maincpu.pw@(FF873C+346)==0000">maincpu.pw@(FF873C+346)=param</action>
    </script>
  </cheat>
Or equivalently:

Code: Select all

  <cheat desc="Select starting stage">
    <parameter>
      <item value="0x00">Stage 1</item>
      <item value="0x01">Stage 2</item>
      <item value="0x02">Stage 3</item>
      <item value="0x03">Stage 4</item>
      <item value="0x04">Stage 5</item>
      <item value="0x05">Stage 6</item>
      <item value="0x06">Stage 7</item>
      <item value="0x07">Stage 8</item>
      <item value="0x08">Stage 9 (Boxer)</item>
      <item value="0x09">Stage 10 (Claw)</item>
      <item value="0x0A">Stage 11 (Sagat)</item>
      <item value="0x0B">Stage 12 (Dictator)</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.pw@(FF833C+346)==0000 and param!=0000">maincpu.pw@(FF833C+346)=param</action>
      <action condition="maincpu.pw@(FF873C+346)==0000 and param!=0000">maincpu.pw@(FF873C+346)=param</action>
    </script>
  </cheat>
And on the subject of [hsf2], here's a small improvement to the background select, which makes the map screen and announcer match the actual stage:

Code: Select all

  <cheat desc="Select Background">
    <parameter>
      <item value="0x00">Ryu</item>
      <item value="0x01">E.Honda</item>
      <item value="0x02">Blanka</item>
      <item value="0x03">Guile</item>
      <item value="0x04">Ken</item>
      <item value="0x05">Chun Li</item>
      <item value="0x06">Zangief</item>
      <item value="0x07">Dhalsim</item>
      <item value="0x08">M.Bison (Dictator)</item>
      <item value="0x09">Sagat</item>
      <item value="0x0A">Balrog (Boxer)</item>
      <item value="0x0B">Vega (Claw)</item>
      <item value="0x0C">Cammy</item>
      <item value="0x0D">T.Hawk</item>
      <item value="0x0E">Fei Long</item>
      <item value="0x0F">Dee Jay</item>
    </parameter>
    <script state="run">
      <action condition="maincpu.pw@FF8004 == 4 or maincpu.pw@FF8004 == E">
        maincpu.pw@FF8B64=param, <!--actual stage-->
        maincpu.pb@FFBDF2=param, maincpu.pb@FFBEB2=param, <!--text-->
        maincpu.pb@FFD0B2=param, <!--flag-->
        maincpu.pb@FFD295=param  <!--announcement-->
      </action>
    </script>
  </cheat>
User avatar
jion_wansu
Posts: 32
Joined: Mon Nov 21, 2005 4:11 am
Contact:

Re: improved SF2 series codes

Post by jion_wansu »

How do you go between versions of the characters with cheats. Example: From CE to HF during or before the match starts.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

You are talking about [hsf2]? You can set the mode with the byte before the character ID but if you pick forbidden character/mode combinations or try to change in a match the game crashes. It's kind of pointless since you literally pick it off a menu and there's no real reason to change.

Code: Select all

  <cheat desc="Select Mode PL1">
    <parameter>
      <item value="0x00">SuperT</item>
      <item value="0x02">Super</item>
      <item value="0x08">Turbo</item>
      <item value="0x06">Champ</item>
      <item value="0x04">Normal</item>
    </parameter>
    <script state="run">
      <action>maincpu.pb@FF8666=param</action>
    </script>
  </cheat>
User avatar
abogard
Posts: 42
Joined: Wed Nov 21, 2001 1:00 am
Location: Costa Rica - Land of the Rain Forest

Re: improved SF2 series codes

Post by abogard »

I don't know if anybody will read this but there is no harm in trying. I've been trying these superb codes and they do wonders but I wanted to report that at least in ssf2 the codes for the 360º motion for T. Hawk do not work, all they do is the F,D,DF motion from any position you tap any P button. Congratulations on this excellent set of codes.
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

The offsets for SSF2 Hawk are wrong. This should fix it (corrections underlined):
<cheat desc="Easy F,D,DF & B,D,DB moves PL1">
<script state="run">
...
<action condition="temp0 == D"> <!--T.Hawk F,D,DF+P-->
maincpu.pb@(FF83CE+92)=04
</action>
...
</script>
</cheat>

<cheat desc="Easy 360, half-circle & tiger-knee moves PL1">
<script state="run">
...
<action condition="temp0 == D and maincpu.rb@(FF83CE+12) != 0"> <!--T.Hawk 360+P-->
maincpu.pd@(FF83CE+99)=04060800 <!--L+P from the left-->
</action>
<action condition="temp0 == D and maincpu.rb@(FF83CE+12) == 0"> <!--T.Hawk 360+P-->
maincpu.pd@(FF83CE+99)=05060800 <!--R+P from the right-->
</action>
...
</script>
</cheat>
Hopefully it's just that but go ahead and report any other problems.

BTW, here is a discussion on these codes from awhile ago.
User avatar
abogard
Posts: 42
Joined: Wed Nov 21, 2001 1:00 am
Location: Costa Rica - Land of the Rain Forest

Re: improved SF2 series codes

Post by abogard »

Thank you very much, that fixed it alright, I've been testing some more and found also on ssf2 that the Easy Charge moves do not work at all with any of the characters, I mean I don't know if I'm using them right but with the old codes for example if the move was D,U+P you just pressed U+P and that was it, that is not the case here because the moves work but you have to do them the normal way which is not the point of the code, also looking at the codes I found that maybe (just maybe) there's a confussion at the point where it lists 3 of the bosses (the code says Dictator, Boxer and Claw, which I assume means M. Bison, Balrog and Vega) because the temp variable is being filled with a value that I think does not correspond to the one the code says its for, for example the codes stated as "Claw" look for the value 0B but the value for Vega is 0A, I mean, my knowledge in this is very limited but maybe you can take a look. What I'm really sure of is that none of them is working as intended. Thanks again for these wonderful cheats!
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SF2 series codes

Post by d9x »

The current Easy Charge codes work by reducing charge requirements to 1 frame. For example, Chun's fireball goes from hold B, charge, F+P to press B, F+P. It's possible to make them single direction+button like the other codes, but this way gives the user more control while still making it easy. Too "easy" can reduce the player's control and make it harder to play. For example, the Easy QCF code in SSF2T means Ryu cannot do his F+MP or F+HP moves, because a fireball comes out instead.

The weird boss names are used by the community to eliminate confusion from regional differences. (And here is the reason for the differences!)
Post Reply