luascript "Console Mode [lua]" \
"comm:Coin button is used for pause. In training mode, start button can restore HP, pause the game and then press start to select character.
Shin Akuma/Gouki is unlockable by start button in all modes."
run:
-- Start up --
if (peek(0xFF8076)==0x00) then
   dpoke(0xFF8072,0x0109) -- 1 coin 9 credits --
   if (peek(0xFF0000)~=0x06) then -- Restore original values at start in case of reset --
       poke(0x18766,0x04)
       poke(0x18774,0x08)
       p1win=0x00
       p2win=0x00
       lpoke(0x1426,0x2B400060)
       lpoke(0x143C,0x1B410060)
       lpoke(0x1430,0x2B400064)
       lpoke(0x1448,0x1B400064)
       dpoke(0x13B1E,0x13FC)
       lpoke(0x13B22,0x0061801F)
       dpoke(0x925C8,0x3B40)
       lpoke(0x7FCF6,0x1D6C0082)
       dpoke(0x7FCFA,0x0003)
       poke(0x880DC,0x00) -- Retore HP code --
       poke(0x88112,0x00)
   end
   if (peek(0xFF8001)>=0x0C) then -- Start button start --
       if (peek(0x804020)<0xFF) then
         poke(0xFF8076,0x09)
       end
   end
   poke(0xE73B,"PRESS START")
