improved SFA & dstlk 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.
Post Reply
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

improved SFA & dstlk series codes

Post by d9x »

dstlk and nwarr have the SF2 problem with infinite energy: the player doesn't respond properly to being hit. Applying conditionals that check the state before refilling the life solves this.

[dstlk], [nwarr]

Code: Select all

  <cheat desc="Infinite Energy PL1">
    <script state="run">
      <action condition="maincpu.rw@(FF8388+42) le 60 and (maincpu.rb@(FF8388+4) band 14) == 0">
        maincpu.pw@(FF8388+42)=90
      </action>
    </script>
  </cheat>
base of PL2 is FF8788 in [dstlk] and FF8888 in [nwarr]

More descriptive color select code for [nwarr]:

Code: Select all

  <cheat desc="Select Character Colour Now! PL1">
    <parameter>
      <item value="0x02">LP button</item>
      <item value="0x03">MP button</item>
      <item value="0x04">HP button</item>
      <item value="0x05">LK button</item>
      <item value="0x06">MK button</item>
      <item value="0x00">HK button</item>
      <item value="0x01">Start button</item>
      <item value="0x07">Hold LP+MK</item>
    </parameter>
    <script state="change">
      <action>maincpu.pw@(FF8388+4A6)=param</action>
    </script>
  </cheat>
[sfa3] code that consolidates "Select Mode PL1", "Select Mode PL2", and "Dramatic Battle Mode PL1/PL2":

Code: Select all

  <cheat desc="Select gameplay mode">
    <parameter>
      <item value="1">Story/Versus Mode</item>
      <item value="2">Survival Mode (1 pl)</item>
      <item value="3">Dramatic Battle</item>
      <item value="4">Survival Dramatic Battle</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@FF854B=00, maincpu.pb@FF894B=00, maincpu.pb@FF8168=00</action>
      <action condition="param == 2">maincpu.pb@FF854B=FF, maincpu.pb@FF894B=FF, maincpu.pb@FF8168=00</action>
      <action condition="param == 3">maincpu.pb@FF854B=00, maincpu.pb@FF894B=00, maincpu.pb@FF8168=01</action>
      <action condition="param == 4">maincpu.pb@FF854B=FF, maincpu.pb@FF894B=FF, maincpu.pb@FF8168=01</action>
    </script>
  </cheat>
[sfa3] code that consolidates "Skip Map Screen", "Skip Story PL1", and "Skip Story PL2":

Code: Select all

  <cheat desc="Skip Story and Map scenes">
    <script state="run">
      <action>maincpu.pb@FF8111=FF, maincpu.pb@FF8549=FF, maincpu.pb@FF8949=FF</action>
    </script>
  </cheat>
[sfa3] code "Skip Character Intros": does it even do anything?

[sfa3] code that consolidates "Enable Classical Mode Now!", "Enable Mazi Mode Now!", and "Enable Saikyou Mode Now!":

Code: Select all

  <cheat desc="Select mode PL1">
    <parameter>
      <item value="1">Normal</item>
      <item value="2">Mazi</item>
      <item value="3">Saikyo</item>
      <item value="4">Classic</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">
        maincpu.pb@(FF8400+15A)=00, maincpu.pb@(FF8400+131)=00, maincpu.pb@(FF8400+15E)=00
      </action>
      <action condition="param == 2">
        maincpu.pb@(FF8400+15A)=01, maincpu.pb@(FF8400+131)=00, maincpu.pb@(FF8400+15E)=00
      </action>
      <action condition="param == 3">
        maincpu.pb@(FF8400+15A)=00, maincpu.pb@(FF8400+131)=01, maincpu.pb@(FF8400+15E)=00
      </action>
      <action condition="param == 4">
        maincpu.pb@(FF8400+15A)=00, maincpu.pb@(FF8400+131)=00, maincpu.pb@(FF8400+15E)=01
      </action>
    </script>
  </cheat>
Improved "Select ISM" code for [sfa3] that turns M.Bison into Shin Bison if you pick S-ism. (You can credit Buttermaker for this one.)

