Changeset 311
- Timestamp:
- 01/20/10 16:16:58 (7 weeks ago)
- Location:
- Cheat Engine
- Files:
-
- 19 modified
-
CheatEngine.res (modified) (previous)
-
FoundCodeUnit.dfm (modified) (2 diffs)
-
FoundCodeUnit.pas (modified) (4 diffs)
-
OpenSave.pas (modified) (4 diffs)
-
Release/readme.txt (modified) (1 diff)
-
Structuresfrm.dfm (modified) (2 diffs)
-
Structuresfrm.pas (modified) (25 diffs)
-
SynEdit/Source/SynHighlighterAA.pas (modified) (3 diffs)
-
autoassembler.pas (modified) (10 diffs)
-
cheatengine.dof (modified) (2 diffs)
-
cheatengine.drc (modified) (9 diffs)
-
frmCScriptUnit.dfm (modified) (4 diffs)
-
frmautoinjectunit.dfm (modified) (1 diff)
-
frmautoinjectunit.pas (modified) (1 diff)
-
help/cheat engine.sh6 (modified) (previous)
-
memscan.pas (modified) (1 diff)
-
plugin/cepluginsdk.h (modified) (3 diffs)
-
pointerscannerfrm.pas (modified) (1 diff)
-
underc.pas (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Cheat Engine/FoundCodeUnit.dfm
r306 r311 145 145 end 146 146 object pmOptions: TPopupMenu 147 OnPopup = pmOptionsPopup 147 148 Left = 64 148 149 Top = 64 … … 164 165 OnClick = btnExtraInfoClick 165 166 end 167 object N1: TMenuItem 168 Caption = '-' 169 end 170 object Copyselectiontoclipboard1: TMenuItem 171 Caption = 'Copy selection to clipboard' 172 ShortCut = 16451 173 OnClick = Copyselectiontoclipboard1Click 174 end 166 175 end 167 176 end -
Cheat Engine/FoundCodeUnit.pas
r306 r311 5 5 uses 6 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls,disassembler,cefuncproc,ExtCtrls, Menus, newkernelhandler ;7 Dialogs, StdCtrls,disassembler,cefuncproc,ExtCtrls, Menus, newkernelhandler, clipbrd; 8 8 9 9 type Tcoderecord = record … … 33 33 btnOpenDisassembler: TButton; 34 34 btnReplacewithnops: TButton; 35 N1: TMenuItem; 36 Copyselectiontoclipboard1: TMenuItem; 35 37 procedure FoundcodeListClick(Sender: TObject); 36 38 procedure btnOKClick(Sender: TObject); … … 44 46 procedure FoundcodeListContextPopup(Sender: TObject; MousePos: TPoint; 45 47 var Handled: Boolean); 48 procedure pmOptionsPopup(Sender: TObject); 49 procedure Copyselectiontoclipboard1Click(Sender: TObject); 46 50 private 47 51 { Private declarations } … … 425 429 end; 426 430 431 procedure TFoundCodeDialog.pmOptionsPopup(Sender: TObject); 432 begin 433 n1.visible:=foundcodelist.ItemIndex<>-1; 434 Copyselectiontoclipboard1.visible:=foundcodelist.ItemIndex<>-1; 435 end; 436 437 procedure TFoundCodeDialog.Copyselectiontoclipboard1Click(Sender: TObject); 438 var 439 i: integer; 440 s: string; 441 begin 442 s:=''; 443 for i:=0 to FoundcodeList.Items.count-1 do 444 if FoundcodeList.Selected[i] then 445 s:=s+FoundcodeList.Items[i]+#13; 446 447 clipboard.AsText:=s; 448 end; 449 427 450 end. -
Cheat Engine/OpenSave.pas
r306 r311 138 138 139 139 function GetmemrecFromXMLNode(CheatEntry: IXMLNode): MemoryRecord; 140 procedure LoadStructFromXMLNode(var struct: Tbase stucture; Structure: IXMLNode);141 procedure SaveStructToXMLNode(struct: Tbase stucture; Structures: IXMLNode);140 procedure LoadStructFromXMLNode(var struct: TbaseStructure; Structure: IXMLNode); 141 procedure SaveStructToXMLNode(struct: TbaseStructure; Structures: IXMLNode); 142 142 143 143 {$ifdef net} … … 4097 4097 end; 4098 4098 4099 procedure LoadStructFromXMLNode(var struct: Tbase stucture; Structure: IXMLNode);4099 procedure LoadStructFromXMLNode(var struct: TbaseStructure; Structure: IXMLNode); 4100 4100 var tempnode: IXMLNode; 4101 4101 elements: IXMLNode; … … 4165 4165 end; 4166 4166 { 4167 procedure SaveStructToXMLNode(struct: Tbase stucture; Structures: IXMLNode);4167 procedure SaveStructToXMLNode(struct: TbaseStructure; Structures: IXMLNode); 4168 4168 var structure: IXMLNode; 4169 4169 elements: IXMLNode; … … 6523 6523 end; 6524 6524 6525 procedure SaveStructToXMLNode(struct: Tbase stucture; Structures: IXMLNode);6525 procedure SaveStructToXMLNode(struct: TbaseStructure; Structures: IXMLNode); 6526 6526 var structure: IXMLNode; 6527 6527 elements: IXMLNode; -
Cheat Engine/Release/readme.txt
r308 r311 23 23 There's now a stacktrace visible during debugging 24 24 The registerview is gone as long as you're not debugging 25 CE now suppresses the "No disk" message when the s earchpath is invalid25 CE now suppresses the "No disk" message when the systems searchpath is invalid 26 26 Added a common modulelist to the ce folder that you can edit. Include files that you do NOT want to go through when doing memory inspection 27 27 You can now open another pointerscanner window while another pointerscan is running and read the results. 28 28 Added a string reference windows 29 Improved the plugin system with some extra disassembler commands and a command to load modules into memory 29 Improved the plugin system: 30 You can now add auto assembler commands 31 You can now get a callback when the disassembler is being rendered 32 You can now add a plugin item to the context of the disassemler 33 etc... 30 34 Added (float)#, (double)# and (int)# support to the assembler, (double) is mainly usable in combination with the new DQ command though 31 35 -
Cheat Engine/Structuresfrm.dfm
r307 r311 147 147 OnClick = Deletecurrentstructure1Click 148 148 end 149 object Autoguessoffsets1: TMenuItem 150 Caption = 'Automatically guess offset types' 151 OnClick = Autoguessoffsets1Click 152 end 149 153 end 150 154 end … … 260 264 OnClick = Remove1Click 261 265 end 266 object Setgroup1: TMenuItem 267 Caption = 'Set group' 268 OnClick = Setgroup1Click 269 end 262 270 end 263 271 end -
Cheat Engine/Structuresfrm.pas
r309 r311 6 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 7 Dialogs, Menus, StdCtrls, ExtCtrls, ComCtrls,cefuncproc,newkernelhandler, 8 symbolhandler, XMLDoc, XMLIntf, byteinterpreter ;8 symbolhandler, XMLDoc, XMLIntf, byteinterpreter, underc; 9 9 10 10 const structureversion=1; … … 21 21 22 22 23 type Tbase stucture=record23 type TbaseStructure=record 24 24 name: string; 25 25 structelement: array of TStructElement; … … 90 90 Memorybrowsepointer1: TMenuItem; 91 91 Memorybrowsethisaddress1: TMenuItem; 92 Autoguessoffsets1: TMenuItem; 93 Setgroup1: TMenuItem; 92 94 procedure Definenewstructure1Click(Sender: TObject); 93 95 procedure Addelement1Click(Sender: TObject); … … 130 132 procedure Memorybrowsepointer1Click(Sender: TObject); 131 133 procedure Memorybrowsethisaddress1Click(Sender: TObject); 134 procedure Autoguessoffsets1Click(Sender: TObject); 135 procedure Setgroup1Click(Sender: TObject); 132 136 private 133 137 { Private declarations } … … 136 140 137 141 addresses: array of dword; //first address (old compat) 142 143 groupindex: array of integer; //e.g 1,3,9,10000000 144 groups: array of dword; //the grouplist holds the groupnumbers provided by the user 145 internalgrouplist: array of dword; //where as the internelgrouplist holds the entrypoints into the groupindex for each specific address 138 146 edits: array of tedit; 139 147 lastnewedit: TEdit; 148 149 140 150 141 151 procedure refreshmenuitems; … … 144 154 // function RawToType(address: dword; const buf: array of byte; size: integer):integer; 145 155 procedure ExtraEnter(Sender: TObject); 156 procedure automaticallyGuessOffsets(baseOffset: dword; structsize: integer); 157 procedure UpdateGroupIndex; 146 158 public 147 159 { Public declarations } … … 152 164 var 153 165 frmStructures: array of TfrmStructures; 154 definedstructures: array of Tbase stucture;155 156 procedure sortStructure(struct: Tbase stucture);166 definedstructures: array of TbaseStructure; 167 168 procedure sortStructure(struct: TbaseStructure); 157 169 158 170 implementation … … 201 213 refresh; 202 214 end; 215 203 216 204 217 procedure TStructure.setaddress(i: integer; x:dword); … … 550 563 end; 551 564 552 procedure sortStructure(struct: Tbase stucture);565 procedure sortStructure(struct: TbaseStructure); 553 566 var 554 567 i,j: integer; … … 746 759 autofillin,structsize: integer; 747 760 structname: string; 748 buf: array of byte; 749 buf2: array of byte; 750 i,j,t: integer; 751 t2: TVariableType; 752 x,y: dword; 761 753 762 begin 754 763 structname:='unnamed structure'; … … 766 775 if autofillin=mryes then 767 776 begin 777 768 778 sstructsize:='4096'; 769 779 if not inputquery('Structure define','Please give a starting size of the struct (You can change this later if needed)',Sstructsize) then exit; 770 780 structsize:=strtoint(sstructsize); 771 781 772 773 setlength(buf,structsize); 774 setlength(buf2,8); 775 //now read the memory 776 if readprocessmemory(processhandle,pointer(addresses[0]),@buf[0],structsize,x) then 777 begin 778 x:=0; 779 while x<structsize do 780 begin 781 i:=length(definedstructures[length(definedstructures)-1].structelement); 782 setlength(definedstructures[length(definedstructures)-1].structelement,i+1); 783 definedstructures[length(definedstructures)-1].structelement[i].offset:=x; 784 definedstructures[length(definedstructures)-1].structelement[i].pointerto:=false; 785 786 //value 787 //check what type it is 788 t2:=FindTypeOfData(addresses[0]+x,@buf[x],structsize-x); 789 if t2=vtPointer then 790 begin 791 //pointer 792 793 794 definedstructures[length(definedstructures)-1].structelement[i].pointerto:=true; 795 definedstructures[length(definedstructures)-1].structelement[i].pointertoSize:=8; 796 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=4; 797 definedstructures[length(definedstructures)-1].structelement[i].description:='pointer to '; 798 799 if readprocessmemory(processhandle,pointer(pdword(@buf[x])^),@buf2[0],8,y) then 800 begin 801 t2:=FindTypeOfData(pdword(@buf[x])^,@buf2[0],8); 802 t:=convertVariableTypeTostructnr(t2); 803 definedstructures[length(definedstructures)-1].structelement[i].structurenr:=t; 804 end 805 else definedstructures[length(definedstructures)-1].structelement[i].structurenr:=-9; 806 807 inc(x,4); 808 continue; 809 end; 810 811 812 t:=convertVariableTypeTostructnr(t2); 813 814 815 816 definedstructures[length(definedstructures)-1].structelement[i].structurenr:=t; 817 818 819 820 case t of 821 -1: //byte 822 begin 823 definedstructures[length(definedstructures)-1].structelement[i].description:='Byte'; 824 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=1; 825 inc(x,1); 826 end; 827 828 -4: //word 829 begin 830 definedstructures[length(definedstructures)-1].structelement[i].description:='Word'; 831 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=2; 832 inc(x,2); 833 end; 834 835 -7: //dword 836 begin 837 definedstructures[length(definedstructures)-1].structelement[i].description:='Dword'; 838 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=4; 839 inc(x,4); 840 end; 841 842 -12: //single 843 begin 844 definedstructures[length(definedstructures)-1].structelement[i].description:='Float'; 845 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=4; 846 inc(x,4); 847 end; 848 849 -13: //double 850 begin 851 definedstructures[length(definedstructures)-1].structelement[i].description:='Double'; 852 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=8; 853 inc(x,8); 854 end; 855 856 -14: //string 857 begin 858 definedstructures[length(definedstructures)-1].structelement[i].description:='String'; 859 860 //find out how long this string is: 861 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=0; 862 while (x<structsize) and (buf[x]>=32) and (buf[x]<=127) do 863 begin 864 inc(x); 865 inc(definedstructures[length(definedstructures)-1].structelement[i].bytesize); 866 end; 867 end; 868 869 870 end; 871 end; 872 873 end; 874 end; 875 update(true); 782 automaticallyGuessOffsets(0, structsize); 783 end; 784 update(true); 876 785 end; 877 786 … … 1847 1756 procedure TfrmStructures.FormCreate(Sender: TObject); 1848 1757 begin 1758 setlength(groups,1); 1849 1759 setlength(addresses,1); 1850 1760 setlength(edits,1); 1851 1761 edits[0]:=edtAddress; 1762 groups[0]:=0; 1852 1763 lastnewedit:=edtaddress; 1853 1764 edtAddress.OnEnter:=extraenter; … … 1855 1766 setlength(frmStructures,length(frmStructures)+1); 1856 1767 frmStructures[length(frmStructures)-1]:=self; 1768 1769 UpdateGroupIndex; 1857 1770 end; 1858 1771 … … 1884 1797 setlength(addresses,length(addresses)+1); 1885 1798 addresses[length(addresses)-1]:=addresses[x.tag-1]; 1799 1800 setlength(groups,length(groups)+1); 1801 groups[length(groups)-1]:=0; 1802 UpdateGroupIndex; 1803 1804 1886 1805 1887 1806 setlength(edits,length(edits)+1); … … 1903 1822 x:=TEdit(popupmenu2.PopupComponent); 1904 1823 if x.tag=0 then exit; //can't remove the first one 1905 1824 1906 1825 for i:=x.tag to length(edits)-2 do 1907 1826 begin 1827 groups[i]:=groups[i+1]; 1908 1828 edits[i]:=edits[i+1]; 1909 1829 edits[i].Left:=edits[i].Left-edits[i].Width-16; … … 1917 1837 currentstructure.removeAddress(x.tag); 1918 1838 1839 UpdateGroupIndex; 1840 1919 1841 x.free; 1920 1842 end; … … 1953 1875 Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; 1954 1876 Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); 1877 { 1878 multigroup usage: 1879 If all entries of the same group are the same, mark them green, otherwhise red 1880 If the value of another group does not match the value of the first group, mark it red 1881 } 1955 1882 var 1956 i : integer;1883 i,j: integer; 1957 1884 laststart: integer; 1958 1885 textrect: trect; … … 1966 1893 oldcolor: tcolor; 1967 1894 1968 different: boolean;1969 1970 1895 clip: trect; 1896 1897 currentGroup: integer; 1898 groupmatches: array of boolean; 1899 groupcolors: array of tcolor; 1900 groupvalues: array of string; 1971 1901 begin 1972 1902 //looks like it's even called before create is done... 1973 1903 if stage=cdPostPaint then 1974 1904 begin 1975 different:=false;1976 1905 textrect:=node.DisplayRect(true); 1977 1906 linerect:=node.DisplayRect(false); 1978 1907 1979 1908 fulltextline:=linerect; 1980 1909 fulltextline.Left:=textrect.Left; … … 1988 1917 setlength(sections2,totalsections); 1989 1918 currentsection:=0; 1919 1920 1921 setlength(groupvalues,length(groupindex)); 1922 setlength(groupcolors,length(groupindex)); 1923 setlength(groupmatches,length(groupindex)); 1924 for i:=0 to length(groupcolors)-1 do 1925 begin 1926 groupcolors[i]:=clGreen; 1927 groupmatches[i]:=true; 1928 end; 1990 1929 1991 1930 laststart:=1; … … 2003 1942 end; 2004 1943 2005 for i:=1 to length(sections2)-2 do 2006 if sections2[i]<>sections2[i+1] then 1944 //go through the values 1945 for i:=1 to length(sections2)-1 do 1946 begin 1947 currentGroup:=internalgrouplist[i-1]; 1948 1949 if groupvalues[currentGroup]='' then 1950 groupvalues[currentGroup]:=sections2[i] 1951 else 2007 1952 begin 2008 different:=true; 2009 break; 1953 if groupvalues[currentGroup]<>sections2[i] then 1954 begin 1955 groupcolors[currentGroup]:=clred; 1956 groupmatches[currentGroup]:=false; 1957 end; 2010 1958 end; 1959 end; 1960 1961 for i:=1 to length(groupvalues)-1 do 1962 begin 1963 if (groupmatches[i]) and (groupmatches[i-1]) then //both groups match 1964 begin 1965 if groupvalues[i-1]<>groupvalues[i] then //but the values don't match with the previous group 1966 groupcolors[i]:=clBlue; 1967 end; 1968 end; 1969 2011 1970 2012 1971 //if laststart=1 then … … 2026 1985 sender.Canvas.Brush.Color:=tvStructureView.Color; 2027 1986 sender.Canvas.FillRect(textlinerect); 2028 if different then2029 tvStructureView.canvas.Font.Color:=clRed2030 else2031 tvStructureView.canvas.Font.Color:=clWindowText;1987 // if different then 1988 // tvStructureView.canvas.Font.Color:=clRed 1989 // else 1990 // tvStructureView.canvas.Font.Color:=clWindowText; 2032 1991 2033 1992 end … … 2038 1997 sender.Canvas.FillRect(textlinerect); 2039 1998 sender.Canvas.DrawFocusRect(textlinerect); 2040 if different then2041 begin2042 tvStructureView.canvas.Font.Color:=clRed;2043 tvStructureView.canvas.Font.Style:=[fsBold];2044 end2045 else2046 tvStructureView.canvas.Font.Color:=clHighlightText;1999 // if different then 2000 // begin 2001 // tvStructureView.canvas.Font.Color:=clRed; 2002 // tvStructureView.canvas.Font.Style:=[fsBold]; 2003 // end 2004 // else 2005 // tvStructureView.canvas.Font.Color:=clHighlightText; 2047 2006 2048 2007 end; … … 2058 2017 for i:=1 to totalsections-1 do 2059 2018 begin 2019 currentGroup:=internalgrouplist[i-1]; 2020 tvStructureView.canvas.Font.Color:=groupcolors[currentgroup]; 2021 2060 2022 clip.Left:=headercontrol1.Sections[i].Left; 2061 2023 clip.Right:=headercontrol1.Sections[i].Left+headercontrol1.Sections[i].Width; … … 2089 2051 begin 2090 2052 x:=TEdit(popupmenu2.PopupComponent); 2091 Remove1.Visible:=(x =nil) or(x.tag<>0);2053 Remove1.Visible:=(x<>nil) and (x.tag<>0); 2092 2054 n6.Visible:=remove1.Visible; 2055 2056 if groups[x.Tag]<>0 then 2057 setgroup1.Caption:='Change group ('+inttostr(groups[x.tag])+')' 2058 else 2059 setgroup1.Caption:='Set group'; 2093 2060 end; 2094 2061 … … 2249 2216 end; 2250 2217 2218 procedure TfrmStructures.automaticallyGuessOffsets(baseOffset: dword; structsize: integer); 2219 var 2220 buf: array of byte; 2221 buf2: array of byte; 2222 i,j,t: integer; 2223 t2: TVariableType; 2224 x,y: dword; 2225 begin 2226 setlength(buf,structsize); 2227 setlength(buf2,8); 2228 //now read the memory 2229 if readprocessmemory(processhandle,pointer(addresses[0]+baseOffset),@buf[0],structsize,x) then 2230 begin 2231 x:=0; 2232 while x<structsize do 2233 begin 2234 i:=length(definedstructures[length(definedstructures)-1].structelement); 2235 setlength(definedstructures[length(definedstructures)-1].structelement,i+1); 2236 definedstructures[length(definedstructures)-1].structelement[i].offset:=baseoffset+x; 2237 definedstructures[length(definedstructures)-1].structelement[i].pointerto:=false; 2238 2239 //value 2240 //check what type it is 2241 t2:=FindTypeOfData(addresses[0]+baseoffset+x,@buf[x],structsize-x); 2242 if t2=vtPointer then 2243 begin 2244 //pointer 2245 2246 2247 definedstructures[length(definedstructures)-1].structelement[i].pointerto:=true; 2248 definedstructures[length(definedstructures)-1].structelement[i].pointertoSize:=8; 2249 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=4; 2250 definedstructures[length(definedstructures)-1].structelement[i].description:='pointer to '; 2251 2252 if readprocessmemory(processhandle,pointer(pdword(@buf[x])^),@buf2[0],8,y) then 2253 begin 2254 t2:=FindTypeOfData(pdword(@buf[x])^,@buf2[0],8); 2255 t:=convertVariableTypeTostructnr(t2); 2256 definedstructures[length(definedstructures)-1].structelement[i].structurenr:=t; 2257 end 2258 else definedstructures[length(definedstructures)-1].structelement[i].structurenr:=-9; 2259 2260 inc(x,4); 2261 continue; 2262 end; 2263 2264 2265 t:=convertVariableTypeTostructnr(t2); 2266 2267 2268 2269 definedstructures[length(definedstructures)-1].structelement[i].structurenr:=t; 2270 2271 2272 2273 case t of 2274 -1: //byte 2275 begin 2276 definedstructures[length(definedstructures)-1].structelement[i].description:='Byte'; 2277 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=1; 2278 inc(x,1); 2279 end; 2280 2281 -4: //word 2282 begin 2283 definedstructures[length(definedstructures)-1].structelement[i].description:='Word'; 2284 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=2; 2285 inc(x,2); 2286 end; 2287 2288 -7: //dword 2289 begin 2290 definedstructures[length(definedstructures)-1].structelement[i].description:='Dword'; 2291 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=4; 2292 inc(x,4); 2293 end; 2294 2295 -12: //single 2296 begin 2297 definedstructures[length(definedstructures)-1].structelement[i].description:='Float'; 2298 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=4; 2299 inc(x,4); 2300 end; 2301 2302 -13: //double 2303 begin 2304 definedstructures[length(definedstructures)-1].structelement[i].description:='Double'; 2305 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=8; 2306 inc(x,8); 2307 end; 2308 2309 -14: //string 2310 begin 2311 definedstructures[length(definedstructures)-1].structelement[i].description:='String'; 2312 2313 //find out how long this string is: 2314 definedstructures[length(definedstructures)-1].structelement[i].bytesize:=0; 2315 while (x<structsize) and (buf[x]>=32) and (buf[x]<=127) do 2316 begin 2317 inc(x); 2318 inc(definedstructures[length(definedstructures)-1].structelement[i].bytesize); 2319 end; 2320 end; 2321 2322 2323 end; 2324 end; 2325 2326 end; 2327 end; 2328 2329 procedure TfrmStructures.Autoguessoffsets1Click(Sender: TObject); 2330 var 2331 sStartOffset: string; 2332 sStructSize: string; 2333 base: TbaseStructure; 2334 startOffset: integer; 2335 structSize: integer; 2336 begin 2337 if currentstructure<>nil then 2338 begin 2339 base:=definedstructures[currentstructure.basestructure]; 2340 if length(base.structelement)>0 then 2341 sStartOffset:=inttohex(base.structelement[length(base.structelement)-1].offset+base.structelement[length(base.structelement)-1].bytesize,1) 2342 else 2343 sStartOffset:='0'; 2344 2345 if not inputquery('Structure define','Please give a starting offset to evaluate',sStartOffset) then exit; 2346 startOffset:=StrToInt('$'+sStartOffset); 2347 2348 sStructSize:='4096'; 2349 if not inputquery('Structure define','Please give the size of the block to evaluate',sStructSize) then exit; 2350 structSize:=StrToInt(sStructSize); 2351 2352 automaticallyGuessOffsets(startOffset, structsize); 2353 end; 2354 end; 2355 2356 procedure TfrmStructures.UpdateGroupIndex; 2357 var i,j: integer; 2358 alreadyIndexed: boolean; 2359 begin 2360 setlength(groupindex,0); 2361 setlength(internalgrouplist,length(groups)); 2362 for i:=0 to length(groups)-1 do 2363 begin 2364 alreadyIndexed:=false; 2365 for j:=0 to length(groupindex)-1 do 2366 begin 2367 if groupindex[j]=groups[i] then 2368 begin 2369 alreadyIndexed:=true; 2370 internalgrouplist[i]:=j; 2371 break; 2372 end; 2373 end; 2374 2375 if not alreadyIndexed then 2376 begin 2377 setlength(groupindex,length(groupindex)+1); 2378 groupindex[length(groupindex)-1]:=groups[i]; 2379 internalgrouplist[i]:=length(groupindex)-1; 2380 end; 2381 2382 2383 end; 2384 end; 2385 2386 2387 procedure TfrmStructures.Setgroup1Click(Sender: TObject); 2388 var 2389 x: tedit; 2390 sgroup: string; 2391 begin 2392 x:=TEdit(popupmenu2.PopupComponent); 2393 2394 sgroup:=inttostr(groups[x.Tag]); 2395 2396 InputQuery('Structure definer', 'Which group do you want to set this address to?', sgroup); 2397 groups[x.Tag]:=strtoint(sgroup); 2398 2399 updategroupindex; 2400 2401 tvStructureView.Refresh; 2402 end; 2403 2251 2404 end. 2252 2405 -
Cheat Engine/SynEdit/Source/SynHighlighterAA.pas
r309 r311 137 137 function Func52: TtkTokenKind; //dealloc / disable 138 138 function Func54: TtkTokenKind; //kalloc 139 function Func55: TtkTokenKind; //aobscan 139 140 function Func59: TtkTokenKind; //readmem 140 141 function Func68: TtkTokenKind; //include … … 329 330 fIdentFuncTable[52] := Func52; 330 331 fIdentFuncTable[54] := Func54; 332 fIdentFuncTable[55] := Func55; 331 333 fIdentFuncTable[59] := Func59; 332 334 fIdentFuncTable[68] := Func68; … … 526 528 Result := tkIdentifier; 527 529 end; 530 531 function TSynAASyn.Func55: TtkTokenKind; //aobscan 532 begin 533 if KeyComp('aobscan') then Result := tkKey else 534 Result := tkIdentifier; 535 end; 536 528 537 529 538 function TSynAASyn.Func59: TtkTokenKind; //readmem -
Cheat Engine/autoassembler.pas
r307 r311 19 19 function getenableanddisablepos(code:tstrings;var enablepos,disablepos: integer): boolean; 20 20 function autoassemble(code: tstrings;popupmessages: boolean):boolean; overload; 21 function autoassemble(code: Tstrings; popupmessages,enable,syntaxcheckonly, targetself: boolean;var CEAllocarray: TCEAllocArray ): boolean; overload;21 function autoassemble(code: Tstrings; popupmessages,enable,syntaxcheckonly, targetself: boolean;var CEAllocarray: TCEAllocArray; registeredsymbols: tstringlist=nil): boolean; overload; 22 22 23 23 implementation … … 245 245 246 246 247 function autoassemble2(code: tstrings;popupmessages: boolean;syntaxcheckonly:boolean; targetself: boolean ;var ceallocarray:TCEAllocArray):boolean; 247 function autoassemble2(code: tstrings;popupmessages: boolean;syntaxcheckonly:boolean; targetself: boolean ;var ceallocarray:TCEAllocArray; registeredsymbols: tstringlist=nil):boolean; 248 { 249 registeredsymbols is a stringlist that is initialized by the caller as case insensitive and no duplicates 250 } 248 251 type tassembled=record 249 252 address: dword; … … 315 318 symhandler: TSymhandler; 316 319 begin 320 if syntaxcheckonly and (registeredsymbols<>nil) then 321 begin 322 //add the symbols as defined labels 323 setlength(labels,registeredsymbols.count); 324 for i:=0 to registeredsymbols.count-1 do 325 begin 326 labels[i].labelname:=registeredsymbols[i]; 327 labels[i].defined:=true; 328 labels[i].address:=0; 329 labels[i].assemblerline:=0; 330 setlength(labels[i].references,0); 331 setlength(labels[i].references2,0); 332 end; 333 end; 334 317 335 if targetself then 318 336 begin … … 393 411 if uppercase(copy(currentline,1,7))='ASSERT(' then //assert(address,aob) 394 412 begin 395 a:=pos('(',currentline); 396 b:=pos(',',currentline); 397 c:=pos(')',currentline); 398 if (a>0) and (b>0) and (c>0) then 399 begin 400 s1:=copy(currentline,a+1,b-a-1); 401 s2:=copy(currentline,b+1,c-b-1); 402 testdword:= symhandler.getAddressFromName(s1,false); 403 404 setlength(bytes,0); 405 ConvertStringToBytes(s2, true, bytes); 406 if length(bytes)>0 then 413 if not syntaxcheckonly then 414 begin 415 a:=pos('(',currentline); 416 b:=pos(',',currentline); 417 c:=pos(')',currentline); 418 if (a>0) and (b>0) and (c>0) then 407 419 begin 408 getmem(bytebuf,length(bytes)); 409 if ReadProcessMemory(processhandle, pointer(testdword), bytebuf, length(bytes),x) then 420 s1:=copy(currentline,a+1,b-a-1); 421 s2:=copy(currentline,b+1,c-b-1); 422 testdword:= symhandler.getAddressFromName(s1,false); 423 424 setlength(bytes,0); 425 ConvertStringToBytes(s2, true, bytes); 426 if length(bytes)>0 then 410 427 begin 411 try 412 for j:=0 to length(bytes)-1 do 413 begin 414 if bytes[j]>=0 then 415 if byte(bytes[j])<>bytebuf[j] then 416 raise exception.Create('The bytes at '+s1+' are not what was expected'); 428 getmem(bytebuf,length(bytes)); 429 if ReadProcessMemory(processhandle, pointer(testdword), bytebuf, length(bytes),x) then 430 begin 431 try 432 for j:=0 to length(bytes)-1 do 433 begin 434 if bytes[j]>=0 then 435 if byte(bytes[j])<>bytebuf[j] then 436 raise exception.Create('The bytes at '+s1+' are not what was expected'); 437 end; 438 finally 439 freemem(bytebuf); 417 440 end; 418 finally 419 freemem(bytebuf); 420 end; 421 end else raise exception.Create('The memory at +'+s1+' can not be read'); 422 441 end else raise exception.Create('The memory at +'+s1+' can not be read'); 442 443 end 444 else raise exception.Create(s2+' is not a valid bytestring'); 445 446 447 448 setlength(assemblerlines,length(assemblerlines)-1); 449 continue; 423 450 end 424 else raise exception.Create(s2+' is not a valid bytestring'); 425 426 427 428 setlength(assemblerlines,length(assemblerlines)-1); 429 continue; 430 end 431 else 432 raise exception.Create('Wrong syntax. ASSERT(address,bvtes)'); 451 else 452 raise exception.Create('Wrong syntax. ASSERT(address,bytes)'); 453 end; 433 454 end; 434 455 … … 652 673 setlength(addsymbollist,length(addsymbollist)+1); 653 674 addsymbollist[length(addsymbollist)-1]:=s1; 675 676 if registeredsymbols<>nil then 677 registeredsymbols.Add(s1); 654 678 end 655 679 else raise exception.Create('Syntax error'); … … 694 718 //s2=AOBstring 695 719 testdword:=findaob(s2); 696 if testdword=0then720 if (testdword=0) and (not syntaxcheckonly) then 697 721 raise exception.Create('The array of byte '''+s2+''' could not be found'); 698 722 … … 1018 1042 break; 1019 1043 end; 1044 1020 1045 1021 1046 if not ok1 then raise exception.Create(addsymbollist[i]+' was supposed to be added to the symbollist, but it isn''t declared'); … … 1631 1656 1632 1657 1633 function autoassemble(code: Tstrings; popupmessages,enable,syntaxcheckonly, targetself: boolean;var CEAllocarray: TCEAllocArray ): boolean; overload;1658 function autoassemble(code: Tstrings; popupmessages,enable,syntaxcheckonly, targetself: boolean;var CEAllocarray: TCEAllocArray; registeredsymbols: tstringlist=nil): boolean; overload; 1634 1659 { 1635 1660 targetself defines if the process that gets injected to is CE itself or the target process … … 1689 1714 end; 1690 1715 1691 result:=autoassemble2(tempstrings,popupmessages,syntaxcheckonly,targetself,ceallocarray );1716 result:=autoassemble2(tempstrings,popupmessages,syntaxcheckonly,targetself,ceallocarray, registeredsymbols); 1692 1717 finally 1693 1718 tempstrings.Free; … … 1700 1725 begin 1701 1726 setlength(aa,0); 1702 result:=autoassemble(code,popupmessages,true,false,false,aa );1727 result:=autoassemble(code,popupmessages,true,false,false,aa,nil); 1703 1728 end; 1704 1729 -
Cheat Engine/cheatengine.dof
r309 r311 189 189 MinorVer=6 190 190 Release=0 191 Build=5 3191 Build=55 192 192 Debug=0 193 193 PreRelease=1 … … 200 200 CompanyName= 201 201 FileDescription=Cheat Engine 5.6 202 FileVersion=5.6.0.5 3202 FileVersion=5.6.0.55 203 203 InternalName=CheatEngine 204 204 LegalCopyright=none -
Cheat Engine/cheatengine.drc
r306 r311 9 9 */ 10 10 11 #define MainUnit_strXMess6494412 #define MainUnit_strNewyear6494513 #define MainUnit_strfuture6494614 #define MainUnit_strdontbother6494715 #define MainUnit_strneeddebugger6494816 #define MainUnit_strfailuretosetspeed6494917 #define MainUnit_strIncorrectspeed6495018 #define MainUnit_strCantSetSpeed6495119 #define MainUnit_strHyperscanFailed6495220 #define MainUnit_strUnknownExtension6495321 #define MainUnit_strCustomScanConfig6495422 #define MainUnit_str RecalculateAddress6496023 #define MainUnit_str RecalculateSelectedAddresses6496124 #define MainUnit_str RecalculateAllAddresses6496225 #define MainUnit_str RemoveFromGroup6496326 #define MainUnit_str EnableCheat6496427 #define MainUnit_strDisableCheat6496528 #define MainUnit_strFindWhatWritesToPointer6496629 #define MainUnit_strFindWhatWritesToPointer26496730 #define MainUnit_strcantdebugnow6496831 #define MainUnit_strpointercantberead6496932 #define MainUnit_strconfirmUndo6497033 #define MainUnit_strHideForeground6497134 #define MainUnit_strHideAll6497235 #define MainUnit_strUnHideForeground6497336 #define MainUnit_strUnhideAll6497437 #define MainUnit_strhappybirthday6497538 #define MainUnit_str DeleteMoreGroups6497639 #define MainUnit_str SelectedAddressIsAPointer6497740 #define MainUnit_str MorePointers6497841 #define MainUnit_str MorePointers26497942 #define MainUnit_str NotAValidValue6498043 #define MainUnit_str deleteall6498144 #define MainUnit_str alreadyin6498245 #define MainUnit_str alreadyinlistmultiple6498346 #define MainUnit_str sethotkey6498447 #define MainUnit_str showasdecimal6498548 #define MainUnit_str showashex6498649 #define MainUnit_str FreezeAddressInList6498750 #define MainUnit_str FreezeAllAddresses6498851 #define MainUnit_str UnfreezeAllAddresses6498952 #define MainUnit_str UnfreezeAddressInList6499053 #define MainUnit_str DeleteAddress6499154 #define MainUnit_str CantdoNextScan 6499255 #define MainUnit_str ClickToGoHome 6499356 #define MainUnit_str ChangeDescription16499457 #define MainUnit_str ChangeDescription26499558 #define MainUnit_str NotTheSameSize16499659 #define MainUnit_str NotTheSameSize26499760 #define MainUnit_str Add06499861 #define MainUnit_str NotAValidNotation6499962 #define MainUnit_str NotSameAmmountofBytes6500063 #define MainUnit_str NotAValidBinaryNotation6500164 #define MainUnit_str Value6500265 #define MainUnit_str Change1Value6500366 #define MainUnit_str ChangeMoreValues 6500467 #define MainUnit_str Delete1Address6500568 #define MainUnit_str DeleteMultipleAddresses6500669 #define MainUnit_strD elete1Group6500770 #define MainUnit_strA llowNegative6500871 #define MainUnit_str AllowPositive6500972 #define MainUnit_strNo rmalFreeze6501073 #define MainUnit_str AskToSave6501174 #define MainUnit_str Scantextcaptiontotext6501275 #define MainUnit_str ScantextcaptiontoValue 6501376 #define MainUnit_str searchForText6501477 #define MainUnit_str SearchForArray6501578 #define MainUnit_str ConfirmProcessTermination6501679 #define MainUnit_str Error6501780 #define MainUnit_str ErrorwhileOpeningProcess 6501881 #define MainUnit_str KeepList6501982 #define MainUnit_str InfoAboutTable6502083 #define MainUnit_str PhysicalMemory6502184 #define MainUnit_str fillInSomething6502285 #define MainUnit_str FirstSelectAProcess6502386 #define MainUnit 2_strbiggerThan6502487 #define MainUnit 2_strSmallerThan6502588 #define MainUnit 2_strIncreasedValue6502689 #define MainUnit 2_strIncreasedValueBy6502790 #define MainUnit 2_strDecreasedValue6502891 #define MainUnit 2_strDecreasedValueBy6502992 #define MainUnit 2_strValueBetween6503093 #define MainUnit 2_strChangedValue6503194 #define MainUnit 2_strUnchangedValue6503295 #define MainUnit 2_strUnknownInitialValue6503396 #define MainUnit 2_strSameAsFirstScan 6503497 #define MainUnit 2_strtoolong6503598 #define FoundCodeUnit_strClose6503699 #define MainUnit_str WindowFailedToHide65037100 #define MainUnit_str Accessed65038101 #define MainUnit_str OpcodeChanged65039102 #define AdvancedOptionsUnit_strcouldntwrite65040103 #define AdvancedOptionsUnit_StrSelectExeFor3D65041104 #define AdvancedOptionsUnit_StrSelectExeForOpenGL3D65042105 #define formsettingsunit_strProcessWatcherWillPreventUnloader65043106 #define MainUnit2_strStart65044107 #define MainUnit2_strStop65045108 #define MainUnit2_strOK65046109 #define MainUnit 2_strBug65047110 #define MainUnit 2_strAutoAssemble65048111 #define MainUnit 2_strAddressHasToBeReadable65049112 #define MainUnit 2_strNewScan65050113 #define MainUnit 2_strFirstScan65051114 #define MainUnit 2_strNoDescription65052115 #define MainUnit 2_strNeedNewerWindowsVersion65053116 #define MainUnit 2_strexact 65054117 #define MainUnit 2_strexactvalue 65055118 #define frmFindstaticsUnit_strStop65056119 #define frmFindstaticsUnit_strStopping65057120 #define frmLoadMemoryunit_strinvalidfile65058121 #define AdvancedOptionsUnit_strnotreadable65059122 #define AdvancedOptionsUnit_strNotWhatitshouldbe65060123 #define AdvancedOptionsUnit_stralreadyinthelist65061124 #define AdvancedOptionsUnit_strPartOfOpcodeInTheList65062125 #define AdvancedOptionsUnit_strCECode65063126 #define AdvancedOptionsUnit_strNameCECode65064127 #define AdvancedOptionsUnit_strChangeOf65065128 #define AdvancedOptionsUnit_strCode65066129 #define AdvancedOptionsUnit_strFindWhatCodeaccesses65067130 #define AdvancedOptionsUnit_strFindWhatCodeReads65068131 #define AdvancedOptionsUnit_strFindWhatCodeWrites65069132 #define AdvancedOptionsUnit_strcouldntrestorecode65070133 #define AdvancedOptionsUnit_strnotthesame65071134 #define SynEditStrConst_SYNS_AttrOctal65072135 #define SynEditStrConst_SYNS_AttrPreprocessor65073136 #define SynEditStrConst_SYNS_AttrReservedWord65074137 #define SynEditStrConst_SYNS_AttrSpace65075138 #define SynEditStrConst_SYNS_AttrString65076139 #define SynEditStrConst_SYNS_AttrSymbol65077140 #define SynEditStrConst_SYNS_ScrollInfoFmt65078141 #define SynEditStrConst_SYNS_ScrollInfoFmtTop65079142 #define SynEditStrConst_SYNS_EDuplicateShortcut65080143 #define SynEditStrConst_SYNS_FilterPascal65081144 #define SynEditStrConst_SYNS_FilterCPP65082145 #define SynEditStrConst_SYNS_LangCPP65083146 #define SynEditStrConst_SYNS_LangPascal65084147 #define SynEditTextBuffer_SListIndexOutOfBounds65085148 #define SynEditTextBuffer_SInvalidCapacity65086149 #define frmFindstaticsUnit_strScan6508711 #define AdvancedOptionsUnit_strCode 64944 12 #define AdvancedOptionsUnit_strFindWhatCodeaccesses 64945 13 #define AdvancedOptionsUnit_strFindWhatCodeReads 64946 14 #define AdvancedOptionsUnit_strFindWhatCodeWrites 64947 15 #define AdvancedOptionsUnit_strcouldntrestorecode 64948 16 #define AdvancedOptionsUnit_strnotthesame 64949 17 #define AdvancedOptionsUnit_strcouldntwrite 64950 18 #define AdvancedOptionsUnit_StrSelectExeFor3D 64951 19 #define AdvancedOptionsUnit_StrSelectExeForOpenGL3D 64952 20 #define formsettingsunit_strProcessWatcherWillPreventUnloader 64953 21 #define FoundCodeUnit_strClose 64954 22 #define MainUnit_strIncorrectspeed 64960 23 #define MainUnit_strCantSetSpeed 64961 24 #define MainUnit_strHyperscanFailed 64962 25 #define MainUnit_strUnknownExtension 64963 26 #define MainUnit_strCustomScanConfig 64964 27 #define frmFindstaticsUnit_strScan 64965 28 #define frmFindstaticsUnit_strStop 64966 29 #define frmFindstaticsUnit_strStopping 64967 30 #define frmLoadMemoryunit_strinvalidfile 64968 31 #define AdvancedOptionsUnit_strnotreadable 64969 32 #define AdvancedOptionsUnit_strNotWhatitshouldbe 64970 33 #define AdvancedOptionsUnit_stralreadyinthelist 64971 34 #define AdvancedOptionsUnit_strPartOfOpcodeInTheList 64972 35 #define AdvancedOptionsUnit_strCECode 64973 36 #define AdvancedOptionsUnit_strNameCECode 64974 37 #define AdvancedOptionsUnit_strChangeOf 64975 38 #define MainUnit_strFindWhatWritesToPointer 64976 39 #define MainUnit_strFindWhatWritesToPointer2 64977 40 #define MainUnit_strcantdebugnow 64978 41 #define MainUnit_strpointercantberead 64979 42 #define MainUnit_strconfirmUndo 64980 43 #define MainUnit_strHideForeground 64981 44 #define MainUnit_strHideAll 64982 45 #define MainUnit_strUnHideForeground 64983 46 #define MainUnit_strUnhideAll 64984 47 #define MainUnit_strhappybirthday 64985 48 #define MainUnit_strXMess 64986 49 #define MainUnit_strNewyear 64987 50 #define MainUnit_strfuture 64988 51 #define MainUnit_strdontbother 64989 52 #define MainUnit_strneeddebugger 64990 53 #define MainUnit_strfailuretosetspeed 64991 54 #define MainUnit_stralreadyin 64992 55 #define MainUnit_stralreadyinlistmultiple 64993 56 #define MainUnit_strsethotkey 64994 57 #define MainUnit_strshowasdecimal 64995 58 #define MainUnit_strshowashex 64996 59 #define MainUnit_strFreezeAddressInList 64997 60 #define MainUnit_strFreezeAllAddresses 64998 61 #define MainUnit_strUnfreezeAllAddresses 64999 62 #define MainUnit_strUnfreezeAddressInList 65000 63 #define MainUnit_strDeleteAddress 65001 64 #define MainUnit_strRecalculateAddress 65002 65 #define MainUnit_strRecalculateSelectedAddresses 65003 66 #define MainUnit_strRecalculateAllAddresses 65004 67 #define MainUnit_strRemoveFromGroup 65005 68 #define MainUnit_strEnableCheat 65006 69 #define MainUnit_strDisableCheat 65007 70 #define MainUnit_strAdd0 65008 71 #define MainUnit_strNotAValidNotation 65009 72 #define MainUnit_strNotSameAmmountofBytes 65010 73 #define MainUnit_strNotAValidBinaryNotation 65011 74 #define MainUnit_strValue 65012 75 #define MainUnit_strChange1Value 65013 76 #define MainUnit_strChangeMoreValues 65014 77 #define MainUnit_strDelete1Address 65015 78 #define MainUnit_strDeleteMultipleAddresses 65016 79 #define MainUnit_strDelete1Group 65017 80 #define MainUnit_strDeleteMoreGroups 65018 81 #define MainUnit_strSelectedAddressIsAPointer 65019 82 #define MainUnit_strMorePointers 65020 83 #define MainUnit_strMorePointers2 65021 84 #define MainUnit_strNotAValidValue 65022 85 #define MainUnit_strdeleteall 65023 86 #define MainUnit_strsearchForText 65024 87 #define MainUnit_strSearchForArray 65025 88 #define MainUnit_strConfirmProcessTermination 65026 89 #define MainUnit_strError 65027 90 #define MainUnit_strErrorwhileOpeningProcess 65028 91 #define MainUnit_strKeepList 65029 92 #define MainUnit_strInfoAboutTable 65030 93 #define MainUnit_strPhysicalMemory 65031 94 #define MainUnit_strfillInSomething 65032 95 #define MainUnit_strFirstSelectAProcess 65033 96 #define MainUnit_strCantdoNextScan 65034 97 #define MainUnit_strClickToGoHome 65035 98 #define MainUnit_strChangeDescription1 65036 99 #define MainUnit_strChangeDescription2 65037 100 #define MainUnit_strNotTheSameSize1 65038 101 #define MainUnit_strNotTheSameSize2 65039 102 #define SynEditStrConst_SYNS_EDuplicateShortcut 65040 103 #define SynEditStrConst_SYNS_FilterPascal 65041 104 #define SynEditStrConst_SYNS_FilterCPP 65042 105 #define SynEditStrConst_SYNS_LangCPP 65043 106 #define SynEditStrConst_SYNS_LangPascal 65044 107 #define SynEditTextBuffer_SListIndexOutOfBounds 65045 108 #define SynEditTextBuffer_SInvalidCapacity 65046 109 #define MainUnit_strWindowFailedToHide 65047 110 #define MainUnit_strAccessed 65048 111 #define MainUnit_strOpcodeChanged 65049 112 #define MainUnit_strAllowNegative 65050 113 #define MainUnit_strAllowPositive 65051 114 #define MainUnit_strNormalFreeze 65052 115 #define MainUnit_strAskToSave 65053 116 #define MainUnit_strScantextcaptiontotext 65054 117 #define MainUnit_strScantextcaptiontoValue 65055 118 #define SynEditStrConst_SYNS_AttrAssembler 65056 119 #define SynEditStrConst_SYNS_AttrCharacter 65057 120 #define SynEditStrConst_SYNS_AttrComment 65058 121 #define SynEditStrConst_SYNS_AttrFloat 65059 122 #define SynEditStrConst_SYNS_AttrHexadecimal 65060 123 #define SynEditStrConst_SYNS_AttrIdentifier 65061 124 #define SynEditStrConst_SYNS_AttrIllegalChar 65062 125 #define SynEditStrConst_SYNS_AttrNumber 65063 126 #define SynEditStrConst_SYNS_AttrOctal 65064 127 #define SynEditStrConst_SYNS_AttrPreprocessor 65065 128 #define SynEditStrConst_SYNS_AttrReservedWord 65066 129 #define SynEditStrConst_SYNS_AttrSpace 65067 130 #define SynEditStrConst_SYNS_AttrString 65068 131 #define SynEditStrConst_SYNS_AttrSymbol 65069 132 #define SynEditStrConst_SYNS_ScrollInfoFmt 65070 133 #define SynEditStrConst_SYNS_ScrollInfoFmtTop 65071 134 #define MainUnit2_strIncreasedValue 65072 135 #define MainUnit2_strIncreasedValueBy 65073 136 #define MainUnit2_strDecreasedValue 65074 137 #define MainUnit2_strDecreasedValueBy 65075 138 #define MainUnit2_strValueBetween 65076 139 #define MainUnit2_strChangedValue 65077 140 #define MainUnit2_strUnchangedValue 65078 141 #define MainUnit2_strUnknownInitialValue 65079 142 #define MainUnit2_strSameAsFirstScan 65080 143 #define MainUnit2_strtoolong 65081 144 #define OpenSave_strunknowncomponent 65082 145 #define OpenSave_strCorruptIcon 65083 146 #define OpenSave_strCantLoadFilepatcher 65084 147 #define OpenSave_strNotACETrainer 65085 148 #define OpenSave_strUnknownTrainerVersion 65086 149 #define OpenSave_strCantLoadProtectedfile 65087 150 150 #define XMLConst_SMissingFileName 65088 151 151 #define XMLConst_SLine 65089 152 #define OpenSave_strunknowncomponent 65090153 #define OpenSave_strCorruptIcon65091154 #define OpenSave_strCantLoadFilepatcher65092155 #define OpenSave_strNotACETrainer65093156 #define OpenSave_strUnknownTrainerVersion65094157 #define OpenSave_strCantLoadProtectedfile 65095158 #define SynEditStrConst_SYNS_AttrAssembler65096159 #define SynEditStrConst_SYNS_AttrCharacter65097160 #define SynEditStrConst_SYNS_AttrComment65098161 #define SynEditStrConst_SYNS_AttrFloat65099162 #define SynEditStrConst_SYNS_AttrHexadecimal65100163 #define SynEditStrConst_SYNS_AttrIdentifier65101164 #define SynEditStrConst_SYNS_AttrIllegalChar65102165 #define SynEditStrConst_SYNS_AttrNumber65103152 #define MainUnit2_strStart 65090 153 #define MainUnit2_strStop 65091 154 #define MainUnit2_strOK 65092 155 #define MainUnit2_strBug 65093 156 #define MainUnit2_strAutoAssemble 65094 157 #define MainUnit2_strAddressHasToBeReadable 65095 158 #define MainUnit2_strNewScan 65096 159 #define MainUnit2_strFirstScan 65097 160 #define MainUnit2_strNoDescription 65098 161 #define MainUnit2_strNeedNewerWindowsVersion 65099 162 #define MainUnit2_strexact 65100 163 #define MainUnit2_strexactvalue 65101 164 #define MainUnit2_strbiggerThan 65102 165 #define MainUnit2_strSmallerThan 65103 166 166 #define XMLConst_SDuplicateRegistration 65104 167 167 #define XMLConst_SNoMatchingDOMVendor 65105 … … 598 598 STRINGTABLE 599 599 BEGIN 600 MainUnit_strXMess, "Merry christmas and happy new year" 601 MainUnit_strNewyear, "And what are your good intentions for this year? ;-)" 602 MainUnit_strfuture, "Wow,I never imagined people would use Cheat Engine up to today" 603 MainUnit_strdontbother, "Don't even bother. Cheat Engine uses the main thread to receive messages when the scan is done, freeze it and CE will crash!" 604 MainUnit_strneeddebugger, "To use this option the debugger must be attached to the game" 605 MainUnit_strfailuretosetspeed, "Failure to set the speed" 600 AdvancedOptionsUnit_strCode, "Code :" 601 AdvancedOptionsUnit_strFindWhatCodeaccesses, "Find out what addresses this code accesses" 602 AdvancedOptionsUnit_strFindWhatCodeReads, "Find out what addresses this code reads from" 603 AdvancedOptionsUnit_strFindWhatCodeWrites, "Find out what addresses this code writes to" 604 AdvancedOptionsUnit_strcouldntrestorecode, "Error when trying to restore this code!" 605 AdvancedOptionsUnit_strnotthesame, "The memory at this address isn't what it should be! Continue?" 606 AdvancedOptionsUnit_strcouldntwrite, "The memory at this address couldn't be written" 607 AdvancedOptionsUnit_StrSelectExeFor3D, "Select the executable of the Direct-3D game" 608 AdvancedOptionsUnit_StrSelectExeForOpenGL3D, "Select the executable of the OpenGL game" 609 formsettingsunit_strProcessWatcherWillPreventUnloader, "Enabling the process watcher will prevent the unloader from working" 610 FoundCodeUnit_strClose, "Close" 606 611 MainUnit_strIncorrectspeed, "The speed value is incorrect" 607 612 MainUnit_strCantSetSpeed, "I can't set this speed. (must be bigger than 0)" … … 609 614 MainUnit_strUnknownExtension, "Unknown extension" 610 615 MainUnit_strCustomScanConfig, "Custom scan config" 611 MainUnit_strRecalculateAddress, "Recalculate address" 612 MainUnit_strRecalculateSelectedAddresses, "Recalculate selected addresses" 613 MainUnit_strRecalculateAllAddresses, "Recalculate all addresses" 614 MainUnit_strRemoveFromGroup, "Remove from group " 615 MainUnit_strEnableCheat, "Enable cheat" 616 MainUnit_strDisableCheat, "Disable cheat" 616 frmFindstaticsUnit_strScan, "Scan" 617 frmFindstaticsUnit_strStop, "Stop" 618 frmFindstaticsUnit_strStopping, "Stopping..." 619 frmLoadMemoryunit_strinvalidfile, "This is a invalid memory region file. I'll assume this file has no header data" 620 AdvancedOptionsUnit_strnotreadable, "This address is not readable" 621 AdvancedOptionsUnit_strNotWhatitshouldbe, "The memory at this address is'nt what it should be! Continue?" 622 AdvancedOptionsUnit_stralreadyinthelist, "This byte is already part of another opcode already present in the list" 623 AdvancedOptionsUnit_strPartOfOpcodeInTheList, "At least one of these bytes is already in the list" 624 AdvancedOptionsUnit_strCECode, "Cheat Engine code:" 625 AdvancedOptionsUnit_strNameCECode, "What name do you want to give this code?" 626 AdvancedOptionsUnit_strChangeOf, "Change of " 617 627 MainUnit_strFindWhatWritesToPointer, "Find out what writes to this pointer" 618 628 MainUnit_strFindWhatWritesToPointer2, "Find what reads from the address pointed at by this pointer" … … 625 635 MainUnit_strUnhideAll, "will bring all windows back" 626 636 MainUnit_strhappybirthday, "Let's sing Happy Birthday for Dark Byte today!" 627 MainUnit_str DeleteMoreGroups, "Also delete the groups of the addresses you selected?"628 MainUnit_str SelectedAddressIsAPointer, "The selected address is a pointer. Are you sure? (the base pointer will get the address)"629 MainUnit_str MorePointers, "There are more pointers selected. Do you want to change them as well?"630 MainUnit_str MorePointers2, "You have selected one or more pointers. Do you want to change them as well?"631 MainUnit_str NotAValidValue, "This is not an valid value"632 MainUnit_str deleteall, "Are you sure you want to delete all addresses?"637 MainUnit_strXMess, "Merry christmas and happy new year" 638 MainUnit_strNewyear, "And what are your good intentions for this year? ;-)" 639 MainUnit_strfuture, "Wow,I never imagined people would use Cheat Engine up to today" 640 MainUnit_strdontbother, "Don't even bother. Cheat Engine uses the main thread to receive messages when the scan is done, freeze it and CE will crash!" 641 MainUnit_strneeddebugger, "To use this option the debugger must be attached to the game" 642 MainUnit_strfailuretosetspeed, "Failure to set the speed" 633 643 MainUnit_stralreadyin, "This address is already in the list" 634 644 MainUnit_stralreadyinlistmultiple, "One or more addresses where already in the list" … … 641 651 MainUnit_strUnfreezeAddressInList, "Unfreeze the address in this list" 642 652 MainUnit_strDeleteAddress, "Delete this address" 643 MainUnit_str CantdoNextScan, "You can't do a Next Scan with the current selected way of scanning!"644 MainUnit_str ClickToGoHome, "Click here to go to the Cheat Engine homepage"645 MainUnit_str ChangeDescription1, "Description"646 MainUnit_str ChangeDescription2, "Change the description to:"647 MainUnit_str NotTheSameSize1, "The text you entered isn't the same size as the original. Continue?"648 MainUnit_str NotTheSameSize2, "Not the same size!"653 MainUnit_strRecalculateAddress, "Recalculate address" 654 MainUnit_strRecalculateSelectedAddresses, "Recalculate selected addresses" 655 MainUnit_strRecalculateAllAddresses, "Recalculate all addresses" 656 MainUnit_strRemoveFromGroup, "Remove from group " 657 MainUnit_strEnableCheat, "Enable cheat" 658 MainUnit_strDisableCheat, "Disable cheat" 649 659 MainUnit_strAdd0, "Do you want to add a '0'-terminator at the end?" 650 660 MainUnit_strNotAValidNotation, "This is not a valid notation" … … 657 667 MainUnit_strDeleteMultipleAddresses, "Delete these addresses?" 658 668 MainUnit_strDelete1Group, "Also delete the group this address is a member of?" 659 MainUnit_str AllowNegative, "Allow negative changes"660 MainUnit_str AllowPositive, "Allow positive changes"661 MainUnit_str NormalFreeze, "Don't allow any change"662 MainUnit_str AskToSave, "You haven't saved your last changes yet. Save Now?"663 MainUnit_str Scantextcaptiontotext, "Text:"664 MainUnit_str ScantextcaptiontoValue, "Value:"669 MainUnit_strDeleteMoreGroups, "Also delete the groups of the addresses you selected?" 670 MainUnit_strSelectedAddressIsAPointer, "The selected address is a pointer. Are you sure? (the base pointer will get the address)" 671 MainUnit_strMorePointers, "There are more pointers selected. Do you want to change them as well?" 672 MainUnit_strMorePointers2, "You have selected one or more pointers. Do you want to change them as well?" 673 MainUnit_strNotAValidValue, "This is not an valid value" 674 MainUnit_strdeleteall, "Are you sure you want to delete all addresses?" 665 675 MainUnit_strsearchForText, "Search for text" 666 676 MainUnit_strSearchForArray, "Search for this array" … … 673 683 MainUnit_strfillInSomething, "Please fill in something!" 674 684 MainUnit_strFirstSelectAProcess, "First select a process" 675 MainUnit2_strbiggerThan, "Bigger than..." 676 MainUnit2_strSmallerThan, "Smaller than..." 685 MainUnit_strCantdoNextScan, "You can't do a Next Scan with the current selected way of scanning!" 686 MainUnit_strClickToGoHome, "Click here to go to the Cheat Engine homepage" 687 MainUnit_strChangeDescription1, "Description" 688 MainUnit_strChangeDescription2, "Change the description to:" 689 MainUnit_strNotTheSameSize1, "The text you entered isn't the same size as the original. Continue?" 690 MainUnit_strNotTheSameSize2, "Not the same size!" 691 SynEditStrConst_SYNS_EDuplicateShortcut, "Shortcut already exists" 692 SynEditStrConst_SYNS_FilterPascal, "Pascal Files (*.pas;*.pp;*.dpr;*.dpk;*.inc)|*.pas;*.pp;*.dpr;*.dpk;*.inc" 693 SynEditStrConst_SYNS_FilterCPP, "C/C++ Files (*.c;*.cpp;*.h;*.hpp)|*.c;*.cpp;*.h;*.hpp" 694 SynEditStrConst_SYNS_LangCPP, "C/C++" 695 SynEditStrConst_SYNS_LangPascal, "Object Pascal" 696 SynEditTextBuffer_SListIndexOutOfBounds, "Invalid stringlist index %d" 697 SynEditTextBuffer_SInvalidCapacity, "Stringlist capacity cannot be smaller than count" 698 MainUnit_strWindowFailedToHide, "A window failed to hide" 699 MainUnit_strAccessed, "The following opcodes accessed the selected address" 700 MainUnit_strOpcodeChanged, "The following opcodes changed the selected address" 701 MainUnit_strAllowNegative, "Allow negative changes" 702 MainUnit_strAllowPositive, "Allow positive changes" 703 MainUnit_strNormalFreeze, "Don't allow any change" 704 MainUnit_strAskToSave, "You haven't saved your last changes yet. Save Now?" 705 MainUnit_strScantextcaptiontotext, "Text:" 706 MainUnit_strScantextcaptiontoValue, "Value:" 707 SynEditStrConst_SYNS_AttrAssembler, "Assembler" 708 SynEditStrConst_SYNS_AttrCharacter, "Character" 709 SynEditStrConst_SYNS_AttrComment, "Comment" 710 SynEditStrConst_SYNS_AttrFloat, "Float" 711 SynEditStrConst_SYNS_AttrHexadecimal, "Hexadecimal" 712 SynEditStrConst_SYNS_AttrIdentifier, "Identifier" 713 SynEditStrConst_SYNS_AttrIllegalChar, "Illegal Char" 714 SynEditStrConst_SYNS_AttrNumber, "Number" 715 SynEditStrConst_SYNS_AttrOctal, "Octal" 716 SynEditStrConst_SYNS_AttrPreprocessor, "Preprocessor" 717 SynEditStrConst_SYNS_AttrReservedWord, "Reserved Word" 718 SynEditStrConst_SYNS_AttrSpace, "Space" 719 SynEditStrConst_SYNS_AttrString, "String" 720 SynEditStrConst_SYNS_AttrSymbol, "Symbol" 721 SynEditStrConst_SYNS_ScrollInfoFmt, "%d - %d" 722 SynEditStrConst_SYNS_ScrollInfoFmtTop, "Top Line: %d" 677 723 MainUnit2_strIncreasedValue, "Increased value" 678 724 MainUnit2_strIncreasedValueBy, "Increased value by ..." … … 685 731 MainUnit2_strSameAsFirstScan, "Same as first scan" 686 732 MainUnit2_strtoolong, "Too long" 687 FoundCodeUnit_strClose, "Close"688 MainUnit_strWindowFailedToHide, "A window failed to hide"689 MainUnit_strAccessed, "The following opcodes accessed the selected address"690 MainUnit_strOpcodeChanged, "The following opcodes changed the selected address"691 AdvancedOptionsUnit_strcouldntwrite, "The memory at this address couldn't be written"692 AdvancedOptionsUnit_StrSelectExeFor3D, "Select the executable of the Direct-3D game"693 AdvancedOptionsUnit_StrSelectExeForOpenGL3D, "Select the executable of the OpenGL game"694 formsettingsunit_strProcessWatcherWillPreventUnloader, "Enabling the process watcher will prevent the unloader from working"733 OpenSave_strunknowncomponent, "There is a unknown component in the trainer! compnr=" 734 OpenSave_strCorruptIcon, "The icon has been corrupted" 735 OpenSave_strCantLoadFilepatcher, "The file patcher can't be loaded by Cheat Engine!" 736 OpenSave_strNotACETrainer, "This is not a trainer made by Cheat Engine (If it is a trainer at all!)" 737 OpenSave_strUnknownTrainerVersion, "This version of Cheat Engine doesn't know how to read this trainer! Trainerversion=" 738 OpenSave_strCantLoadProtectedfile, "This trainer is protected from being opened by CE. Now go away!!!" 739 XMLConst_SMissingFileName, "FileName cannot be blank" 740 XMLConst_SLine, "Line" 695 741 MainUnit2_strStart, "Start" 696 742 MainUnit2_strStop, "Stop" … … 705 751 MainUnit2_strexact, "Exact" 706 752 MainUnit2_strexactvalue, "Exact Value" 707 frmFindstaticsUnit_strStop, "Stop" 708 frmFindstaticsUnit_strStopping, "Stopping..." 709 frmLoadMemoryunit_strinvalidfile, "This is a invalid memory region file. I'll assume this file has no header data" 710 AdvancedOptionsUnit_strnotreadable, "This address is not readable" 711 AdvancedOptionsUnit_strNotWhatitshouldbe, "The memory at this address is'nt what it should be! Continue?" 712 AdvancedOptionsUnit_stralreadyinthelist, "This byte is already part of another opcode already present in the list" 713 AdvancedOptionsUnit_strPartOfOpcodeInTheList, "At least one of these bytes is already in the list" 714 AdvancedOptionsUnit_strCECode, "Cheat Engine code:" 715 AdvancedOptionsUnit_strNameCECode, "What name do you want to give this code?" 716 AdvancedOptionsUnit_strChangeOf, "Change of " 717 AdvancedOptionsUnit_strCode, "Code :" 718 AdvancedOptionsUnit_strFindWhatCodeaccesses, "Find out what addresses this code accesses" 719 AdvancedOptionsUnit_strFindWhatCodeReads, "Find out what addresses this code reads from" 720 AdvancedOptionsUnit_strFindWhatCodeWrites, "Find out what addresses this code writes to" 721 AdvancedOptionsUnit_strcouldntrestorecode, "Error when trying to restore this code!" 722 AdvancedOptionsUnit_strnotthesame, "The memory at this address isn't what it should be! Continue?" 723 SynEditStrConst_SYNS_AttrOctal, "Octal" 724 SynEditStrConst_SYNS_AttrPreprocessor, "Preprocessor" 725 SynEditStrConst_SYNS_AttrReservedWord, "Reserved Word" 726 SynEditStrConst_SYNS_AttrSpace, "Space" 727 SynEditStrConst_SYNS_AttrString, "String" 728 SynEditStrConst_SYNS_AttrSymbol, "Symbol" 729 SynEditStrConst_SYNS_ScrollInfoFmt, "%d - %d" 730 SynEditStrConst_SYNS_ScrollInfoFmtTop, "Top Line: %d" 731 SynEditStrConst_SYNS_EDuplicateShortcut, "Shortcut already exists" 732 SynEditStrConst_SYNS_FilterPascal, "Pascal Files (*.pas;*.pp;*.dpr;*.dpk;*.inc)|*.pas;*.pp;*.dpr;*.dpk;*.inc" 733 SynEditStrConst_SYNS_FilterCPP, "C/C++ Files (*.c;*.cpp;*.h;*.hpp)|*.c;*.cpp;*.h;*.hpp" 734 SynEditStrConst_SYNS_LangCPP, "C/C++" 735 SynEditStrConst_SYNS_LangPascal, "Object Pascal" 736 SynEditTextBuffer_SListIndexOutOfBounds, "Invalid stringlist index %d" 737 SynEditTextBuffer_SInvalidCapacity, "Stringlist capacity cannot be smaller than count" 738 frmFindstaticsUnit_strScan, "Scan" 739 XMLConst_SMissingFileName, "FileName cannot be blank" 740 XMLConst_SLine, "Line" 741 OpenSave_strunknowncomponent, "There is a unknown component in the trainer! compnr=" 742 OpenSave_strCorruptIcon, "The icon has been corrupted" 743 OpenSave_strCantLoadFilepatcher, "The file patcher can't be loaded by Cheat Engine!" 744 OpenSave_strNotACETrainer, "This is not a trainer made by Cheat Engine (If it is a trainer at all!)" 745 OpenSave_strUnknownTrainerVersion, "This version of Cheat Engine doesn't know how to read this trainer! Trainerversion=" 746 OpenSave_strCantLoadProtectedfile, "This trainer is protected from being opened by CE. Now go away!!!" 747 SynEditStrConst_SYNS_AttrAssembler, "Assembler" 748 SynEditStrConst_SYNS_AttrCharacter, "Character" 749 SynEditStrConst_SYNS_AttrComment, "Comment" 750 SynEditStrConst_SYNS_AttrFloat, "Float" 751 SynEditStrConst_SYNS_AttrHexadecimal, "Hexadecimal" 752 SynEditStrConst_SYNS_AttrIdentifier, "Identifier" 753 SynEditStrConst_SYNS_AttrIllegalChar, "Illegal Char" 754 SynEditStrConst_SYNS_AttrNumber, "Number" 753 MainUnit2_strbiggerThan, "Bigger than..." 754 MainUnit2_strSmallerThan, "Smaller than..." 755 755 XMLConst_SDuplicateRegistration, "\"%s\" DOMImplementation already registered" 756 756 XMLConst_SNoMatchingDOMVendor, "No matching DOM Vendor: \"%s\"" -
Cheat Engine/frmCScriptUnit.dfm
r153 r311 8 8 Font.Charset = DEFAULT_CHARSET 9 9 Font.Color = clWindowText 10 Font.Height = -1 110 Font.Height = -14 11 11 Font.Name = 'MS Sans Serif' 12 12 Font.Style = [] … … 16 16 OnClose = FormClose 17 17 OnCreate = FormCreate 18 PixelsPerInch = 9619 TextHeight = 1 318 PixelsPerInch = 120 19 TextHeight = 16 20 20 object Panel1: TPanel 21 21 Left = 0 22 Top = 31123 Width = 50424 Height = 2 422 Top = 290 23 Width = 494 24 Height = 29 25 25 Align = alBottom 26 26 BevelOuter = bvNone … … 30 30 Left = 0 31 31 Top = 0 32 Width = 49732 Width = 612 33 33 Height = 21 34 34 TabOrder = 0 … … 39 39 Left = 0 40 40 Top = 0 41 Width = 50442 Height = 31141 Width = 494 42 Height = 290 43 43 Align = alClient 44 44 ReadOnly = True -
Cheat Engine/frmautoinjectunit.dfm
r281 r311 4 4 Width = 431 5 5 Height = 331 6 HelpContext = 1 86 HelpContext = 1089 7 7 Caption = 'Auto assemble' 8 8 Color = clBtnFace -
Cheat Engine/frmautoinjectunit.pas
r281 r311 592 592 var a,b: integer; 593 593 aa:TCEAllocArray; 594 registeredsymbols: TStringlist; 594 595 begin 595 596 {$ifndef standalonetrainerwithassembler} 596 597 {$ifndef net} 597 setlength(aa,1); 598 getenableanddisablepos(assemblescreen.Lines,a,b); 599 if (a=-1) and (b=-1) then raise exception.create('The code needs a [ENABLE] and a [DISABLE] section if you want to add it to a table'); 600 601 if autoassemble(assemblescreen.lines,false,true,true,false,aa) and 602 autoassemble(assemblescreen.lines,false,false,true,false,aa) then 603 begin 604 //add a entry with type 255 605 mainform.AddAutoAssembleScript(assemblescreen.text); 606 607 608 end 609 else showmessage('Failed to add to table. Not all code is injectable'); 598 registeredsymbols:=tstringlist.Create; 599 registeredsymbols.CaseSensitive:=false; 600 registeredsymbols.Duplicates:=dupIgnore; 601 602 try 603 setlength(aa,0); 604 getenableanddisablepos(assemblescreen.Lines,a,b); 605 if (a=-1) and (b=-1) then raise exception.create('The code needs a [ENABLE] and a [DISABLE] section if you want to add it to a table'); 606 607 if autoassemble(assemblescreen.lines,false,true,true,false,aa,registeredsymbols) and 608 autoassemble(assemblescreen.lines,false,false,true,false,aa,registeredsymbols) then 609 begin 610 //add a entry with type 255 611 mainform.AddAutoAssembleScript(assemblescreen.text); 612 613 614 end 615 else showmessage('Failed to add to table. Not all code is injectable'); 616 finally 617 registeredsymbols.Free; 618 end; 610 619 {$endif} 611 620 {$endif} -
Cheat Engine/memscan.pas
r306 r311 432 432 var bytes: tbytes; 433 433 begin 434 ConvertStringToBytes(st, false,bytes);434 ConvertStringToBytes(st,true,bytes); 435 435 result:=length(bytes); 436 436 end; -
Cheat Engine/plugin/cepluginsdk.h
r309 r311 68 68 typedef struct _PLUGINTYPE4_INIT 69 69 { 70 CEP_PLUGINTYPE4 callbackroutine; //pointer to a callback routine of the type 3plugin70 CEP_PLUGINTYPE4 callbackroutine; //pointer to a callback routine of the type 4 plugin 71 71 } PLUGINTYPE4_INIT, POINTERREASSIGNMENTPLUGIN_INIT, *PPLUGINTYPE4_INIT, *PPOINTERREASSIGNMENTPLUGIN_INIT; 72 72 … … 86 86 } PLUGINTYPE6_INIT, DISASSEMBLERCONTEXT_INIT, *PPLUGINTYPE6_INIT, *PDISASSEMBLERCONTEXT_INIT; 87 87 88 typedef struct _PLUGINTYPE7_INIT 89 { 90 CEP_PLUGINTYPE7 callbackroutine; //pointer to a callback routine of the type 7 plugin 91 } PLUGINTYPE7_INIT, DISASSEMBLERLINEPLUGIN_INIT, *PPLUGINTYPE7_INIT, *PDISASSEMBLERLINEPLUGIN_INIT; 92 93 typedef struct _PLUGINTYPE8_INIT 94 { 95 CEP_PLUGINTYPE8 callbackroutine; //pointer to a callback routine of the type 8 plugin 96 } PLUGINTYPE8_INIT, AUTOASSEMBLERPLUGIN_INIT, *PPLUGINTYPE8_INIT, *PAUTOASSEMBLERPLUGIN_INIT; 88 97 89 98 typedef struct _REGISTERMODIFICATIONINFO … … 148 157 typedef BOOL (__stdcall *CEP_LOADMODULE)(char *modulepath, char *exportlist, int *maxsize); 149 158 typedef BOOL (__stdcall *CEP_DISASSEMBLEEX)(ULONG address, char *output, int maxsize); 150 typedef VOID (__stdcall *CEP_AA_ADDCOMMAND)( void);151 typedef VOID (__stdcall *CEP_AA_DELCOMMAND)( void);159 typedef VOID (__stdcall *CEP_AA_ADDCOMMAND)(char *command); 160 typedef VOID (__stdcall *CEP_AA_DELCOMMAND)(char *command); 152 161 153 162 typedef struct _ExportedFunctions -
Cheat Engine/pointerscannerfrm.pas
r305 r311 1241 1241 1242 1242 listview1.Items.Count:=Pointerscanresults.count; 1243 1244 panel1.Caption:='pointercount:'+inttostr(Pointerscanresults.count); 1245 1243 1246 if (listview1.Items.Count=0) and (Pointerscanresults.count>100000000) then 1244 1247 begin -
Cheat Engine/underc.pas
r153 r311 200 200 201 201 202 203 // uc_init(nil,false); 204 202 //uc_init(pchar(' '),false); 203 Set8087CW($133f); 205 204 206 205 … … 217 216 exit; 218 217 219 //uc_finis;220 // freelibrary(underclibrary); 218 uc_finis; 219 221 220 currentthreadid:=0; 222 221 scriptEngineCS.leave; 223 222 224 223 result:=true; 224 225 //Set8087CW($133f); 225 226 end; 226 227 227 228 function TScriptEngine.execute_command(command: string): boolean; 229 var x: pchar; 228 230 begin 229 231 result:=false; … … 231 233 exit; 232 234 233 result:=uc_exec(pchar(command)); 235 // result:=uc_exec(pchar(command)); 236 237 getmem(x,256); 238 uc_compile(x,pchar(command)); 239 freemem(x); 234 240 end; 235 241