end
-- Title screen --
if (peek(0xFFB31E)==0x9E) then
   if (peek(0xFF8076)>0x00) and (peek(0xFF80A8)==0x00) and (peek(0xFF8024)==0x01) then -- Disable original start & service button --
       lpoke(0x1426,0x00000000)
       lpoke(0x143C,0x00000000)
       lpoke(0xFF8060,0x00000000)
       lpoke(0x1430,0x00000000)
       lpoke(0x1448,0x00000000)
       region=peek(0xFF8091)
       if (peek(0xFF0000)~=0x06) then
         poke(0xFF0000,0x00) -- Set Arcade Mode as default --
       end
       if (peek(0x804020)==0xFF) and (peek(0xFF0000)~=0x06) then
         poke(0xFF0010,0x01)
       end
   end
   if peek(0xFF0010)==0x01 then -- Leaving title screen --
       if (peek(0x804020)==0xFE) or (peek(0x804020)==0xFD) then
          poke(0x618001,0x00) -- sound effect --
          poke(0x618003,0x8B)
          poke(0x61801F,0x00)
          poke(0xFF0010,0x02)
       end
   end
   -- Menu screen --
    if (peek(0xFF80A8)==0x00) and (peek(0xFF0010)==0x02) then
       if (peek(0x13B1E)==0x00) then -- Restore sound effect when return from Option --
         dpoke(0x13B1E,0x13FC)
         lpoke(0x13B22,0x0061801F)
       end
       -- Text display in menu --
       dpoke(0xFF8012,0x0000) -- Stop flashing --
       poke(0xFF8024,0x00) -- Text and Logo shift --
       poke(0xFF803C,0xFE)
       lpoke(0x90C820,0xF422F523) -- Green color --
       lpoke(0x90C824,0xFFEEF6D5)
       lpoke(0x90C828,0xF4B5F3B5)
       lpoke(0x90C82C,0xF295F185)
       lpoke(0x90C860,0xF422F523) -- Orange color --
       lpoke(0x90C864,0xFFE9FFE9)
       lpoke(0x90C868,0xFFD5FE91)
       lpoke(0x90C86C,0xFD81FD81)
       lpoke(0x90C8E0,0xF555F948) -- White color --
       lpoke(0x90C8E4,0xFDDEFCCD)
       lpoke(0x90C8E8,0xFBBCFAAB)
       lpoke(0x90C8EC,0xF99AF889)
       lpoke(0x904188,0xA5A60001) -- Mode Select --
       lpoke(0x9041C8,0xA5A80001)
       lpoke(0x904208,0xA59D0001)
       lpoke(0x904248,0xA59E0001)
       lpoke(0x9042C8,0xA5AC0001)
       lpoke(0x904308,0xA59E0001)
       lpoke(0x904348,0xA5A50001)
       lpoke(0x904388,0xA59E0001)
       lpoke(0x9043C8,0xA59C0001)
       lpoke(0x904408,0xA5AD0001)
       lpoke(0x904190,0xA59A0000+peek(0xFF0020)) -- Arcade Mode --
       lpoke(0x9041D0,0xA5AB0000+peek(0xFF0020))
       lpoke(0x904210,0xA59C0000+peek(0xFF0020))
       lpoke(0x904250,0xA59A0000+peek(0xFF0020))
       lpoke(0x904290,0xA59D0000+peek(0xFF0020))
       lpoke(0x9042D0,0xA59E0000+peek(0xFF0020))
       lpoke(0x904350,0xA5A60000+peek(0xFF0020))
       lpoke(0x904390,0xA5A80000+peek(0xFF0020))
       lpoke(0x9043D0,0xA59D0000+peek(0xFF0020))
       lpoke(0x904410,0xA59E0000+peek(0xFF0020))
       lpoke(0x904194,0xA5AF0000+peek(0xFF0021)) -- Versus Mode --
       lpoke(0x9041D4,0xA59E0000+peek(0xFF0021))
       lpoke(0x904214,0xA5AB0000+peek(0xFF0021))
       lpoke(0x904254,0xA5AC0000+peek(0xFF0021))
       lpoke(0x904294,0xA5AE0000+peek(0xFF0021))
       lpoke(0x9042D4,0xA5AC0000+peek(0xFF0021))
       lpoke(0x904354,0xA5A60000+peek(0xFF0021))
       lpoke(0x904394,0xA5A80000+peek(0xFF0021))
       lpoke(0x9043D4,0xA59D0000+peek(0xFF0021))
       lpoke(0x904414,0xA59E0000+peek(0xFF0021))
       lpoke(0x904158,0xA5AD0000+peek(0xFF0022)) -- Training Mode --
       lpoke(0x904198,0xA5AB0000+peek(0xFF0022))
       lpoke(0x9041D8,0xA59A0000+peek(0xFF0022))
       lpoke(0x904218,0xA5A20000+peek(0xFF0022))
       lpoke(0x904258,0xA5A70000+peek(0xFF0022))
       lpoke(0x904298,0xA5A20000+peek(0xFF0022))
       lpoke(0x9042D8,0xA5A70000+peek(0xFF0022))
       lpoke(0x904318,0xA5A00000+peek(0xFF0022))
       lpoke(0x904398,0xA5A60000+peek(0xFF0022))
       lpoke(0x9043D8,0xA5A80000+peek(0xFF0022))
       lpoke(0x904418,0xA59D0000+peek(0xFF0022))
       lpoke(0x904458,0xA59E0000+peek(0xFF0022))
       lpoke(0x904160,0xA5AC0000+peek(0xFF0023)) -- Survival Mode --
       lpoke(0x9041A0,0xA5AE0000+peek(0xFF0023))
       lpoke(0x9041E0,0xA5AB0000+peek(0xFF0023))
       lpoke(0x904220,0xA5AF0000+peek(0xFF0023))
       lpoke(0x904260,0xA5A20000+peek(0xFF0023))
       lpoke(0x9042A0,0xA5AF0000+peek(0xFF0023))
       lpoke(0x9042E0,0xA59A0000+peek(0xFF0023))
       lpoke(0x904320,0xA5A50000+peek(0xFF0023))
       lpoke(0x9043A0,0xA5A60000+peek(0xFF0023))
       lpoke(0x904420,0xA59D0000+peek(0xFF0023))
       lpoke(0x904460,0xA59E0000+peek(0xFF0023))
       lpoke(0x9043E0,0xA5A80000+peek(0xFF0023))
       if (peek(0xFF8091)>=0x02) then -- Akuma Mode --
         lpoke(0x9041A4,0xA59A0000+peek(0xFF0024))
         lpoke(0x9041E4,0xA5A40000+peek(0xFF0024))
         lpoke(0x904224,0xA5AE0000+peek(0xFF0024))
         lpoke(0x904264,0xA5A60000+peek(0xFF0024))
         lpoke(0x9042A4,0xA59A0000+peek(0xFF0024))
         lpoke(0x904324,0xA5A60000+peek(0xFF0024))
         lpoke(0x904364,0xA5A80000+peek(0xFF0024))
         lpoke(0x9043A4,0xA59D0000+peek(0xFF0024))
         lpoke(0x9043E4,0xA59E0000+peek(0xFF0024))
       elseif (peek(0xFF8091)==0x00) then -- Gouki Mode --
         lpoke(0x9041A4,0xA5A00000+peek(0xFF0024))
         lpoke(0x9041E4,0xA5A80000+peek(0xFF0024))
         lpoke(0x904224,0xA5AE0000+peek(0xFF0024))
         lpoke(0x904264,0xA5A40000+peek(0xFF0024))
         lpoke(0x9042A4,0xA5A20000+peek(0xFF0024))
         lpoke(0x904324,0xA5A60000+peek(0xFF0024))
         lpoke(0x904364,0xA5A80000+peek(0xFF0024))
         lpoke(0x9043A4,0xA59D0000+peek(0xFF0024))
         lpoke(0x9043E4,0xA59E0000+peek(0xFF0024))
       end
       lpoke(0x904128,0xA59D0000+peek(0xFF0025)) -- Dramatic Battle --
       lpoke(0x904168,0xA5AB0000+peek(0xFF0025))
       lpoke(0x9041A8,0xA59A0000+peek(0xFF0025))
       lpoke(0x9041E8,0xA5A60000+peek(0xFF0025))
       lpoke(0x904228,0xA59A0000+peek(0xFF0025))
       lpoke(0x904268,0xA5AD0000+peek(0xFF0025))
       lpoke(0x9042A8,0xA5A20000+peek(0xFF0025))
       lpoke(0x9042E8,0xA59C0000+peek(0xFF0025))
       lpoke(0x904368,0xA59B0000+peek(0xFF0025))
       lpoke(0x9043A8,0xA59A0000+peek(0xFF0025))
       lpoke(0x9043E8,0xA5AD0000+peek(0xFF0025))
       lpoke(0x904428,0xA5AD0000+peek(0xFF0025))
       lpoke(0x904468,0xA5A50000+peek(0xFF0025))
       lpoke(0x9044A8,0xA59E0000+peek(0xFF0025))
       lpoke(0x904230,0xA5A80000+peek(0xFF0026)) -- Option --
       lpoke(0x904270,0xA5A90000+peek(0xFF0026))
       lpoke(0x9042B0,0xA5AD0000+peek(0xFF0026))
       lpoke(0x9042F0,0xA5A20000+peek(0xFF0026))
       lpoke(0x904330,0xA5A80000+peek(0xFF0026))
       lpoke(0x904370,0xA5A70000+peek(0xFF0026))
       mode=peek(0xFF0000)
       if mode==0x00 then -- Arcade Mode pointer --
          poke(0xFF0020,0x03)
          poke(0xFF0021,0x07)
          poke(0xFF0022,0x07)
          poke(0xFF0023,0x07)
          poke(0xFF0024,0x07)
          poke(0xFF0025,0x07)
          poke(0xFF0026,0x07)
       elseif mode==0x01 then -- Versus Mode pointer --
          poke(0xFF0020,0x07)
          poke(0xFF0021,0x03)
          poke(0xFF0022,0x07)
          poke(0xFF0023,0x07)
          poke(0xFF0024,0x07)
          poke(0xFF0025,0x07)
          poke(0xFF0026,0x07)
       elseif mode==0x02 then -- Training Mode pointer --
          poke(0xFF0020,0x07)
          poke(0xFF0021,0x07)
          poke(0xFF0022,0x03)
          poke(0xFF0023,0x07)
          poke(0xFF0024,0x07)
          poke(0xFF0025,0x07)
          poke(0xFF0026,0x07)
       elseif mode==0x03 then -- Survival Mode pointer --
          poke(0xFF0020,0x07)
          poke(0xFF0021,0x07)
          poke(0xFF0022,0x07)
          poke(0xFF0023,0x03)
          poke(0xFF0024,0x07)
          poke(0xFF0025,0x07)
          poke(0xFF0026,0x07)
       elseif mode==0x04 then -- Akuma Mode pointer --
          poke(0xFF0020,0x07)
          poke(0xFF0021,0x07)
          poke(0xFF0022,0x07)
          poke(0xFF0023,0x07)
          poke(0xFF0024,0x03)
          poke(0xFF0025,0x07)
          poke(0xFF0026,0x07)
       elseif mode==0x05 then -- Dramatic Battle pointer --
          poke(0xFF0020,0x07)
          poke(0xFF0021,0x07)
          poke(0xFF0022,0x07)
          poke(0xFF0023,0x07)
          poke(0xFF0024,0x07)
          poke(0xFF0025,0x03)
          poke(0xFF0026,0x07)
       elseif mode==0x06 then -- Option pointer --
          poke(0xFF0020,0x07)
          poke(0xFF0021,0x07)
          poke(0xFF0022,0x07)
          poke(0xFF0023,0x07)
          poke(0xFF0024,0x07)
          poke(0xFF0025,0x07)
          poke(0xFF0026,0x03)
       end
       -- Control in the Menu screen --
       if ((peek(0x804001)==0xFF) and (peek(0x804000)==0xFF)) and (peek(0xFF0001)==0xFF) then
          poke(0xFF0001,0x00) -- Act as button 'stopper' --
          poke(0xFF0011,0x00) -- Act as music 'stopper' --
       end
       if (peek(0x804001)==0xFB) or (peek(0x804000)==0xFB) then
          if peek(0xFF0011)==0x00 then -- Sound effect --
            poke(0x618001,0x00)
            poke(0x618003,0x82)
            poke(0x61801F,0x00)
            poke(0xFF0011,0xFF)
          end
          if (dpeek(0xFF0000)==0x0000) then
            dpoke(0xFF0000,0x01FF)
          elseif (dpeek(0xFF0000)==0x0100) then
            dpoke(0xFF0000,0x02FF)
          elseif (dpeek(0xFF0000)==0x0200) then
    	      dpoke(0xFF0000,0x03FF)
          elseif (dpeek(0xFF0000)==0x0300) then
            dpoke(0xFF0000,0x04FF)
          elseif (dpeek(0xFF0000)==0x0400) then
            dpoke(0xFF0000,0x05FF)
          elseif (dpeek(0xFF0000)==0x0500) then
            dpoke(0xFF0000,0x06FF)
          elseif (dpeek(0xFF0000)==0x0600) then
            dpoke(0xFF0000,0x00FF)
          end
       end
       if (peek(0x804001)==0xF7) or (peek(0x804000)==0xF7) then
          if peek(0xFF0011)==0x00 then -- Sound effect --
            poke(0x618001,0x00)
            poke(0x618003,0x82)
            poke(0x61801F,0x00)
            poke(0xFF0011,0xFF)
          end
          if (dpeek(0xFF0000)==0x0000) then
            dpoke(0xFF0000,0x06FF)
          elseif (dpeek(0xFF0000)==0x0600) then
            dpoke(0xFF0000,0x05FF)
          elseif (dpeek(0xFF0000)==0x0500) then
            dpoke(0xFF0000,0x04FF)
          elseif (dpeek(0xFF0000)==0x0400) then
            dpoke(0xFF0000,0x03FF)
          elseif (dpeek(0xFF0000)==0x0300) then
            dpoke(0xFF0000,0x02FF)
          elseif (dpeek(0xFF0000)==0x0200) then
            dpoke(0xFF0000,0x01FF)
          elseif (dpeek(0xFF0000)==0x0100) then
           dpoke(0xFF0000,0x00FF)
          end
       end
       -- Start game --
       if (peek(0xFF8058)>0x00) then -- P1 start game --
          poke(0xFF8060,0x01) -- start --
          poke(0x618001,0x00) -- sound effect --
          poke(0x618003,0xFA)
          poke(0x61801F,0x00)
       end
       if (peek(0xFF805C)>0x00) then -- P2 start game --
          poke(0xFF8060,0x02) -- start --
          poke(0x618001,0x00) -- sound effect --
          poke(0x618003,0xFA)
          poke(0x61801F,0x00)
       end
    end
   if (peek(0xFF8001)==0x00) and (peek(0xFF80A8)>0x00) and (peek(0xFF0000)~=0x06) then -- Restore value after start --
       poke(0xFF8024,0x01)
       poke(0xFF803C,0x00)
       poke(0xFF0010,0x00)
       lpoke(0x1426,0x2B400060)
       lpoke(0x143C,0x1B410060)
       lpoke(0x1430,0x2B400064)
       lpoke(0x1448,0x1B400064)
       -- --poke(0xFF0005,0x00) #restore counter used in option## --
   end