Code: Select all

  <cheat desc="Select ISM PL1">
    <parameter>
      <item value="1">A-ISM</item>
      <item value="2">V-ISM</item>
      <item value="3">X-ISM</item>
      <item value="4">S-ISM</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">
        maincpu.pb@(FF8400+123)=00, maincpu.pb@(FF8400+132)=00, maincpu.pb@(FF8400+15D)=00
      </action>
      <action condition="param == 2">
        maincpu.pb@(FF8400+123)=01, maincpu.pb@(FF8400+132)=01, maincpu.pb@(FF8400+15D)=00
      </action>
      <action condition="param == 3">
        maincpu.pb@(FF8400+123)=FF, maincpu.pb@(FF8400+132)=FF, maincpu.pb@(FF8400+15D)=00
      </action>
      <action condition="param == 4">
        maincpu.pb@(FF8400+123)=02, maincpu.pb@(FF8400+132)=00, maincpu.pb@(FF8400+15D)=01
      </action>
    </script>
  </cheat>
base of player 2: FF8800; player 3: FF8C00; player 3: FF9000

Also, I should point out that player 3 and player 4 are never both active at once in sfa3. So you might consolidate all their stuff into "PL3/PL4".


The following are improved infinite time codes that give both inf match time and char select time. (You may also want to add the infinite sound test codes.)

[sfa]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pw@FFAE09=6300</action> <!--round time-->
      <action condition="maincpu.rw@FF8004 == 2">
        maincpu.pw@(FF8400+2C)=04B0, maincpu.pw@(FF8800+2C)=04B0 <!--selection time-->
      </action>
    </script>
  </cheat>
[sfa2], [sfz2al]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pw@FF8109=6300</action> <!--round time-->
      <action condition="maincpu.rw@FF8004 == 2">
        maincpu.pw@FFB13A=04B0, maincpu.pw@FFAF3A=04B0 <!--selection time-->
      </action>
    </script>
  </cheat>
[sfa3]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pw@FF8109=6300</action> <!--round time-->
      <action condition="maincpu.rw@FF8004 == 2 and maincpu.rb@(FF8400+5) == 2">
        maincpu.pw@(FF8400+3A)=04B0 <!--PL1 selection time-->
      </action>
      <action condition="maincpu.rw@FF8004 == 2 and maincpu.rb@(FF8800+5) == 2">
        maincpu.pw@(FF8800+3A)=04B0 <!--PL2 selection time-->
      </action>
    </script>
  </cheat>
[dstlk]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>
        maincpu.pb@FF9409=99, maincpu.pb@FF9415=maincpu.rb@FF9417, <!--round time-->
        maincpu.pw@FFF418=0384 <!--selection time-->
      </action>
    </script>
  </cheat>
[nwarr]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>
        maincpu.pb@FF8E09=99, maincpu.pb@FF8E15=maincpu.rb@FF8E17, <!--round time-->
        maincpu.pw@FFF458=0708 <!--selection time-->
      </action>
    </script>
  </cheat>
[vsav], [vsav2], [vhunt2]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pb@FF8109=63</action> <!--round time-->
      <action condition="maincpu.rw@FF8004 == 2">
        maincpu.pw@(FF8400+26)=1E3C, maincpu.pw@(FF8800+26)=1E3C <!--selection time-->
      </action>
    </script>
  </cheat>
[sgemf]

Code: Select all

  <cheat desc="Infinite Time">
    <script state="run">
      <action>maincpu.pw@FF8188=9963</action> <!--round time-->
      <action condition="maincpu.rw@FF8004 == 2">
        maincpu.pw@(FF8400+E)=143B, maincpu.pw@(FF8800+E)=143B <!--selection time-->
      </action>
    </script>
  </cheat>
d9x
Posts: 39
Joined: Thu Jun 03, 2010 8:54 pm

Re: improved SFA & dstlk series codes

Post by d9x »

Improvement to "Quick Dramatic Battle" for [sfa]:

Code: Select all

  <cheat desc="Select gameplay mode">
    <parameter>
      <item value="1">Story/Versus Mode</item>
      <item value="2">Akuma/Gouki Battle (1 pl)</item>
      <item value="3">Dramatic Battle (2 pls)</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pw@FFAE48=0000</action>
      <action condition="param == 2">maincpu.pw@FFAE48=0100</action>
      <action condition="param == 2 and maincpu.pb@FF84C5 == 0 and maincpu.pb@FF88C5 == 0">
        maincpu.pb@FF88C5=01 <!--both players cannot be human-->
      </action>
      <action condition="param == 3 and maincpu.rw@FF8004 le 2">maincpu.pw@FFAE48=0001,
        maincpu.pb@FF84A2=00, maincpu.pb@FF88A2=01 <!--P1 Ryu, P2 Ken-->
      </action>
    </script>
  </cheat>
