New MAME Cheat engine....some example conversions

If you are having problems finding or using cheats for an Emulator (particularly MAME/MESS) or have found a trick that you wish to share this is the place to do it. But please read the Cheat FAQ first.
Post Reply
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

New MAME Cheat engine....some example conversions

Post by Pugsy »

As some of you maybe aware, I am currently in the process of coding a convertor util (>90% complete) to convert cheat.dat into 7183 xml files. I thought I'd take this opportunity to show some examples simply to scare most of the cheat finders...... It scares me and I've had longer to get used to it.....be afraid


bankp.xml

Code: Select all

<mamecheat version="1">

	<cheat desc="Infinite Time">
		<script state="run">
			<action>main.pb@E0A5=38</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Bomb Time"> <comment>You will still need to shoot the bomb on the door to let someone through to deposit money but the bomb will never go off.</comment>
		<script state="run">
			<action>main.pb@E078=39</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@E0A0=06</action> 
		</script>
	</cheat>

	<cheat desc="One Money Bag needed Now!">
		<script state="on">
			<action>main.pb@E0CC=0B</action> 
		</script>
	</cheat>

	<cheat desc="Auto Shooting a Robber" tempvariables="16">
		<script state="on">
			<action>temp0=main.md@99CD</action>
			<action>temp1=main.md@DFBA</action>
			<action>temp2=main.md@DFBD</action>
			<action>temp3=main.md@DFC1</action>
			<action>temp4=main.mw@DFC4</action>
			<action>temp5=main.md@DFC6</action>
			<action>temp6=main.mw@DFCA</action>
			<action>temp7=main.md@DFCC</action>
			<action>temp8=main.md@DFCF</action>
			<action>temp9=main.md@DFD3</action>
			<action>temp10=main.md@DFD6</action>
			<action>temp11=main.md@DFD8</action>
			<action>temp12=main.mw@DFDC</action>
			<action>temp13=main.md@DFDE</action>
			<action>temp14=main.md@DFE2</action>
			<action>temp15=main.md@DFE5</action>
		</script>
		<script state="run">
			<action>main.md@99CD=00DFBACD|(main.md@99CD BAND ~00FFFFFF)</action> 
			<action>main.md@DFBA=00D5E5DD|(main.md@DFBA BAND ~00FFFFFF)</action> <!-- 1st = call $DFBA, 2nd = push ix / push de -->
			<action>main.md@DFBD=E46021DD</action> <!-- ld ix,$E460 -->
			<action>main.md@DFC1=00002011|(main.md@DFC1 BAND ~00FFFFFF)</action> <!-- ld de,$0020 -->
			<action>main.mw@DFC4=013E</action> <!-- ld a,$01 -->
			<action>main.md@DFC6=7602CBDD</action> <!-- bit 6,(ix+$02) -->
			<action>main.mw@DFCA=0C20</action> <!-- jr nz,$DFD8 -->
			<action>main.md@DFCC=003C19DD|(main.md@DFCC BAND ~00FFFFFF)</action> <!-- add ix,de / inc a -->
			<action>main.md@DFCF=F32004FE</action> <!-- cp $04 / jr nz,$DFC6 -->
			<action>main.md@DFD3=00E0063A|(main.md@DFD3 BAND ~00FFFFFF)</action> <!-- ld a,($E006) -->
			<action>main.md@DFD6=00000D18|(main.md@DFD6 BAND ~00FFFFFF)</action> <!-- jr $DFE5 -->
			<action>main.md@DFD8=022003FE</action> <!-- cp $03 / jr nz,$DFDE -->
			<action>main.mw@DFDC=043E</action> <!-- ld a,$04 -->
			<action>main.md@DFDE=07070707</action> <!-- rlca / rlca / rlca / rlca -->
			<action>main.md@DFE2=00E00632|(main.md@DFE2 BAND ~00FFFFFF)</action> <!-- ld ($E006),a -->
			<action>main.md@DFE5=C9E1DDD1</action> <!-- pop de / pop ix / ret -->
		</script>
		<script state="off">
			<action>main.md@99CD=temp0</action>
			<action>main.md@DFBA=temp1</action>
			<action>main.md@DFBD=temp2</action>
			<action>main.md@DFC1=temp3</action>
			<action>main.mw@DFC4=temp4</action>
			<action>main.md@DFC6=temp5</action>
			<action>main.mw@DFCA=temp6</action>
			<action>main.md@DFCC=temp7</action>
			<action>main.md@DFCF=temp8</action>
			<action>main.md@DFD3=temp9</action>
			<action>main.md@DFD6=temp10</action>
			<action>main.md@DFD8=temp11</action>
			<action>main.mw@DFDC=temp12</action>
			<action>main.md@DFDE=temp13</action>
			<action>main.md@DFE2=temp14</action>
			<action>main.md@DFE5=temp15</action>
		</script>
	</cheat>

	<cheat desc="Rapid Fire">
		<script state="run">
			<action>main.pb@E071=00|(main.pb@E071 BAND ~70)</action> 
		</script>
	</cheat>

	<cheat desc="[ Sound Test is enabled after ]"/>
	<cheat desc="[ 1st inserted a credit.      ]"/>
	<cheat desc="[ Left/Right = Select a code, ]"/>
	<cheat desc="[ B1 = Play, B2 = Play Fast   ]"/>


	<cheat desc="Sound Test" tempvariables="17">
		<script state="on">
			<action>temp0=main.md@0334</action>
			<action>temp1=main.md@0337</action>
			<action>temp2=main.mw@033B</action>
			<action>temp3=main.md@033D</action>
			<action>temp4=main.md@0341</action>
			<action>temp5=main.md@0345</action>
			<action>temp6=main.md@0349</action>
			<action>temp7=main.md@034D</action>
			<action>temp8=main.md@0351</action>
			<action>temp9=main.md@0354</action>
			<action>temp10=main.md@0357</action>
			<action>temp11=main.md@035B</action>
			<action>temp12=main.md@035F</action>
			<action>temp13=main.mw@0362</action>
			<action>temp14=main.md@0364</action>
			<action>temp15=main.md@0368</action>
			<action>temp16=main.mw@036B</action>
		</script>
		<script state="run">
			<output format="Sound Code : %02X">
				<argument>main.pb@(E010)</argument>
			</output>
			<action>main.md@0334=004700DB|(main.md@0334 BAND ~00FFFFFF)</action> <!-- in a,($00) / ld b,a -->
			<action>main.md@0337=B8E0113A</action> <!-- ld a,($E011) / cp b -->
			<action>main.mw@033B=2E28</action> <!-- jr z,$036B -->
			<action>main.md@033D=78E01021</action> <!-- ld hl,$E010 / ld a,b -->
			<action>main.md@0341=0E2802FE</action> <!-- cp $02 / jr z,$0353 -->
			<action>main.md@0345=0D2808FE</action> <!-- cp $08 / jr z,$0356 -->
			<action>main.md@0349=102810FE</action> <!-- cp $10 / jr z,$035D -->
			<action>main.md@034D=082880FE</action> <!-- cp $80 / jr z,$0359 -->
			<action>main.md@0351=00341418|(main.md@0351 BAND ~00FFFFFF)</action> <!-- jr $0367 / inc (hl) -->
			<action>main.md@0354=00351118|(main.md@0354 BAND ~00FFFFFF)</action> <!-- jr $0367 / dec (hl) -->
			<action>main.md@0357=FF160E18</action> <!-- jr $0367 / ld d,$FF -->
			<action>main.md@035B=00160218</action> <!-- jr $035E / ld d,$00 -->
			<action>main.md@035F=00001E7E|(main.md@035F BAND ~00FFFFFF)</action> <!-- ld a,(hl) / ld e,$00 -->
			<action>main.mw@0362=000E</action> <!-- ld c,$00 -->
			<action>main.md@0364=78DA04CD</action> <!-- call $DA04 / ld a,b -->
			<action>main.md@0368=00E01132|(main.md@0368 BAND ~00FFFFFF)</action> <!-- ld ($E011),a -->
			<action>main.mw@036B=C718</action> <!-- jr $0334 -->
		</script>
		<script state="off">
			<action>main.md@0334=temp0</action>
			<action>main.md@0337=temp1</action>
			<action>main.mw@033B=temp2</action>
			<action>main.md@033D=temp3</action>
			<action>main.md@0341=temp4</action>
			<action>main.md@0345=temp5</action>
			<action>main.md@0349=temp6</action>
			<action>main.md@034D=temp7</action>
			<action>main.md@0351=temp8</action>
			<action>main.md@0354=temp9</action>
			<action>main.md@0357=temp10</action>
			<action>main.md@035B=temp11</action>
			<action>main.md@035F=temp12</action>
			<action>main.mw@0362=temp13</action>
			<action>main.md@0364=temp14</action>
			<action>main.md@0368=temp15</action>
			<action>main.mw@036B=temp16</action>
		</script>
	</cheat>