end
-- Infinity Credits --
if (peek(0xFF8076)>0x00) then
    poke(0xFF8076,0x09)
end
-- VS Mode Script --
if (peek(0xFF0000)==0x01) then
    if (peek(0xFFB31E)==0x9E) and (peek(0xFF80A8)>0x00) then
    poke(0xFF8076,0x09)
    poke(0xFF80A8,0x03)
    end
    if (dpeek(0xFF8020)==0x92A0) and ((peek(0xFF848C)==0x09) or (peek(0xFF888C)==0x09)) then
    p1win=peek(0xFF84B0) -- Memorizes the P1 win point --
    p2win=peek(0xFF88B0) -- Memorizes the P2 win point --
    poke(0xFF8480,0x00)
    poke(0xFF8880,0x00)
    poke(0xFF80AC,0x00)
    poke(0xFF808D,0x03)
    poke(0xFF8484,0x04)
    poke(0xFF8884,0x04)
    end
    if (dpeek(0xFFB31E)==0x7DBC) then
    poke(0xFF84B0,p1win) -- Load the P1 win point --
    poke(0xFF88B0,p2win) -- Load the P2 win point --
    end
end
-- Training Mode Script --
if (peek(0xFF0000)==0x02) then
    if (peek(0xFFB31E)==0x9E) and (peek(0xFF80A8)>0x00) then
    poke(0xFF80A8,0x03)
    end
    if (dpeek(0xFFB31E)==0x7DBC) and (((peek(0xFFB10E)==0x00) and (peek(0xFF80AC)==0x01)) or ((peek(0xFFAF0E)==0x00) and (peek(0xFF80AC)==0x02))) then
    poke(0x18766,0x08)
    poke(0x18774,0x04)
    end
    if (dpeek(0xFFB31E)==0x7576) and (peek(0xFF80AC)==0x03) then
    poke(0x18766,0x04)
    poke(0x18774,0x08)
    end
    if (peek(0xFF8109)>=0x62) then
       if (peek(0xFF800D)==0x00) then -- At start --
          poke(0x880DC,0x03) -- Change HP code --
          poke(0x88112,0x03)
          lpoke(0xFF8450,0x00FF0090) -- Increase HP --
          lpoke(0xFF8850,0x00FF0090)
       end
      -- 1P HP restore --
       if (peek(0xFF8451)>=0x6F) then
          poke(0xFF8751,peek(0xFF8451)-0x6F)
       end
       if (peek(0xFF8451)<0x6F) then
          poke(0xFF8451,0x6E)
          dpoke(0xFF8750,0x0000)
       end
       if ((peek(0xFF8451)<0x6F) and (peek(0xFF8405)==0x00)) or (peek(0x804020)==0xFD) then
          poke(0xFF8453,peek(0xFF8751))
          poke(0xFF0030,0x01)
       end
       if (peek(0xFF0030)==0x01) and (peek(0xFF8451)<0xFF) then
          poke(0xFF8451,peek(0xFF8451)+0x1)
          poke(0xFF8453,peek(0xFF8453)+0x1)
       end
       if (peek(0xFF8451)==0xFF) then
          poke(0xFF8453,0x90)
          poke(0xFF0030,0x00)
       end
      -- 2P HP restore --
       if (peek(0xFF8851)>=0x6F) then
          poke(0xFF8B51,peek(0xFF8851)-0x6F)
       end
       if (peek(0xFF8851)<0x6F) then
          poke(0xFF8851,0x6E)
          dpoke(0xFF8B50,0x0000)
       end
       if ((peek(0xFF8851)<0x6F) and (peek(0xFF8805)==0x00)) or (peek(0x804020)==0xFE) then
          poke(0xFF8853,peek(0xFF8B51))
          poke(0xFF0031,0x01)
       end
       if (peek(0xFF0031)==0x01) and (peek(0xFF8851)<0xFF) then
          poke(0xFF8851,peek(0xFF8851)+0x1)
          poke(0xFF8853,peek(0xFF8853)+0x1)
       end
       if (peek(0xFF8851)==0xFF) then
          poke(0xFF8853,0x90)
          poke(0xFF0031,0x00)
       end
       -- Other battle parameters --
       poke(0xFF810A,0x30)
       poke(0xFF849F,0x90)
       poke(0xFF889F,0x90)
    end
    if (peek(0xFF8009)==0x04) and (peek(0xFF800D)==0x02) then
       if (peek(0xFF8001)==0x0E) and ((peek(0xFF849C)==0x80) or (peek(0xFF889C)==0x80)) then
          poke(0xFF8480,0x00)
          poke(0xFF8880,0x00)
       end
       if (peek(0xFF8001)==0x0E) and (peek(0xFF8885)==0x02) then
          poke(0xFF8484,0x04)
          poke(0xFF8884,0x04)
          poke(0xFF80AC,0x00)
          poke(0xFF8109,0x00)
          poke(0x880DC,0x00) -- Retore HP code --
          poke(0x88112,0x00)
          dpoke(0xFF0030,0x0000)
       end
    end