Improvement to "Change to Normal Mode Now!", "Change to Dramatic Battle Now!", and "Change to Survival Mode Now!" for [sz2al]:

Code: Select all

  <cheat desc="Select gameplay mode">
    <parameter>
      <item value="1">Story/Versus Mode</item>
      <item value="2">Shin Akuma/Gouki Battle (1 pl)</item>
      <item value="3">Survival Mode (1 pl)</item>
      <item value="4">Dramatic Battle</item>
      <item value="5">Survival Dramatic Battle</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@FF8148=00, maincpu.pb@FF816C=00, maincpu.pb@FF84CB=00</action>
      <action condition="param == 2">maincpu.pb@FF8148=01, maincpu.pb@FF816C=00, maincpu.pb@FF84CB=00</action>
      <action condition="param == 3">maincpu.pb@FF8148=00, maincpu.pb@FF816C=00, maincpu.pb@FF84CB=FF</action>
      <action condition="param == 4">maincpu.pb@FF8148=00, maincpu.pb@FF816C=01, maincpu.pb@FF84CB=00</action>
      <action condition="param == 5">maincpu.pb@FF8148=00, maincpu.pb@FF816C=01, maincpu.pb@FF84CB=01</action>
    </script>
  </cheat>
Consolidates all the taunt codes in [sfa]:

Code: Select all

  <cheat desc="Infinite taunts">
    <script state="run">
      <action>temp0=maincpu.rb@(FF8400+A2)</action> <!--PL1 character-->
      <action condition="maincpu.rb@(FF8400+1) == 0">temp0=FF</action> <!--not active-->
      <action condition="temp0 == 0 or temp0 == 1">maincpu.pb@(FF8400+1F2)=01</action> <!--Ryu, Ken-->
      <action condition="temp0 == 2">maincpu.pb@(FF8400+1F1)=01</action> <!--Akuma/Gouki-->
      <action condition="temp0 == 3">maincpu.pb@(FF8400+1F0)=01</action> <!--Charlie/Nash-->
      <action condition="temp0 == 4">maincpu.pb@(FF8400+1C1)=01</action> <!--Chun Li-->
      <action condition="temp0 == 5 or temp0 == 6">maincpu.pb@(FF8400+1FF)=01</action> <!--Adon, Sodom-->
      <action condition="temp0 == 7">maincpu.pb@(FF8400+1C4)=01</action> <!--Guy-->
      <action condition="temp0 == 8">maincpu.pb@(FF8400+1F8)=00</action> <!--Birdie-->
      <action condition="temp0 == 9">maincpu.pb@(FF8400+1E8)=01</action> <!--Rose-->
      <action condition="temp0 == A">maincpu.pb@(FF8400+1FB)=01</action> <!--M.Bison/Vega-->
      <action condition="temp0 == B">maincpu.pb@(FF8400+1C0)=01</action> <!--Sagat-->

      <action>temp0=maincpu.rb@(FF8800+A2)</action> <!--PL2 character-->
      <action condition="maincpu.rb@(FF8800+1) == 0">temp0=FF</action> <!--not active-->
      <action condition="temp0 == 0 or temp0 == 1">maincpu.pb@(FF8800+1F2)=01</action> <!--Ryu, Ken-->
      <action condition="temp0 == 2">maincpu.pb@(FF8800+1F1)=01</action> <!--Akuma/Gouki-->
      <action condition="temp0 == 3">maincpu.pb@(FF8800+1F0)=01</action> <!--Charlie/Nash-->
      <action condition="temp0 == 4">maincpu.pb@(FF8800+1C1)=01</action> <!--Chun Li-->
      <action condition="temp0 == 5 or temp0 == 6">maincpu.pb@(FF8800+1FF)=01</action> <!--Adon, Sodom-->
      <action condition="temp0 == 7">maincpu.pb@(FF8800+1C4)=01</action> <!--Guy-->
      <action condition="temp0 == 8">maincpu.pb@(FF8800+1F8)=00</action> <!--Birdie-->
      <action condition="temp0 == 9">maincpu.pb@(FF8800+1E8)=01</action> <!--Rose-->
      <action condition="temp0 == A">maincpu.pb@(FF8800+1FB)=01</action> <!--M.Bison/Vega-->
      <action condition="temp0 == B">maincpu.pb@(FF8800+1C0)=01</action> <!--Sagat-->

      <action>temp0=maincpu.rb@(FF8C00+A2)</action> <!--PL3 character-->
      <action condition="maincpu.rb@(FF8C00+1) == 0">temp0=FF</action> <!--not active-->
      <action condition="temp0 == 0 or temp0 == 1">maincpu.pb@(FF8C00+1F2)=01</action> <!--Ryu, Ken-->
      <action condition="temp0 == 2">maincpu.pb@(FF8C00+1F1)=01</action> <!--Akuma/Gouki-->
      <action condition="temp0 == 3">maincpu.pb@(FF8C00+1F0)=01</action> <!--Charlie/Nash-->
      <action condition="temp0 == 4">maincpu.pb@(FF8C00+1C1)=01</action> <!--Chun Li-->
      <action condition="temp0 == 5 or temp0 == 6">maincpu.pb@(FF8C00+1FF)=01</action> <!--Adon, Sodom-->
      <action condition="temp0 == 7">maincpu.pb@(FF8C00+1C4)=01</action> <!--Guy-->
      <action condition="temp0 == 8">maincpu.pb@(FF8C00+1F8)=00</action> <!--Birdie-->
      <action condition="temp0 == 9">maincpu.pb@(FF8C00+1E8)=01</action> <!--Rose-->
      <action condition="temp0 == A">maincpu.pb@(FF8C00+1FB)=01</action> <!--M.Bison/Vega-->
      <action condition="temp0 == B">maincpu.pb@(FF8C00+1C0)=01</action> <!--Sagat-->
    </script>
  </cheat>