</mamecheat>
<!-- Cheat file created from cheat.dat by http://cheat.retrogames.com, see cheat.txt for list of contributors. -->
invaders.xml

Code: Select all

<mamecheat version="1">

	<cheat desc="Invaders never drop">
		<script state="run">
			<action>main.pb@2009=78</action> 
		</script>
	</cheat>

	<cheat desc="Invaders don't fire">
		<script state="run">
			<action>main.pw@2069=3000</action> 
		</script>
	</cheat>

	<cheat desc="Bullet Invincibility">
		<script state="on">
			<action>temp0=main.mb@0293</action>
		</script>
		<script state="run">
			<action>main.mb@0293=C3</action> 
			<action>main.pb@2094=00|(main.pb@2094 BAND ~04)</action> 
			<action>main.pb@2015=FF</action> 
		</script>
		<script state="off">
			<action>main.mb@0293=temp0</action>
		</script>
	</cheat>

	<cheat desc="Bullet Speed always =">
		<parameter variable="param">
			<item value="00">Off</item>
			<item value="01">Slow</item>
			<item value="02">Normal</item>
			<item value="03">Fast</item>
			<item value="04">V Fast</item>
			<item value="05">Turbo</item>
		</parameter>
		<script state="run">
			<action condition="(param==01)">main.pb@202C=02</action> 
			<action condition="(param==02)">main.pb@202C=04</action> 
			<action condition="(param==03)">main.pb@202C=06</action> 
			<action condition="(param==04)">main.pb@202C=08</action> 
			<action condition="(param==05)">main.pb@202C=0A</action> 
		</script>
	</cheat>

	<cheat desc="Autofire Mode">
		<script state="on">
			<action>temp0=main.mb@163E</action>
		</script>
		<script state="run">
			<action>main.mb@163E=00</action> 
		</script>
		<script state="off">
			<action>main.mb@163E=temp0</action>
		</script>
	</cheat>

	<cheat desc=" "/>

	<cheat desc="Infinite Lives PL1">
		<script state="run">
			<action>main.pb@21FF=07</action> 
		</script>
	</cheat>

	<cheat desc="Kill All Invaders Now! PL1">
		<script state="on">
			<action>main.pd@2100=00000000</action> 
			<action>main.pd@2104=00000000</action> <!-- 1st Line 2100 to 210A -->
			<action>main.pd@2108=00000000</action> <!-- 2nd Line 210B to 2115 -->
			<action>main.pd@210C=00000000</action> <!-- 3rd Line 2116 to 2120 -->
			<action>main.pd@2110=00000000</action> <!-- 4th Line 2121 to 212B -->
			<action>main.pd@2114=00000000</action> <!-- Top Line 212C to 2136 -->
			<action>main.pd@2118=00000000</action> 
			<action>main.pd@211C=00000000</action> 
			<action>main.pd@2120=00000000</action> 
			<action>main.pd@2124=00000000</action> 
			<action>main.pd@2128=00000000</action> 
			<action>main.pd@212C=00000000</action> 
			<action>main.pd@2130=00000000</action> 
			<action>main.pd@2134=00000000|(main.pd@2134 BAND ~00FFFFFF)</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives PL2">
		<script state="run">
			<action>main.pb@22FF=07</action> 
		</script>
	</cheat>

	<cheat desc="Kill All Invaders Now! PL2">
		<script state="on">
			<action>main.pd@2200=00000000</action> 
			<action>main.pd@2204=00000000</action> <!-- 1st Line 2200 to 220A -->
			<action>main.pd@2208=00000000</action> <!-- 2nd Line 220B to 2215 -->
			<action>main.pd@220C=00000000</action> <!-- 3rd Line 2216 to 2220 -->
			<action>main.pd@2210=00000000</action> <!-- 4th Line 2221 to 222B -->
			<action>main.pd@2214=00000000</action> <!-- Top Line 222C to 2236 -->
			<action>main.pd@2218=00000000</action> 
			<action>main.pd@221C=00000000</action> 
			<action>main.pd@2220=00000000</action> 
			<action>main.pd@2224=00000000</action> 
			<action>main.pd@2228=00000000</action> 
			<action>main.pd@222C=00000000</action> 
			<action>main.pd@2230=00000000</action> 
			<action>main.pd@2234=00000000|(main.pd@2234 BAND ~00FFFFFF)</action> 
		</script>
	</cheat>