end
-- Survival Mode Script --
if (peek(0xFF0000)==0x03) then
    poke(0xFF84CB,0xFF)
    poke(0xFF816D,0x00)
end
-- Akuma/Gouki Mode Script --
if (peek(0xFF0000)==0x04) then
    poke(0xFF8148,0x01)
end
-- Dramatic Mode Plus Script --
if (peek(0xFF0000)==0x05) then
    if (dpeek(0xFF802A)==0x0040) then -- Character Screen background --
       poke(0xFF8052,0x04)
    end
    if (dpeek(0xFFB31E)==0x7DBC) then
       if (peek(0xFF80A8)==0x03) and (peek(0xFF80AC)<0x03) then -- 2P game, switch to ori. char screen --
         poke(0xFF816C,0x00)
       end
       if (peek(0xFF80A8)==0x03) and (peek(0xFF80AC)==0x03) then -- 2P game, switch to dramatic char screen --
         poke(0xFF816C,0x01)
         poke(0xFF815F,0x03)
       end
       if (peek(0xFF80A8)<0x03) and (peek(0xFF80AC)==0x00) then -- 1P game, switch to ori. char screen --
         poke(0xFF816C,0x00)
       end
       if (peek(0xFF80A8)<0x03) and ((peek(0xFF80AC)==0x01) or (peek(0xFF80AC)==0x02)) then -- 1P game, switch to dramatic char screen --
         poke(0xFF816C,0x01)
         poke(0xFF815F,0x03)
       end
       if (peek(0xFF816D)==0x01) and (peek(0xFF88CA)==0x00) and (peek(0xFF84CA)==0x00) then -- Enable Evil Ryu for CPU. --
          poke(0xFF816D,0x00)
          poke(0xFF0005,0x01) -- Prpare for Shin Akuma --
       end
       if (peek(0xFF8009)==0x08) then -- Restoration --
          poke(0xFF0005,0x00)
          poke(0xFF80A8,0x00)
       end
    end
    if (peek(0xFF8009)==0x0A) then -- Case for here come a new challenger --
       poke(0xFF80A8,0x03)
    end
end
-- Option Mode Script --
if (peek(0xFF0000)==0x06) then
    if (peek(0xFF8083)==0x00) and (peek(0xFFB31E)==0x9E) then -- Step 1 --
       poke(0xFF8091,0x02) -- English menu --
       dpoke(0x13B1E,0x0000) -- No announcer's voice later & prevent cut of sound effect --
       lpoke(0x13B22,0x00000000)
       poke(0xFF8064,0x02)
       poke(0xFF0006,0x01)
    end
    if (peek(0xFF8001)==0x02) and (peek(0xFF0006)==0x01) then -- step 2 --
       lpoke(0x1430,0x2B400064)
       lpoke(0x1448,0x1B400064)
       poke(0x925C8,0x0000) -- skip some part in startup --
       poke(0xFF0006,0x02)
    end
    if (peek(0xFF8001)==0x06) and (peek(0xFF0006)==0x02) then -- step 3 --
       poke(0xFF8091,region)
       poke(0xFF8003,0x00)
       poke(0xFF8024,0x00) -- Hide warning text --
       poke(0xFF8076,0x09)
       dpoke(0x925C8,0x3B40)
       poke(0xFF0010,0x02) -- Return to menu --
       poke(0xFF0006,0x00)
    end