(There is a third player in [sfa] starting at FF8C00 which isn't represented in the current xmls.)

[sfa] codes to set player control, which is useful for altering dramatic battle:

Code: Select all

  <cheat desc="Set PL1 control">
    <parameter>
      <item value="0">Human</item>
      <item value="1">Computer</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@(FF8400+C5)=param</action>
    </script>
  </cheat>
(Repeat for FF8800 and FF8C00.)

Similar for [sfa2] and [sfz2al]:

Code: Select all

  <cheat desc="Set PL1 control">
    <parameter>
      <item value="0x00">human</item>
      <item value="0x01">computer</item>
    </parameter>
    <script state="change">
      <action>maincpu.pb@(FF8400+A5)=param</action>
    </script>
  </cheat>
(Repeat for FF8800 and, for [sfz2al], FF8C00.)

Consolidates the "End round to win match" and "Rounds won" codes for [sfa]:

Code: Select all

  <cheat desc="Set rounds won PL1">
    <parameter min="0" max="2" step="1"/>
    <script state="change">
      <action>maincpu.pb@(FF8400+C6)=param</action>
    </script>
  </cheat>
(Repeat for FF8800 and FF8C00.)

Improvement to the "Faint" codes for [sfa], [sfa2], [sfz2al]:

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="1">Never get dizzied</item>
      <item value="2">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@(FF8400+137)=0</action> <!--no damage-->
      <action condition="param == 2">maincpu.pb@(FF8400+137)=maincpu.rb@(FF8400+13A)</action> <!--full damage-->
    </script>
  </cheat>
(Repeat for FF8800 and, for [sfa] and [sfz2al], FF8C00.)

Similar for [sfa3] dizzy:

Code: Select all

  <cheat desc="PL1 dizzy status">
    <parameter>
      <item value="1">Never get dizzied</item>
      <item value="2">Always get dizzied</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@(FF8400+2CC)=0</action> <!--no damage-->
      <action condition="param == 2">maincpu.pb@(FF8400+2CC)=maincpu.rb@(FF8400+2CD)</action> <!--full damage-->
    </script>
  </cheat>
Similar for [sfa3] guard crush:

Code: Select all

  <cheat desc="PL1 guard crush status">
    <parameter>
      <item value="1">Never guard crushed</item>
      <item value="2">Always guard crushed</item>
    </parameter>
    <script state="run">
      <action condition="param == 1">maincpu.pb@(FF8400+24D)=0</action> <!--no damage-->
      <action condition="param == 2">maincpu.pb@(FF8400+24D)=maincpu.rb@(FF8400+24C)</action> <!--full damage-->
    </script>
  </cheat>
(Repeat for FF8800, FF8C00, and FF9000.)
Post Reply