</mamecheat>
<!-- Cheat file created from cheat.dat by http://cheat.retrogames.com, see cheat.txt for list of contributors. -->

cham24.xml

Code: Select all

<mamecheat version="1">

	<cheat desc="Select Game"> <comment>Faster and easier than the ingame selection</comment>
		<parameter variable="param">
			<item value="00">Off</item>
			<item value="01">01. Star Soldier</item>
			<item value="02">02. Goonies</item>
			<item value="03">03. Mario Bros 2</item>
			<item value="04">04. Grading (Gradius)</item>
			<item value="05">05. Legedry (The Legend of Kage)</item>
			<item value="06">06. B-Wings</item>
			<item value="07">07. Exerion</item>
			<item value="08">08. Front Line</item>
			<item value="09">09. Macross</item>
			<item value="10">10. Arkanoid</item>
			<item value="11">11. Islander (Wonder Boy)</item>
			<item value="12">12. Nuts + Milk</item>
			<item value="13">13. Pac-man</item>
			<item value="14">14. Battle City</item>
			<item value="15">15. Dig Dug</item>
			<item value="16">16. Pooyan</item>
			<item value="17">17. Twin Bee</item>
			<item value="18">18. Donkey Kong</item>
			<item value="19">19. Spartan-X</item>
			<item value="20">20. Galaxian</item>
			<item value="21">21. Star Force</item>
			<item value="22">22. Xevious</item>
			<item value="23">23. Galaga</item>
			<item value="24">24. Super Pinball</item>
		</parameter>
		<script state="run">
			<action condition="(param==01)">main.pw@000B=0000</action> 
			<action condition="(param==02)">main.pw@000B=0100</action> 
			<action condition="(param==03)">main.pw@000B=0200</action> 
			<action condition="(param==04)">main.pw@000B=0300</action> 
			<action condition="(param==05)">main.pw@000B=0400</action> 
			<action condition="(param==06)">main.pw@000B=0500</action> 
			<action condition="(param==07)">main.pw@000B=0600</action> 
			<action condition="(param==08)">main.pw@000B=0700</action> 
			<action condition="(param==09)">main.pw@000B=0800</action> 
			<action condition="(param==10)">main.pw@000B=0900</action> 
			<action condition="(param==11)">main.pw@000B=0A00</action> 
			<action condition="(param==12)">main.pw@000B=0B00</action> 
			<action condition="(param==13)">main.pw@000B=0001</action> 
			<action condition="(param==14)">main.pw@000B=0101</action> 
			<action condition="(param==15)">main.pw@000B=0201</action> 
			<action condition="(param==16)">main.pw@000B=0301</action> 
			<action condition="(param==17)">main.pw@000B=0401</action> 
			<action condition="(param==18)">main.pw@000B=0501</action> 
			<action condition="(param==19)">main.pw@000B=0601</action> 
			<action condition="(param==20)">main.pw@000B=0701</action> 
			<action condition="(param==21)">main.pw@000B=0801</action> 
			<action condition="(param==22)">main.pw@000B=0901</action> 
			<action condition="(param==23)">main.pw@000B=0A01</action> 
			<action condition="(param==24)">main.pw@000B=0B01</action> 
		</script>
	</cheat>

	<cheat desc="------------------"/>
	<cheat desc="01. Star Soldier"/>
	<cheat desc="------------------"/>

	<cheat desc="Select Starting Stage">
		<parameter variable="param" min="1" max="7" step="1"/>
		<script state="run">
			<action condition="(main.pb@0036==01)">main.pb@0036=(param)</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0037=09</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility"> <comment>Doesn't work against crashing into the end of stage 'Mother Brain'</comment>
		<script state="run">
			<action>main.pb@0040=37</action> 
		</script>
	</cheat>

	<cheat desc="Auto 5-Way Shot">
		<script state="run">
			<action>main.pw@003C=0504</action> 
		</script>
	</cheat>

	<cheat desc="1 Hit Kills">
		<script state="run">
			<action>main.pb@0027=FF</action> 
		</script>
	</cheat>

	<cheat desc="-------------"/>
	<cheat desc="02. Goonies"/>
	<cheat desc="-------------"/>

	<cheat desc="Infinite Time">
		<script state="run">
			<action>main.pb@0090=99</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0046=99</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Energy">
		<script state="run">
			<action>main.pb@00A0=17</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="run">
			<action>main.pb@00D0=02</action> 
			<action>main.pb@05DD=02</action> 
			<action>main.pb@004B=9F</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Bombs">
		<script state="run">
			<action>main.pb@05F3=FA</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Keys">
		<script state="run">
			<action>main.pb@05DF=04</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Catapult Ammo">
		<script state="run">
			<action>main.pb@05F2=64</action> 
		</script>
	</cheat>

	<cheat desc="Maximum Rescues">
		<script state="run">
			<action>main.pb@05D6=07</action> 
		</script>
	</cheat>

	<cheat desc="Always have Earplugs"> <comment>No damage against gang's note attack</comment>
		<script state="run">
			<action>main.pb@0049=01|(main.pb@0049 BAND ~01)</action> 
		</script>
	</cheat>

	<cheat desc="Always have Waterproof Wear"> <comment>No damage against steam, drop of water and waterfall</comment>
		<script state="run">
			<action>main.pb@0049=02|(main.pb@0049 BAND ~02)</action> 
		</script>
	</cheat>

	<cheat desc="Always have Helmet"> <comment>No damage against a falling rock</comment>
		<script state="run">
			<action>main.pb@0049=04|(main.pb@0049 BAND ~04)</action> 
		</script>
	</cheat>

	<cheat desc="Always have Fireproof Wear"> <comment>No damage against fire</comment>
		<script state="run">
			<action>main.pb@0049=08|(main.pb@0049 BAND ~08)</action> 
		</script>
	</cheat>

	<cheat desc="Always have Rucksack"> <comment>Enables you to have 2 bombs at the same time</comment>
		<script state="run">
			<action>main.pb@0049=10|(main.pb@0049 BAND ~10)</action> 
		</script>
	</cheat>

	<cheat desc="Always have Armor"> <comment>No damage against gang's gun, skeleton's bone attack and bat</comment>
		<script state="run">
			<action>main.pb@0049=20|(main.pb@0049 BAND ~20)</action> 
		</script>
	</cheat>

	<cheat desc="Always have Hyper Shoes"> <comment>Enable long jump at the particular place</comment>
		<script state="run">
			<action>main.pb@0049=40|(main.pb@0049 BAND ~40)</action> 
		</script>
	</cheat>

	<cheat desc="Rapid Fire">
		<script state="run">
			<action>main.pb@0007=00|(main.pb@0007 BAND ~40)</action> 
		</script>
	</cheat>

	<cheat desc="Always have 7 Diamonds"> <comment>Energy recovery when you get a diamond</comment>
		<script state="run">
			<action>main.pb@05D8=07</action> 
		</script>
	</cheat>

	<cheat desc="Always Red Pod Changes Yellow"> <comment>Yellow Pod gives a extra life</comment>
		<script state="run">
			<action>main.pb@0093=01</action> 
		</script>
	</cheat>

	<cheat desc="------------------"/>
	<cheat desc="03. Mario Bros 2"/>
	<cheat desc="------------------"/>

	<cheat desc="Infinite Time">
		<script state="run">
			<action condition="(frame % 120 == 0)">main.pb@07FA=0A</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@075A=08</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility"> <comment>You can still die when you fall down holes though</comment>
		<script state="on">
			<action>temp0=main.md@EEE9</action>
		</script>
		<script state="run">
			<action>main.pb@079E=02</action> 
			<action>main.md@EEE9=00EA00A9|(main.md@EEE9 BAND ~00FFFFFF)</action> <!-- ROM cheat to fix the flicker -->
		</script>
		<script state="off">
			<action>main.md@EEE9=temp0</action>
		</script>
	</cheat>

	<cheat desc="Select Character Sprite Now!"> <!-- Note Changing this to a perm cheat has the effect of giving you Invincibility with all the non-normal characters -->
		<parameter variable="param">
			<item value="00">Off</item>
			<item value="01">Normal Mario</item>
			<item value="02">Big Mario</item>
			<item value="03">Fire Mario</item>
		</parameter>
		<script state="change">
			<action condition="(param==01)">main.pb@0754=01</action> 
			<action condition="(param==01)">main.pb@0756=00</action> 
			<action condition="(param==02)">main.pb@0754=00</action> 
			<action condition="(param==02)">main.pb@0756=01</action> 
			<action condition="(param==03)">main.pb@0754=00</action> 
			<action condition="(param==03)">main.pb@0756=02</action> 
		</script>
	</cheat>

	<cheat desc="-----------------------"/>
	<cheat desc="04. Grading (Gradius)"/>
	<cheat desc="-----------------------"/>

	<!--  note ROM cheats from pc_gradius should work but they aren't quick enough it seems -->

	<cheat desc="Infinite Shields">
		<script state="run">
			<action>main.pb@0046=0A</action> 
		</script>
	</cheat>

	<cheat desc="Select Speed Up Speed"> <comment>Don't go too high!</comment>
		<parameter variable="param" min="0" max="255" step="1"/>
		<script state="change">
			<action>main.pb@0040=(param)</action> 
		</script>
	</cheat>

	<cheat desc="Rapid Fire">
		<script state="run">
			<action>main.pd@03A6=00000000|(main.pd@03A6 BAND ~00FFFFFF)</action> 
		</script>
	</cheat>

	<cheat desc="Always have a Good Speed Up">
		<script state="run">
			<action>main.pb@0040=0A</action> 
		</script>
	</cheat>

	<cheat desc="Always have Full Options">
		<script state="run">
			<action>main.pb@0045=02</action> 
		</script>
	</cheat>

	<cheat desc="Always have Missile">
		<script state="run">
			<action>main.pb@0041=01</action> 
		</script>
	</cheat>

	<cheat desc="Always have Laser"> <comment>You can't have Double then</comment>
		<script state="run">
			<action>main.pb@0044=01</action> 
		</script>
	</cheat>

	<cheat desc="Always have Double"> <comment>You can't have Laser then</comment>
		<script state="run">
			<action>main.pb@0044=02</action> 
		</script>
	</cheat>

	<cheat desc="Get a Good Speed Up Now!">
		<script state="on">
			<action>main.pb@0040=0A</action> 
		</script>

	</cheat>

	<cheat desc="Get Full Options Now!">
		<script state="on">
			<action>main.pb@0045=02</action> 
		</script>
	</cheat>

	<cheat desc="Get Missile Now!">
		<script state="on">
			<action>main.pb@0041=01</action> 
		</script>
	</cheat>

	<cheat desc="Get Laser Now!"> <comment>You can't have Double then</comment>
		<script state="on">
			<action>main.pb@0044=01</action> 
		</script>
	</cheat>

	<cheat desc="Get Double Now!"> <comment>You can't have Laser then</comment>
		<script state="on">
			<action>main.pb@0044=02</action> 
		</script>
	</cheat>

	<cheat desc="Lose missiles Now!">
		<script state="on">
			<action>main.pb@0041=00</action> 
		</script>
	</cheat>

	<cheat desc="Lose double/laser Now!">
		<script state="on">
			<action>main.pb@0044=00</action> 
		</script>
	</cheat>

	<cheat desc="Light Up Speed Button Now!">
		<script state="on">
			<action>main.pb@0042=01</action> 
		</script>
	</cheat>

	<cheat desc="Light Up Missile Button Now!">
		<script state="on">
			<action>main.pb@0042=02</action> 
		</script>
	</cheat>

	<cheat desc="Light Up Double Button Now!">
		<script state="on">
			<action>main.pb@0042=03</action> 
		</script>
	</cheat>

	<cheat desc="Light Up Laser Button Now!">
		<script state="on">
			<action>main.pb@0042=04</action> 
		</script>
	</cheat>

	<cheat desc="Light Up Option Button Now!">
		<script state="on">
			<action>main.pb@0042=05</action> 
		</script>
	</cheat>

	<cheat desc="Light Up ? Button Now!">
		<script state="on">
			<action>main.pb@0042=06</action> 
		</script>
	</cheat>

	<cheat desc="No button lit Now!">
		<script state="on">
			<action>main.pb@0042=00</action> 
		</script>
	</cheat>

	<cheat desc=" "/>

	<cheat desc="Infinite Lives PL1">
		<script state="run">
			<action>main.pb@0020=63</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives PL2">
		<script state="run">
			<action>main.pb@0021=63</action> 
		</script>
	</cheat>

	<cheat desc="----------------------------------"/>
	<cheat desc="05. Legedry (The Legend of Kage)"/>
	<cheat desc="----------------------------------"/>


	<!--  :cham24:20800000:9B22:00000060:FFFFFFFF:Invincibility:NOT WORKING LOOKS LIKE THE POKING ISN'T FAST ENOUGH, watch it - only overwrites when the game is paused. bp 9b22 and then pc=9b21 proves it works -->
	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@002B=63</action> 
		</script>
	</cheat>

	<cheat desc="-------------"/>
	<cheat desc="06. B-Wings"/>
	<cheat desc="-------------"/>
	<cheat desc="This game doesn't work"/>
	<cheat desc="-------------"/>
	<cheat desc="07. Exerion"/>
	<cheat desc="-------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@003C=09</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mw@8FA4</action>
			<action>temp1=main.mw@A5FE</action>
			<action>temp2=main.mw@A9B3</action>
			<action>temp3=main.mw@AB2B</action>
		</script>
		<script state="run">
			<action>main.mw@8FA4=1390</action> 
			<action>main.mw@A5FE=2C90</action> <!-- Pt 1 Bullets, Pt 2 Enemies -->
			<action>main.mw@A9B3=38EA</action> <!-- Mines -->
			<action>main.mw@AB2B=1090</action> <!-- Missiles -->
		</script>
		<script state="off">
			<action>main.mw@8FA4=temp0</action>
			<action>main.mw@A5FE=temp1</action>
			<action>main.mw@A9B3=temp2</action>
			<action>main.mw@AB2B=temp3</action>
		</script>
	</cheat>

	<cheat desc="----------------"/>
	<cheat desc="08. Front Line"/>
	<cheat desc="----------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0021=0A</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.md@D091</action>
			<action>temp1=main.md@FFE8</action>
			<action>temp2=main.md@FFEC</action>
		</script>
		<script state="run">
			<action>main.md@D091=00FFE820|(main.md@D091 BAND ~00FFFFFF)</action> <!-- D091 (20 E8 FF) jsr  $FFE8 -->
			<action>main.md@FFE8=031083C0</action> <!-- FFE8 (C0 83) cpy  #$83, FFEA (10 03) bpl  $FFEF -->
			<action>main.md@FFEC=60002599</action> <!-- FFEC (99 25 00) sta  $0025,y , FFEF (60) rts -->
		</script>
		<script state="off">
			<action>main.md@D091=temp0</action>
			<action>main.md@FFE8=temp1</action>
			<action>main.md@FFEC=temp2</action>
		</script>
	</cheat>

	<cheat desc="-------------"/>
	<cheat desc="09. Macross"/>
	<cheat desc="-------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@00F4=99</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Energy">
		<script state="run">
			<action>main.pb@00EB=30</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Ammo">
		<script state="run">
			<action>main.pb@00ED=06</action> 
		</script>
	</cheat>

	<cheat desc="--------------"/>
	<cheat desc="10. Arkanoid"/>
	<cheat desc="--------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@000D=07</action> 
		</script>
	</cheat>

	<cheat desc="Finish this Level Now!">
		<script state="on">
			<action>main.pb@000F=00</action> 
		</script>
	</cheat>

	<cheat desc="Always Keep One Ball in Play">
		<script state="run">
			<action condition="(main.pb@0037 LT 00) OR (main.pb@0037 GT E8)">main.pb@0037=C0</action> 
		</script>
	</cheat>

	<cheat desc="---------------------------"/>
	<cheat desc="11. Islander (Wonder Boy)"/>
	<cheat desc="---------------------------"/>

	<cheat desc="Infinite Time">
		<script state="run">
			<action condition="(frame % 420 == 0)">main.pb@0076=21</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@003F=09</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility"> <comment>Note - you will still die if you fall in any holes/water</comment>
		<script state="on">
			<action>temp0=main.mb@BFF4</action>
		</script>
		<script state="run">
			<action>main.mb@BFF4=60</action> 
		</script>
		<script state="off">
			<action>main.mb@BFF4=temp0</action>
		</script>
	</cheat>

	<cheat desc="-----------------"/>
	<cheat desc="12. Nuts + Milk"/>
	<cheat desc="-----------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@00BE=09</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility"> <comment>You can still die by dropping into the water though</comment>
		<script state="on">
			<action>temp0=main.mb@D669</action>
		</script>
		<script state="run">
			<action>main.mb@D669=60</action> 
		</script>
		<script state="off">
			<action>main.mb@D669=temp0</action>
		</script>
	</cheat>

	<cheat desc="Always have Maximum Bonus">
		<script state="run">
			<action>main.pb@0021=63</action> 
		</script>
	</cheat>

	<cheat desc="-------------"/>
	<cheat desc="13. Pac-man"/>
	<cheat desc="-------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0067=06</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@D2A3</action>
		</script>
		<script state="run">
			<action>main.mb@D2A3=04</action> 
		</script>
		<script state="off">
			<action>main.mb@D2A3=temp0</action>
		</script>
	</cheat>

	<cheat desc="-----------------"/>
	<cheat desc="14. Battle City"/>
	<cheat desc="-----------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0051=0A</action> 
		</script>
	</cheat>

	<cheat desc="Always have Shield">
		<script state="run">
			<action>main.pb@0089=02</action> 
		</script>
	</cheat>

	<cheat desc="Finish this Stage Now!">
		<script state="on">
			<action>main.pb@0080=00</action> 
		</script>
	</cheat>

	<cheat desc="-------------"/>
	<cheat desc="15. Dig Dug"/>
	<cheat desc="-------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0060=0A</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@E406</action>
			<action>temp1=main.mw@E440</action>
		</script>
		<script state="run">
			<action condition="(main.pb@00B0==06)">main.pb@00B0=00</action> 
			<action>main.mb@E406=00</action> <!-- Pt 1 RAM Rocks, Pt 2 collisions -->
			<action>main.mw@E440=38EA</action> <!-- Dragon Fire -->
		</script>
		<script state="off">
			<action>main.mb@E406=temp0</action>
			<action>main.mw@E440=temp1</action>
		</script>
	</cheat>

	<cheat desc="------------"/>
	<cheat desc="16. Pooyan"/>
	<cheat desc="------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0052=04</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@D972</action>
			<action>temp1=main.mb@DB21</action>
			<action>temp2=main.mb@DC36</action>
		</script>
		<script state="run">
			<action>main.mb@D972=A9</action> <!-- Stop Large Rock dropping -->
			<action>main.mb@DB21=00</action> <!-- Small Rocks -->
			<action>main.mb@DC36=60</action> <!-- Bites -->
		</script>
		<script state="off">
			<action>main.mb@D972=temp0</action>
			<action>main.mb@DB21=temp1</action>
			<action>main.mb@DC36=temp2</action>
		</script>
	</cheat>

	<cheat desc="--------------"/>
	<cheat desc="17. Twin Bee"/>
	<cheat desc="--------------"/>

	<cheat desc="Infinite Lives">
		<script state="on">
			<action>temp0=main.mb@B7BC</action>
		</script>
		<script state="run">
			<action>main.mb@B7BC=A5</action> 
		</script>
		<script state="off">
			<action>main.mb@B7BC=temp0</action>
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@EAA2</action>
		</script>
		<script state="run">
			<action>main.mb@EAA2=B5</action> 
		</script>
		<script state="off">
			<action>main.mb@EAA2=temp0</action>
		</script>
	</cheat>

	<cheat desc="Always have Bombs">
		<script state="on">
			<action>temp0=main.mb@EA6B</action>
		</script>
		<script state="run">
			<action>main.mb@EA6B=B5</action> 
		</script>
		<script state="off">
			<action>main.mb@EA6B=temp0</action>
		</script>
	</cheat>

	<cheat desc="Always have 3-Way Weapon">
		<script state="run">
			<action>main.pb@07C7=01</action> 
		</script>
	</cheat>

	<cheat desc="-----------------"/>
	<cheat desc="18. Donkey Kong"/>
	<cheat desc="-----------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0055=09</action> 
		</script>
	</cheat>

	<cheat desc="Maximum Bonus">
		<script state="run">
			<action>main.pb@002E=9A</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@D22A</action>
			<action>temp1=main.mb@D61A</action>
			<action>temp2=main.mb@D6C2</action>
			<action>temp3=main.mb@EC62</action>
			<action>temp4=main.mb@ED9D</action>
			<action>temp5=main.mb@EDEF</action>
		</script>
		<script state="run">
			<action>main.mb@D22A=A9</action> <!-- Walk on Air (works in conjunction with Walk off Platform) -->
			<action>main.mb@D61A=00</action> <!-- Jump off Platform -->
			<action>main.mb@D6C2=01</action> <!-- Walk off Platform -->
			<action>main.mb@EC62=00</action> <!-- Normal Barrels -->
			<action>main.mb@ED9D=00</action> <!-- Fire Barrels -->
			<action>main.mb@EDEF=00</action> <!-- Oil Barrel on Fire -->
		</script>
		<script state="off">
			<action>main.mb@D22A=temp0</action>
			<action>main.mb@D61A=temp1</action>
			<action>main.mb@D6C2=temp2</action>
			<action>main.mb@EC62=temp3</action>
			<action>main.mb@ED9D=temp4</action>
			<action>main.mb@EDEF=temp5</action>
		</script>
	</cheat>

	<cheat desc="---------------"/>
	<cheat desc="19. Spartan-X"/>
	<cheat desc="---------------"/>

	<cheat desc="Infinite Time">
		<script state="run">
			<action condition="(frame % 60 == 0)">main.pw@0392=0909</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@005C=0A</action> 
		</script>
	</cheat>

	<cheat desc="Infinite Energy"> <comment>Turn OFF at the end of the level to progress</comment>
		<script state="run">
			<action>main.pb@04A6=30</action> 
		</script>
	</cheat>

	<cheat desc="--------------"/>
	<cheat desc="20. Galaxian"/>
	<cheat desc="--------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0042=03</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mw@E60D</action>
			<action>temp1=main.mb@EC8A</action>
		</script>
		<script state="run">
			<action>main.mw@E60D=38EA</action> 
			<action>main.mb@EC8A=60</action> <!-- Pt 1 bullets, Pt 2 collisions -->
		</script>
		<script state="off">
			<action>main.mw@E60D=temp0</action>
			<action>main.mb@EC8A=temp1</action>
		</script>
	</cheat>

	<cheat desc="----------------"/>
	<cheat desc="21. Star Force"/>
	<cheat desc="----------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0050=09</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@DE97</action>
		</script>
		<script state="run">
			<action>main.mb@DE97=A5</action> 
		</script>
		<script state="off">
			<action>main.mb@DE97=temp0</action>
		</script>
	</cheat>

	<cheat desc="-------------"/>
	<cheat desc="22. Xevious"/>
	<cheat desc="-------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@008D=0A</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mb@CEFC</action>
			<action>temp1=main.mw@EC20</action>
			<action>temp2=main.mw@EA5D</action>
		</script>
		<script state="run">
			<action>main.mb@CEFC=60</action> 
			<action>main.mw@EC20=38EA</action> <!-- Pt 1 bullets, Pt 2 most collisions -->
			<action>main.mw@EA5D=38EA</action> <!-- remaining collisions -->
		</script>
		<script state="off">
			<action>main.mb@CEFC=temp0</action>
			<action>main.mw@EC20=temp1</action>
			<action>main.mw@EA5D=temp2</action>
		</script>
	</cheat>

	<cheat desc="------------"/>
	<cheat desc="23. Galaga"/>
	<cheat desc="------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0487=05</action> 
		</script>
	</cheat>

	<cheat desc="Invincibility">
		<script state="on">
			<action>temp0=main.mw@E84C</action>
			<action>temp1=main.mw@E890</action>
		</script>
		<script state="run">
			<action>main.mw@E84C=EA18</action> 
			<action>main.mw@E890=EA18</action> <!-- Pt 1 Bullets, Pt 2 Enemies -->
		</script>
		<script state="off">
			<action>main.mw@E84C=temp0</action>
			<action>main.mw@E890=temp1</action>
		</script>
	</cheat>

	<cheat desc="-------------------"/>
	<cheat desc="24. Super Pinball"/>
	<cheat desc="-------------------"/>

	<cheat desc="Infinite Lives">
		<script state="run">
			<action>main.pb@0151=09</action> 
		</script>
	</cheat>