end
-- Pause Function Script. --
    if ((peek(0xFF8009)==0x04) or (peek(0xFF8009)==0x0A)) and (peek(0xFF800D)==0x02) then
       if (peek(0x804020)==0xFF) then
       poke(0xFF0002,0x00)
       end
       if (peek(0xFF8001)==0x02) and ((peek(0x804020)==0xEF) or (peek(0x804020)==0xDF)) and (peek(0xFF0002)==0x00) then
       poke(0xFF8001,0x0E)
       poke(0xFF0002,0xFF)
       end
       if (peek(0xFF8001)==0x0E) and ((peek(0x804020)==0xEF) or (peek(0x804020)==0xDF)) and (peek(0xFF0002)==0x00) then
       poke(0xFF8001,0x02)
       poke(0xFF0002,0xFF)
       end
    end
-- Enable Shin Akuma Script. --
if (peek(0xFF0005)==0x00) then -- Normal case --
    if (dpeek(0xFFB31E)==0x7DBC) and ((peek(0xFF80AC)==0x00) or (peek(0xFF80AC)==0x02)) then -- P1 --
       if (peek(0xFF8482)==0x02) and (peek(0xFF849A)==0x80) and (peek(0xFF0003)==0x00) then
       poke(0xFF8482,0x14)
       end
       if (peek(0xFF8482)==0x14) and (peek(0xFF849A)==0x00) then
       poke(0xFF0003,0x01)
       end
       if (peek(0xFF8482)==0x14) and (peek(0xFF849A)==0x80) and (peek(0xFF0003)==0x01) then
       poke(0xFF8482,0x02)
       end
       if (peek(0xFF8482)==0x02) and (peek(0xFF849A)==0x00) then
       poke(0xFF0003,0x00)
       end
     end
    if (dpeek(0xFFB31E)==0x7DBC) and ((peek(0xFF80AC)==0x00) or (peek(0xFF80AC)==0x01)) then -- P2 --
       if (peek(0xFF8882)==0x02) and (peek(0xFF889A)==0x80) and (peek(0xFF0004)==0x00) then
       poke(0xFF8882,0x14)
       end
       if (peek(0xFF8882)==0x14) and (peek(0xFF889A)==0x00) then
       poke(0xFF0004,0x01)
       end
       if (peek(0xFF8882)==0x14) and (peek(0xFF889A)==0x80) and (peek(0xFF0004)==0x01) then
       poke(0xFF8882,0x02)
       end
       if (peek(0xFF8882)==0x02) and (peek(0xFF889A)==0x00) then
       poke(0xFF0004,0x00)
       end
     end
end
if (peek(0xFF0000)==0x05) and (peek(0xFF0005)==0x01) then
    if (dpeek(0xFFB31E)==0x7DBC) and (peek(0xFF80A8)==0x01) then -- P1's partner in Dramatic Battle --
       if (peek(0xFF8882)==0x02) and (peek(0xFF849A)==0x80) and (peek(0xFF0004)==0x00) then
         lpoke(0x7FCF6,0x00000000)
         dpoke(0x7FCFA,0x0000)
         poke(0xFFAE03,0x02)
         poke(0xFF8882,0x14)
       end
       if (peek(0xFF8882)==0x14) and (peek(0xFF849A)==0x00) then
         poke(0xFF0004,0x01)
       end
       if (peek(0xFF8882)==0x14) and (peek(0xFF849A)==0x80) and (peek(0xFF0004)==0x01) then
         poke(0xFF8882,0x02)
       end
       if (peek(0xFF8882)==0x02) and (peek(0xFF849A)==0x00) then
         poke(0xFF0004,0x00)
       end
       if (peek(0xFF8882)~=0x14) or (peek(0xFF8009)==0x08) then
         lpoke(0x7FCF6,0x1D6C0082)
         dpoke(0x7FCFA,0x0003)
       end
     end
    if (dpeek(0xFFB31E)==0x7DBC) and (peek(0xFF80A8)==0x02) then -- P2's partner in Dramatic Battle --
       if (peek(0xFF8482)==0x02) and (peek(0xFF889A)==0x80) and (peek(0xFF0003)==0x00) then
         lpoke(0x7FCF6,0x00000000)
         dpoke(0x7FCFA,0x0000)
         poke(0xFFAE03,0x02)
         poke(0xFF8482,0x14)
       end
       if (peek(0xFF8482)==0x14) and (peek(0xFF889A)==0x00) then
         poke(0xFF0003,0x01)
       end
       if (peek(0xFF8482)==0x14) and (peek(0xFF889A)==0x80) and (peek(0xFF0003)==0x01) then
         poke(0xFF8482,0x02)
       end
       if (peek(0xFF8482)==0x02) and (peek(0xFF889A)==0x00) then
         poke(0xFF0003,0x00)
       end
       if (peek(0xFF8482)~=0x14) or (peek(0xFF8009)==0x08) then
         lpoke(0x7FCF6,0x1D6C0082)
         dpoke(0x7FCFA,0x0003)
       end
     end
end
off:
    poke(0xE73B,"INSERT COIN")
    poke(0x18766,0x04)
    poke(0x18774,0x08)
    lpoke(0x1426,0x2B400060)
    lpoke(0x143C,0x1B410060)
    lpoke(0x1430,0x2B400064)
    lpoke(0x1448,0x1B400064)
    dpoke(0x13B1E,0x13FC)
    lpoke(0x13B22,0x0061801F)
    dpoke(0x925C8,0x3B40)
    lpoke(0x7FCF6,0x1D6C0082)
    dpoke(0x7FCFA,0x0003)
    poke(0x880DC,0x00) -- Retore HP code --
    poke(0x88112,0x00)