</mamecheat>
<!-- Cheat file created from cheat.dat by http://cheat.retrogames.com, see cheat.txt for list of contributors. -->
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
MRMIdAS
Posts: 105
Joined: Thu Oct 25, 2007 4:24 pm
Location: Sheffield, England

Post by MRMIdAS »

So let me see if I'm understanding this.

<action>main.pb@0151=09</action>

<Action> </Action> is self explanatory, Main.pb I'm assuming means the main "board" of the game, @0151 is the memory address and =09 is the poke value?
Win if you can
Lose if you must
ALWAYS CHEAT!
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

Post by Pugsy »

main.pb@0151=09

main is the cpu tag, in the old cheat engine this would generally have been cpu0. Unfortunately the cpu flags can vary from game to game and there's a likelihood they will get changed ....just hoping that main will cover most things (I've handled the non-cpu0 cheats already as long as the tags don't change too much)

p is the type of memory it's writing - p is the standard RAM write, alternatives are m (ROM), e (eeprom) or r (raw write).

b is for byte and it's the size of the write - b byte, w word (2 bytes) d double word (4 bytes) and q quad word (8 bytes).

And yes you were right about the address and the poke

So that cheats pokes a byte of 09 into the address 0151 in the RAM area of the main CPU. It's contained in a script of "run" so it will run every frame.
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
User avatar
Heihachi_73
Posts: 267
Joined: Thu Jan 26, 2006 8:10 am
Location: Melbourne, Australia
Contact:

Post by Heihachi_73 »

Regarding byte/word/double/quad cheats, how will this affect cheats that use an odd amount, like 3 bytes (the old 00200000 cheats)? Would you need to split them into two linked cheats just for these to work? It sounds like a retrograde step to me.

I have only noticed this with the Tekken cheats I've been going through so far. The animations use 3 bytes for the ID, but the 4th byte shows which frame is being executed, not a double zero.

Example cheat:

Code: Select all

:tekken:00200001:265978:00114DD0:FFFFFFFF:Test PL2 Move
:tekken:00210001:265980:00114DD0:FFFFFFFF:Test PL2 Move (2/3)
:tekken:00210001:266690:00114DD0:FFFFFFFF:Test PL2 Move (3/3)
The above code is also harmless, I don't have a clue how to find the trigger which makes the move connect! The cheat simply runs the animation, whether it be a move, standing, blocking or falling, a win animation or anything else.

I suppose, making these reset the 4th byte to 00 would actually be better in a way, it would align everything instead of playing each frame randomly.

Here I go again, hijacking yet another thread with useless Tekken garbage! :lol:
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

Post by Pugsy »

Well, that was one of the big problems I had with the converter. It would have been easy if it wasn't for the fact that big endian and little endian were pretty evenly split (with LOTs of 3 byte cheats) so automating it was going to be a lot of work so what I did in the end was change all the Big Endian cheats manually and that ensured all the 3 byte cheats left where little endian.

Anyway the way to convert a 3 byte BE cheat into a 4 byte BE cheat is to change it from 3 byte to 4 byte, shift the poke value 2 places to the left and do the same with the mask so FFFFFFFF would become FFFFFF00

so as an example:

:batlbubl:00200000:F04C47:00060606:FFFFFFFF:Infinite Lives

becomes

:batlbubl:00300000:F04C47:06060600:FFFFFF00:Infinite Lives


and your example would become

Code: Select all

:tekken:00300001:265978:114DD000:FFFFFF00:Test PL2 Move
:tekken:00310001:265980:114DD000:FFFFFF00:Test PL2 Move (2/3)
:tekken:00310001:266690:114DD000:FFFFFF00:Test PL2 Move (3/3)
This works in the old cheat engine and is ok for conversion whilst untouched BE 3 byte cheats are not.
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
User avatar
Heihachi_73
Posts: 267
Joined: Thu Jan 26, 2006 8:10 am
Location: Melbourne, Australia
Contact:

Post by Heihachi_73 »

Thanks for clearing that up for me.

By the way, is it worth updating MAME and MESS to 0.127, or wait until everyone's 'happy' with the new cheat system? Hopefully not in two years time or something, but I'm not holding my breath!

Anyone up to making a standalone trainer which uses the 'good' cheat format? That would be awesome! :lol:

You could make it based on the MESS format by using the exe name and CRC at the start, for example:

Code: Select all

; [ ZiNc 1.1 - Tekken 2 Ver.A ]
:zinc:B1A7FCE2:00000100:66ECAC0:00000017:FFFFFFFF:Select Character's Moves P1
:zinc:B1A7FCE2:00000100:66EF450:00000017:FFFFFFFF:Select Character P1
:zinc:B1A7FCE2:00300000:66F43E8:00001734:FFFFFFFF:Infinite Time
The hard part would be making it appear when you hit Tab...especially when programs use everything from GDI to DirectX and OpenGL 3D modes etc.
Miguelo
Posts: 45
Joined: Mon Aug 29, 2005 8:59 pm
Location: spain

Post by Miguelo »

hi, long time no see you guys, but i have SEVERAL work to do :P...

first THANK YOU to puggsy for try make that convertor util...

and second, that yes, i dont like too much (well to be honest, i dont like nothing!) that new cheat system... :P

is very rare, and before that new system, in a single line of text you can write the cheat without none problems, or add all the cheats in a single cheat.dat file by simple edit that file and add your cheats at the end of the official cheat.dat.

i spend several years to learn all that (and after all, i dont know all about it) and this is starts all again from zero :P


and now, all those html lines really afraid me :o .
is true that i see, that in my little old pc (1700gzh and 1gb memory i think i have) if the cheat file is a little big, the mame takes more time for load every game, but i think that maybe exist another solution than split the cheat file in multiple little files and in special with these really rare system.

i really apreciate than the makers want to make the cheat engine better, this is good, but not in that way. :(

sorry my bad english and i hope you all can understand my explanation.
and i dont want to be too rude, but is the truth of the things i see.

after all, one of my dreams are play all those games i play when i are a boy and thanks for all those mame team, i can play almost all that games and i dont have words for say THANK YOU to the mame team for all those incredible work maked that mame is.


pd:
one solution for all, can be make the cheat system also compatible with the old cheat.dat files and system. and we all can use that like until now...

greetings ;).
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

Post by Pugsy »

I miss it more than anybody but it's gone well past the point of no-return, the cheat engine as it was has gone forever from new MAMEs along with the cheat.dat. The changes to the memory/region/cpu system mean that it's a massive task to re-add the old cheat engine/cheat.dat support.

If you still want to use the old cheat engine you have to stick with older MAMEs and forgo any new games or fixes/improvements. As it stands the new cheat engine is currently only for the cheat user rather than the cheat finder anyway - maybe some time in the future when specific cheat finding functionality is added you might feel different as it should be capable of saving new cheats in the correct xml format.
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
Miguelo
Posts: 45
Joined: Mon Aug 29, 2005 8:59 pm
Location: spain

Post by Miguelo »

puggsy, thanks for the explanation. so if i understand fine, the core of memory adresses for the cheat codes, have been changed and now the old cheat codes dont work, even if you change it to the new cheat xml format?

oh my god... :o. so the convertor you make also do the needed + or - digits needed for the old code now works in the new cheat system. is that?


also, i see a very rare fails that the new cheat system caused, if i load some games, the mame crashes when i simply try to load these game, so i must erase that xml cheat file from the cheat.zip for make that the game can finally load!.
is very rare, this never happens to my with the old cheat system, is like exist conflict beetwhen the cheat and the game rom, and so the game dont loads ??.
i dont remenber what are these games right know, but this happens to my with a minimun of 2 games, maybe one can be golden axe 1...

by the way:
i have a suggestion, if you like the idea, you can upload in somewhere place of the site, the last mames emulators that supports the old cheat file system...
for example: yesterday i try to found some of them and i find nothing of nothing :P. you know, some time later is really hard (for not say impossible) find one of these old mame versions :P).