luascript "Original Title Screen [lua]"
run:
if (peek(0xFFB31E)==0x9E) then
    dpoke(0xFF8012,0x0000) -- Stop flashing --
    dpoke(0xFF8054,0x0000) -- Stop scrolling --
    for i=0,0x17C,0x4 do
       poke(0x908003+i,0x05)
    end
    dpoke(0x908000,0x1108) 
    dpoke(0x908004,0x110E) 
    dpoke(0x908008,0x1113) 
    dpoke(0x90800C,0x111A) 
    dpoke(0x908010,0x090A) 
    dpoke(0x908014,0x090A) 
    dpoke(0x908018,0x090A) 
    dpoke(0x90801C,0x1108) 
    dpoke(0x908020,0x1109) 
    dpoke(0x908024,0x110F) 
    dpoke(0x908028,0x1114) 
    dpoke(0x90802C,0x111B) 
    dpoke(0x908030,0x090A) 
    dpoke(0x908034,0x090A) 
    dpoke(0x908038,0x090A) 
    dpoke(0x90803C,0x1109) 
    dpoke(0x908040,0x110A) 
    dpoke(0x908044,0x090A) 
    dpoke(0x908048,0x1115) 
    dpoke(0x90804C,0x090A) 
    dpoke(0x908050,0x090A) 
    dpoke(0x908054,0x1116) 
    dpoke(0x908058,0x111C) 
    dpoke(0x90805C,0x110A) 
    dpoke(0x908060,0x110A) 
    dpoke(0x908064,0x090A) 
    dpoke(0x908068,0x090A) 
    dpoke(0x90806C,0x090A) 
    dpoke(0x908070,0x1110) 
    dpoke(0x908074,0x1117) 
    dpoke(0x908078,0x111D) 
    dpoke(0x90807C,0x110A) 
    dpoke(0x908080,0x110B) 
    dpoke(0x908084,0x090A) 
    dpoke(0x908088,0x1116) 
    dpoke(0x90808C,0x111C) 
    dpoke(0x908090,0x111F) 
    dpoke(0x908094,0x1121) 
    dpoke(0x908098,0x090A) 
    dpoke(0x90809C,0x110B) 
    dpoke(0x9080A0,0x090A) 
    dpoke(0x9080A4,0x1110) 
    dpoke(0x9080A8,0x1117) 
    dpoke(0x9080AC,0x111D) 
    dpoke(0x9080B0,0x090A) 
    dpoke(0x9080B4,0x1122) 
    dpoke(0x9080B8,0x090A) 
    dpoke(0x9080BC,0x090A) 
    dpoke(0x9080C0,0x110C) 
    dpoke(0x9080C4,0x1111) 
    dpoke(0x9080C8,0x1118) 
    dpoke(0x9080CC,0x1116) 
    dpoke(0x9080D0,0x111C) 
    dpoke(0x9080D4,0x1123) 
    dpoke(0x9080D8,0x090A) 
    dpoke(0x9080DC,0x110C) 
    dpoke(0x9080E0,0x110D) 
    dpoke(0x9080E4,0x1112) 
    dpoke(0x9080E8,0x1119) 
    dpoke(0x9080EC,0x111E) 
    dpoke(0x9080F0,0x1120) 
    dpoke(0x9080F4,0x1124) 
    dpoke(0x9080F8,0x090A) 
    dpoke(0x9080FC,0x110D) 
    dpoke(0x908100,0x1125) 
    dpoke(0x908104,0x1129) 
    dpoke(0x908108,0x112D) 
    dpoke(0x90810C,0x1131) 
    dpoke(0x908110,0x1135) 
    dpoke(0x908114,0x1139) 
    dpoke(0x908118,0x090A) 
    dpoke(0x90811C,0x1125) 
    dpoke(0x908120,0x1126) 
    dpoke(0x908124,0x112A) 
    dpoke(0x908128,0x112E) 
    dpoke(0x90812C,0x1132) 
    dpoke(0x908130,0x1136) 
    dpoke(0x908134,0x113A) 
    dpoke(0x908138,0x1122) 
    dpoke(0x90813C,0x1126) 
    dpoke(0x908140,0x1127) 
    dpoke(0x908144,0x112B) 
    dpoke(0x908148,0x112F) 
    dpoke(0x90814C,0x1133) 
    dpoke(0x908150,0x1137) 
    dpoke(0x908154,0x113B) 
    dpoke(0x908158,0x113D) 
    dpoke(0x90815C,0x1127) 
    dpoke(0x908160,0x1128) 
    dpoke(0x908164,0x112C) 
    dpoke(0x908168,0x1130) 
    dpoke(0x90816C,0x1134) 
    dpoke(0x908170,0x1138) 
    dpoke(0x908174,0x113C) 
    dpoke(0x908178,0x113E) 
    dpoke(0x90817C,0x1128) 
  -- For opening part --
    if (peek(0xFF8076)==0x00) then
       for i=0,0x17F,0x4 do
          lpoke(0x908200+i,lpeek(0x908000+i))
       end
       dpoke(0xFF8010,0x0080)
       dpoke(0xFF8028,0x0100)
    end
end

luascript "Green Player Select Screen [lua]" \
"comm:The effect will be lasting until the emulator is closed.
This work on the modes that originally have yellow Player Select Screen.
Effect can be overrided by 'Blue Player Select Screen' or 'Special Player Select Screen'."
on:
    lpoke(0x2A3CC6,0x02C304D2)
    lpoke(0x2A3CCA,0x06E108F0)
    lpoke(0x2A3CCE,0x0AF00CF0)
    lpoke(0x2A3CD2,0x0DF002C3)
    lpoke(0x2A3CD6,0x04D206E1)
    lpoke(0x2A3CDA,0x08F00AF0)
    lpoke(0x2A3CDE,0x0CF00DF0)
    lpoke(0x2A3CE6,0x02B402C3)
    lpoke(0x2A3CEA,0x04D206E1)
    lpoke(0x2A3CEE,0x08F00AF0)
    lpoke(0x2A3CF2,0x0CF002C3)
    lpoke(0x2A3CF6,0x04D206E1)
    lpoke(0x2A3CFA,0x08F00FF0)
    lpoke(0x2A3CFE,0x0CF00DF0)
    lpoke(0x2A3D06,0x02A502B4)
    lpoke(0x2A3D0A,0x02C304D2)
    lpoke(0x2A3D0E,0x06E108F0)
    lpoke(0x2A3D12,0x0AF002B4)
    lpoke(0x2A3D16,0x02C304D2)
    lpoke(0x2A3D1A,0x06E108F0)
    lpoke(0x2A3D1E,0x0AF00CF0)
    lpoke(0x2A3D26,0x029602A5)
    lpoke(0x2A3D2A,0x02B402C3)
    lpoke(0x2A3D2E,0x04D206E1)
    lpoke(0x2A3D32,0x08F002A5)
    lpoke(0x2A3D36,0x02B402C3)
    lpoke(0x2A3D3A,0x04D206E1)
    lpoke(0x2A3D3E,0x08F00AF0)
    lpoke(0x2A3D46,0x02870296)
    lpoke(0x2A3D4A,0x02A502B4)
    lpoke(0x2A3D4E,0x02C304D2)
    lpoke(0x2A3D52,0x06E10296)
    lpoke(0x2A3D56,0x02A502B4)
    lpoke(0x2A3D5A,0x02C304D2)
    lpoke(0x2A3D5E,0x06E108F0)
    lpoke(0x2A3D66,0x02780287)
    lpoke(0x2A3D6A,0x029602A5)
    lpoke(0x2A3D6E,0x02B402C3)
    lpoke(0x2A3D72,0x04D20287)
    lpoke(0x2A3D76,0x029602A5)
    lpoke(0x2A3D7A,0x02B402C3)
    lpoke(0x2A3D7E,0x04D206E1)
    lpoke(0x2A3D86,0x02790278)
    lpoke(0x2A3D8A,0x02870296)
    lpoke(0x2A3D8E,0x02A502B4)
    lpoke(0x2A3D92,0x02C30278)
    lpoke(0x2A3D96,0x02870296)
    lpoke(0x2A3D9A,0x02A502B4)
    lpoke(0x2A3D9E,0x02C304D2)
    lpoke(0x2A3DA6,0x027A0279)
    lpoke(0x2A3DAA,0x02780287)
    lpoke(0x2A3DAE,0x029602A5)
    lpoke(0x2A3DB2,0x02B40279)
    lpoke(0x2A3DB6,0x02780287)
    lpoke(0x2A3DBA,0x029602A5)
    lpoke(0x2A3DBE,0x02B402C3)

luascript "Blue Player Select Screen [lua]" \
"comm:Not work on hidden modes."
run:
    if (dpeek(0xFF802A)==0x0040) then
    poke(0xFF8052,0x06)
    end

luascript "Special Player Select Screen [lua]" \
"comm:Not work on hidden modes."
run:
    if (dpeek(0xFF802A)==0x0040) or (dpeek(0xFF802A)==0x0640) then
    poke(0xFF8052,0x04)
    end

luascript "Brown Title Screen [lua]" \
"comm:Activiate before Title screen. The effect will be lasting until the emulator is closed."
on:
    lpoke(0x28BFA4,0x02100210)
    lpoke(0x28BFA8,0x02100210)
    lpoke(0x28BFAC,0x02100420)
    lpoke(0x28BFB0,0x06310853)
    lpoke(0x28BFB4,0x09740CA7)
    lpoke(0x28BFB8,0x02100210)

luascript "Light Blue Title Screen [lua]" \
"comm:Activiate before Title screen. The effect will be lasting until the emulator is closed."
on:
    lpoke(0x28BFA4,0x048D048D)
    lpoke(0x28BFA8,0x048D048D)
    lpoke(0x28BFAC,0x048D03AB)
    lpoke(0x28BFB0,0x03BA03C9)
    lpoke(0x28BFB4,0x03D804F6)
    lpoke(0x28BFB8,0x048D048D)

luascript "Stop Flashing on Title Screen [lua]"
run:
    if (peek(0xFFB31E)==0x9E) then
    dpoke(0xFF8012,0x0000)
    end

script "Free Play Mode 'ON'"
run:
    poke $FF809C $01
script "Infinite Time"
run:
    poke $FF8109 $63
script "Finish this Round Now!" \
 "comm:Disable Infinite Time before activating this cheat"
on:
    poke $FF8109 $00
script "Change to Normal Mode Now!"
on:
    poke $FF816C $00
    poke $FF84CB $00
script "Change to Dramatic Battle Now!"
on:
    poke $FF816C $01
    poke $FF84CB $00
script "Change to Survival Mode Now!"
on:
    poke $FF84CB $FF
    poke $FF816C $00
script "Next fight is last fight Now! (Normal)"
on:
    poke $FF8115 $07
script "Next fight is last fight Now! (Dramatic)"
on:
    poke $FF8115 $03
script "Next fight is last fight Now! (Survival)"
on:
    poke $FF8115 $11
script "Select Next Stage Now!" \
 "comm:Use this after you have won a stage and 'WINNER' is displayed. However, when you finish the game it will finish as if you where on Akuma's Island regardless of stage chosen." \
 "0x00/Japan (Snow)"\
 "0x02/USA (Boat)"\
 "0x04/Japan (Akuma's Island)"\
 "0x06/USA (Plane)"\
 "0x08/China (Bikes)"\
 "0x0A/Thailand (Lakeside)"\
 "0x0C/USA (Truck)"\
 "0x0E/USA (Alley)"\
 "0x10/England (Toilets)"\
 "0x12/Italy (Venice)"\
 "0x14/Brazil (Plane)"\
 "0x16/Thailand (Buddha)"\
 "0x18/Hong Kong (Market)"\
 "0x1A/Japan (Outside House)"\
 "0x1C/USA (Yard)"\
 "0x1E/India (Elephants)"\
 "0x20/USSR (Factory)"\
 "0x22/China (Alley)"\
 "0x24/Australia (Crop Field)"\
 "0x26/Venezuela (Waterfall)"
change:
    poke $FF8101 param
script " "
script "P1 Infinite Energy"
run:
    poke $FF8451 $90
    poke $FF8453 $90
script "P1 Drain All Energy Now!"
on:
    poke $FF8451 $00
    poke $FF8453 $00
script "P1 Always have Maximum POW"
run:
    poke $FF849F $90
script "P1 Always have Minimum POW"
run:
    poke $FF849F $00
script "P1 Get Maximum POW Now!"
on:
    poke $FF849F $90
script "P1 Get Minimum POW Now!"
on:
    poke $FF849F $00
script "P1 Infinite Custom Combo"
run:
    poke $FF8699 $B0
    poke $FF869A $00
script "P1 Never Faint"
run:
    poke $FF8537 $00
script "P1 Select Colour Scheme" \
 "comm:Use after picking character" \
 inter=0,5,1