and for end, i want to repeat that i hope i dont bother none with my commentarys :lol: ;). and what like you say, i also hope in the future can exist some options for be more confortable and be capable of save new cheats in this new cheat engine.

and like now i have the opportunity, i want to say THANK YOU to you puggsy, for all the work you do in the past to until now, because you make happy several people with the cheat file compilations ;)
(and of course the same for the rest of cheat finders)
Seeker2002
Posts: 19
Joined: Sat Dec 12, 2009 9:34 pm
Location: USA

Re: New MAME Cheat engine....some example conversions

Post by Seeker2002 »

So, how do you find new cheats for the later versions of MAME that uses the new XML Cheat format, do you have to find them in the old supported Cheat.dat MAME versions and then convert them to the new format?

How do we get our hands on the cheat converter program?

Also the new built in debugger program will prove quite useful in finding more powerful cheats and other problems that people may be experiencing when using MAME. The good thing about this debugger is that you can run it in the background in it's own window while watching it in real-time simultaneously while Playing a game, incredibly amazing. :P
Seeker2002
X Evox-Team member
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

Re: New MAME Cheat engine....some example conversions

Post by Pugsy »

Seeker2002 wrote:So, how do you find new cheats for the later versions of MAME that uses the new XML Cheat format, do you have to find them in the old supported Cheat.dat MAME versions and then convert them to the new format?
Nope, as mentioned in my other reply - use the cheat finding debugger commands.
Seeker2002 wrote:How do we get our hands on the cheat converter program?
No plans on releasing this at the moment as it's too fluid for general use. I made it to convert a single cheat.dat file with a rigid formatting structure and special case conversions mean it gets updated pretty much every MAME release still. If you have any cheat.dat format cheats NOT already in the cheat collection that work fine and with good descriptions then I'm happy to add them.
Seeker2002 wrote:Also the new built in debugger program will prove quite useful in finding more powerful cheats and other problems that people may be experiencing when using MAME. The good thing about this debugger is that you can run it in the background in it's own window while watching it in real-time simultaneously while Playing a game, incredibly amazing. :P
That's useful for a single memory address watch, but I generally use F12 rather than F5.
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
Seeker2002
Posts: 19
Joined: Sat Dec 12, 2009 9:34 pm
Location: USA

Re: New MAME Cheat engine....some example conversions

Post by Seeker2002 »

Ok,

first of all I'll like to thank everybody for their help, with special thanks to you Pugsy. :wink:

I was playing around with the new debug cheat engine last night and was able to figure it out with Pugsy's advise. The only problem I'm having is getting the Break Points to break at all. I know I have the correct address because I can poke the address in the memory window and it make the changes to the game, but It will not break for nothing.

I've been messing around with Donkey Kong Junior US version [dkongjr] and just trying to duplicate what's been done already so I can get the feel of the cheat engine. I searched and was able to find the memory address for infinite lives. I was able to poke the address and was able to give myself extra lives.

The address I found for infinite lives was @ 0x06228.
I tried the following commands to get it to break with no luck.

bp 0x06228

bp 0x06228, 08 == 2 <-- break when 6228 is equal to 2

bp 0x06228, 1C==03, {1C = 0A;g} <-- error it does't like the bracket but the help example shows it should? help! can't get this to work.

is anyone else having break point problems? please help :-?
Seeker2002
X Evox-Team member
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

Re: New MAME Cheat engine....some example conversions

Post by Pugsy »

Breakpoints are used when you want to stop code running at a certain point.

What you are describing sounds more like watchpoints

So

wp 6228,1,w

Will break after the instruction that modifies 6228.

wp 6228,1,w,wpdata==02

Will break after the instruction that modifies 6228 with 02

You don't need the 0x part - the debugger assumes they are hex anyway

You don't need to do this to create RAM cheats though..
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
Seeker2002
Posts: 19
Joined: Sat Dec 12, 2009 9:34 pm
Location: USA

Re: New MAME Cheat engine....some example conversions

Post by Seeker2002 »

Pugsy wrote:Breakpoints are used when you want to stop code running at a certain point.

What you are describing sounds more like watchpoints

So

wp 6228,1,w

Will break after the instruction that modifies 6228.

wp 6228,1,w,wpdata==02

Will break after the instruction that modifies 6228 with 02

You don't need the 0x part - the debugger assumes they are hex anyway

You don't need to do this to create RAM cheats though..
Thanks for the quick response. :wink:
Yeah, I started messing around with the watch points and got them to work thanks. The 0x works with the commands also, I'm just so use to including it, just a habit. I use to write trainers with the Evox-Team for the Xbox. I'm use to the terminology when referring to watch point that, that's just what it is a memory address used only for viewing and watching for any changes when a particular occurence or event takes place and could not be modified, whereas break points could be set to stop the program when triggered and could be set to break on a memory address or instruction. :P
Seeker2002
X Evox-Team member
User avatar
Pugsy
Posts: 3675
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 15 times
Contact:

Re: New MAME Cheat engine....some example conversions

Post by Pugsy »

Seeker2002 wrote: I use to write trainers with the Evox-Team for the Xbox.
Interesting, I had a play at making xbox trainers a few years back. But, it was a rather funless/pointless exercise as you boys had already done pretty much everything already.....damn you all! :evil:

Only game I found with no trainers was Smashing Drive but I got no where with that :( Couldn't even find a RAM location for time, decided then I'd wait for MESS to add XBOX emulation so I'd have access to some better tools....the wait goes on :-?
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.264 XML cheat collection (3 APRIL 2024) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/SxsQUJoT#jBdz6GLm_ ... QzFGSMms2c (ZIP Archive 3.8 MB)
Seeker2002
Posts: 19
Joined: Sat Dec 12, 2009 9:34 pm
Location: USA

Re: New MAME Cheat engine....some example conversions

Post by Seeker2002 »

Pugsy wrote:
Seeker2002 wrote: I use to write trainers with the Evox-Team for the Xbox.
Interesting, I had a play at making xbox trainers a few years back. But, it was a rather funless/pointless exercise as you boys had already done pretty much everything already.....damn you all! :evil:

Only game I found with no trainers was Smashing Drive but I got no where with that :( Couldn't even find a RAM location for time, decided then I'd wait for MESS to add XBOX emulation so I'd have access to some better tools....the wait goes on :-?
Well, we would have been very happy to have you on our team. :) yeah, Dootdo was the most skilled trainer writer along with Acidflash before he started working on his own trainer project Xored. They both helped me alot with trainer writing and finding values an stuff. For that I'm forever graceful. I haven't looked at MESS yet but will when I get time, but anyway thanks for your help, much appreciated. :wink:
Seeker2002
X Evox-Team member
Post Reply