change:
    poke $FF84A8 (param)
script "P1 Enable Rival Character"
run:
    poke $FF84C6 $05
script "P1 Enable CPU Shin Gouki"
run:
    poke $FF84C8 $03
script "P1 Disable Rival Character"
run:
    poke $FF84C6 $00
script "P1 Disable CPU Shin Gouki"
run:
    poke $FF84C8 $00
script "P1 Select Character" \
 "comm:Free player selection - Use on level VS screen" \
 "0x00/Ryu"\
 "0x01/Ken"\
 "0x02/Akuma"\
 "0x03/Charlie"\
 "0x04/Chun-Li"\
 "0x05/Adon"\
 "0x06/Sodom"\
 "0x07/Guy"\
 "0x08/Birdie"\
 "0x09/Rose"\
 "0x0A/M. Bison"\
 "0x0B/Sagat"\
 "0x0C/Dan"\
 "0x0D/Sakura"\
 "0x0E/Rolento"\
 "0x0F/Dhalsim"\
 "0x10/Zangief"\
 "0x11/Gen"\
 "0x12/Chun-Li (SF2)"\
 "0x14/Akuma (Blue)"\
 "0x17/Evil Ryu"
change:
    poke $FF8482 param
script " "
script "P2 Infinite Energy"
run:
    poke $FF8851 $90
    poke $FF8853 $90
script "P2 Drain All Energy Now!"
on:
    poke $FF8851 $00
    poke $FF8853 $00
script "P2 Always have Maximum POW"
run:
    poke $FF889F $90
script "P2 Always have Minimum POW"
run:
    poke $FF889F $00
script "P2 Get Maximum POW Now!"
on:
    poke $FF889F $90
script "P2 Get Minimum POW Now!"
on:
    poke $FF889F $00
script "P2 Infinite Custom Combo"
run:
    poke $FF8A99 $B0
    poke $FF8A9A $00
script "P2 Never Faint"
run:
    poke $FF8937 $00
script "P2 Select Colour Scheme" \
 "comm:Use after picking character" \
 inter=0,5,1
change:
    poke $FF88A8 (param)
script "P2 Enable Rival Character"
run:
    poke $FF88C6 $05
script "P2 Enable CPU Shin Gouki"
run:
    poke $FF88C8 $03
script "P2 Disable Rival Character"
run:
    poke $FF88C6 $00
script "P2 Disable CPU Shin Gouki"
run:
    poke $FF88C8 $00
script "P2 Select Character" \
 "comm:Free player selection - Use on level VS screen" \
 "0x00/Ryu"\
 "0x01/Ken"\
 "0x02/Akuma"\
 "0x03/Charlie"\
 "0x04/Chun-Li"\
 "0x05/Adon"\
 "0x06/Sodom"\
 "0x07/Guy"\
 "0x08/Birdie"\
 "0x09/Rose"\
 "0x0A/M. Bison"\
 "0x0B/Sagat"\
 "0x0C/Dan"\
 "0x0D/Sakura"\
 "0x0E/Rolento"\
 "0x0F/Dhalsim"\
 "0x10/Zangief"\
 "0x11/Gen"\
 "0x12/Chun-Li (SF2)"\
 "0x14/Akuma (Blue)"\
 "0x17/Evil Ryu"
change:
    poke $FF8882 param
script " "
script "P3 Infinite Energy"
run:
    poke $FF8C51 $90
    poke $FF8C53 $90
script "P3 Drain All Energy Now!"
on:
    poke $FF8C51 $00
    poke $FF8C53 $00
script "P3 Always have Maximum POW"
run:
    poke $FF8C9F $90
script "P3 Always have Minimum POW"
run:
    poke $FF8C9F $00
script "P3 Get Maximum POW Now!"
on:
    poke $FF8C9F $90
script "P3 Get Minimum POW Now!"
on:
    poke $FF8C9F $00
script "P3 Infinite Custom Combo"
run:
    poke $FF8E99 $B0
    poke $FF8E9A $00
script "P3 Never Faint"
run:
    poke $FF8D37 $00
script "P3 Select Colour Scheme" \
 "comm:Use after picking character" \
 inter=0,5,1
change:
    poke $FF8CA8 (param)
script "P3 Enable Rival Character"
run:
    poke $FF8CC6 $05
script "P3 Enable CPU Shin Gouki"
run:
    poke $FF8CC8 $03
script "P3 Disable Rival Character"
run:
    poke $FF8CC6 $00
script "P3 Disable CPU Shin Gouki"
run:
    poke $FF8CC8 $00
script "P3 Select Character" \
 "comm:Free player selection - Use on level VS screen" \
 "0x00/Ryu"\
 "0x01/Ken"\
 "0x02/Akuma"\
 "0x03/Charlie"\
 "0x04/Chun-Li"\
 "0x05/Adon"\
 "0x06/Sodom"\
 "0x07/Guy"\
 "0x08/Birdie"\
 "0x09/Rose"\
 "0x0A/M. Bison"\
 "0x0B/Sagat"\
 "0x0C/Dan"\
 "0x0D/Sakura"\
 "0x0E/Rolento"\
 "0x0F/Dhalsim"\
 "0x10/Zangief"\
 "0x11/Gen"\
 "0x12/Chun-Li (SF2)"\
 "0x14/Akuma (Blue)"\
 "0x17/Evil Ryu"
change:
    poke $FF8C82 param
script " "
script "No Background Music"
run:
    cpu audio
    dpoke $F018 $0000
    cpu main
script "Hide Background" \
 "comm:set to Venezuela stage for no BG sprites"
on:
    temp0=peek($FF8033)
    temp1=dpeek($0059F8)
    temp2=lpeek($0059FA)
run:
    poke $FF8033 temp0
    dpoke $0059F8 temp1
    lpoke $0059FA temp2
    if (dpeek($FF8109)!=$0andlpeek($FF810C)==$0)
      poke $FF8033 $0
      dpoke $FFC900 $0
      dpoke $FFCB00 $0
      dpoke $FFCD00 $0
      dpoke $FFE550 $0
      dpoke $0059F8 $4E71
      lpoke $0059FA $4E714E71
    endif
off:
    poke $FF8033 temp0
    dpoke $0059F8 temp1
    lpoke $0059FA temp2
