"ArtMoney Table","20","8.15","1998A059","E36E09FB","VP0","1","1","english","The Legend of Heroes: Trails to Azure | GOG Initialized","ao.exe","","13b0092f963a932fd2e3ac8d89aa326f","03/15/2023","2","10","0","1","256","9","","19045","Richard","Vienna,Austria","aon.at","richardxxx","M","64","Y","Y","Y","Y","Y","N","15","Damage-Code;412BC8 488BDA 453BF0 0F46C8 898A????0000;12;;0C;A;S;","Get-Mira-Orb;0FB7D8 498B46?? 488D15???????? 488D4C24?? 448B80????????;1A;;0C;A;S;","Get-CP;74?? 664183B9????????64 72??;D;;0C;A;S;","Get-Item-Sub;668982???????? B801000000 C3;11;;0C;A;S;","Get-Char-Data;41FFC7 4983C602 4183FF09 0F8C???????? 458B45??;15;;0C;A;S;","Get-INV-Range;420FB7441F02 400FB6CE;A;;0C;A;S;","Get_Used_ITEM;4B8D1491 0FB782???????? 413BC0;E;;0C;A;S;","EXP_ADD;668943?? F3410F1086???????? F30F1143?? 660F6EC8;16;;0C;A;S;","Quarz-Sepith-earning;460FB79499???????? 4103D2 3BD3;E;;0C;A;S;","Get-PomPom;8B8F???????? 83F904 7F??;B;;0C;A;S;","Get-Fish-Size;0FB7EB 0FAFE8 0FB74708;A;;0C;A;S;","Get-Combat-Book;81C6???????? 450FB70F;A;;0C;A;S;","Horror-Coaster;668987???????? 0183????????;D;;0C;A;S;","Elie-RECORD-Bond;0FB69F???????? 440FB7BF???????? 41BE????????;15;;0C;A;S;","Sully_Minigame;488B0B 89040F 488B5C24?? B801000000;10;;0C;A;S;","7","2","ALL","","MAIN","1","Game-Data","1","CHAR-Status","3","Combat-Book","3","Reserve using Module-Addressing","1","Bonding Search","1","Updated on GoG Vers. 1.1.11 in April 2023 Start and load Game, open Inventory, then Load Artmoney Table (to get all signatures) Or do later: Table,Info,Signatures: 'Signature Search' and Tab 'Code injecting *' press Replace-Button Each Cheat may deactivated by setting to '0' Use 'Visible Groups': ALL for Combat-Book&Bonding-Points Move Cursor to Game:SYSTEM/RECORD/ Down to Elie Item Cheat will work if more Items in Inventory as used: 2 Items: 2 use -> 0 Items, 3 Items: 2 use-> 3 Items Game will hang if you TRADE more than ONE Fishing Baits-SET: Game try set SETs to Zero (exctract Baits) but CHEAT=1 prohibits. Same if you have 2 or more Quartz-Fragments and show to Rebecca: All decoded and 'Hang' until CHEAT=0 MISHEALM-WONDERLAND: Set CHEAT=0 if only 5 Person's left: MWL-Tickets must change from 1 to 0 to CONTINUE GAME! CHEAT:DISCARD an Item (Amount2+) and Edit Amount in Table There will also one Item before and after in Table to Edit !!! MISSING BOOKs? : Buy 2 actual Newsletter, then SELL 1 of 2 Newsletter and change ID to 'Agnes-Books' and buy 2 Newsletter again ! TABLE FOR BOOKs BELOW ITEM: Amount last ITEM in ROW from selected (nonempty) TAB when 'moving' (LB/RB) in Inventory: For use with Memory-Editor & QUARTZ: EXP=2 Bytes, EACH next QUARTZ+ 4 BYTES AVOID Negative NEXT-Values ! (Edit and reduce Quartz-EXP) FOE with max.Health >= Boss Detection = Boss FOEs-Cheat=1 wil do 400% of displayed Damage EP, CP Cheat will set while Game copy CHAR-Data for Battle Open Char STATUS to get CHAR-DATA: You may set Level and EXP but using Cheat will be easier MULTIPLY EXP=EXP*2^N N=0=OFF up to N=4 (*16) New-EXP will correct shown after Battle (max. 9999) MULTIPLY Quartz: 0=OFF to 6=*64 as above (EXP) Get Multiply of Quartz-EXP after Battle POM!POM!Party! Set Bonus Value from 0 (OFF) to 500max. It takes about 2-3 'POPs' to activate: High-Memory=Foe Lower- Memory-Range will asigned to Player Sully Minigame (Dance): SET CHEAT=1 (deafult=0) or play until Game say: 'RETRY/CONTINUE' Set Sully Values to 16 and 0 and then CONTINUE Bonding Points Structure: Game: 'SYSTEM/RECORD' at Bottom 2 Point=1 STAR for each Entry except Noe which starts with 0=1 STAR! Char-Data-Strucutue: max.HP 4 Byte, HP 4 Byte, Level 2 Byte, max.EP 2 Byte, EP 2 Byte, CP 2 Byte, EXP 4 Byte, STR 2 Byte, DEF 2 Byte, .... ITEM-IDs Agnes-Ch Times Issue, 01: 02EE 02E1 02: 02EF 02E2 03: 02F0 02E3 04: 02F1 02E4 05: 02F2 02E5 06: 02F3 02E6 07: 02F4 02E7 08: 02F5 02E8 09: 02F6 02E9 Special-Ed: 02EA 10: 02F7 02EB 11: 02F8 12: 02F9 13: 02FA 14: 02FB Quartz Fragment: 0334 Green Charm: 0398 Blue Charm: 0399 Red Charm: 039A Yellow Charm: 039B Golden Charm:039C - Reserve using Module-Addressing - will help, if signature search will fail or code change in further Game Versions INJECTION EXP_ADD 668943?? * mov [rbx+7E],ax F3410F1086???????? * movss xmm0,[r14+000D72FC] F30F1143?? movss [rbx+70],xmm0 660F6EC8 movd xmm1,eax inject * 13 Bytes push rcx mov ecx,[EXP_Cheat] test ecx,ecx jz EXP_End cmp ecx,4 jbe EXP_Mult mov ecx,4 mov [EXP_Cheat],ecx // max. 4 = EXP*16 EXP_Mult: shl eax,cl cmp eax,270F //9999 jbe EXP_End mov eax,270F //9999 EXP_End: pop rcx PutOriginalCode Get_Mira_Orb / A Get Mira+Orb 0FB7D8 movzx ebx,ax 498B46?? mov rax,[r14+20] 488D15???????? lea rdx,[14040F608] 488D4C24?? lea rcx,[rsp+70] 448B80???????? * mov r8d,[rax+000045D4] inject * mov r8,rax // get Range add r8,44D4 // add offset mov [Mira-Orb_R],r8 PutOriginalCode Get_Item_Sub/A Get Item-Sub //413BC0 cmp eax,r8d //7E?? jle,11 //66412BC0 sub ax,r8w //sub of Item 668982???????? * mov [rdx+00771D6A],ax B801000000 mov eax,00000001 C3 ret inject * push rbx mov ebx,[Item_Cheat] test ebx,ebx pop rbx jne Item_Store_Skip PutOriginalCode Item_Store_Skip: Get_CP /A Get CP/EP 74?? je 00000048 664183B9????????64 * cmp word ptr [r9+????????],64 72?? jb 0000003D inject * push rbx push rcx mov rcx,r9 // get base range add rcx,53D8 // add offset to ID mov bx,[rcx] // get actual CHAR cmp bx,8 jae CP_End // is FOE add rcx,282 //for Actual CP mov bx,[rcx] // get actual CP cmp [min_CP],bx // compare to minCP cmova bx,[min_CP] // store higher Value mov [rcx],bx // save Value mov ebx,[EP_Cheat] test ebx,ebx je CP_End sub rcx,04 mov bx,[rcx] // get max. EP inc rcx inc rcx mov [rcx],bx // store to actual EP CP_End: pop rcx pop rbx PutOriginalCode Get_Char_Data / A Get Char Data 41FFC7 inc r15d 4983C602 * add r14,02 4183FF09 * cmp r15d,09 0F8C???????? jl -714 (0F8C30FDFFFF) 458B45?? mov r8d,[r13+10] //488D15???????? lea rdx,[1403F247C] (488D1521432100) inject * 8 Bytes PutOriginalCode jl skip_Char //skip like in original Code mov [Char_Data_A],r13 // get Address skip_Char: Damage_Code / A Damage_Code 448B9A???????? mov r11d,[rdx+00000278] 418BD8 mov ebx,r8d 4C8BC2 * mov r8,rdx ???? * xor edi,edi (Code=33FF or 31FF) 0F57C9 xorps xmm1,xmm1 inject * 6 Bytes // mov rbx,rdx will done with PutOriginalCode mov ebx,[rdx] // Base of Health cmp bx,8 // (0-7 Team, 8+FOEs) jae Is_Foe Team: mov ebx,[Team_Cheat] test ebx,ebx je Team_Limit // skip if no Cheatt shr r8d,1 // =50% Damage Team_Limit: mov ebx,[Team_max_D] test ebx,ebx // skip if 0 je End_D cmp r8d,ebx cmova r8d,ebx /limt Team-Damage jmp End_D Is_Foe: mov ebx,[FOE_Cheat] test ebx,ebx je Boss_Check // skip if no Cheatt cmp ebx,3 jbe Mult_Damage mov ebx,3 mov [FOE_Cheat],3 // max. *8 Mult_Damage: push rcx mov cl,bl shl r8d,cl // = 0 - 800% Damage pop rcx Boss_Check: mov ebx,[Boss_Cheat] test ebx,ebx je Foe_Limit // no Boss Cheat mov ebx,[Boss_Health] test ebx,ebx jz Foe_Limit // Boss-DetectionHealth=0 mov ebx,[rdx+00000274] // get max. Health cmp ebx,[Boss_Health] jb Foe_Limit // not a Boss, max. Health to low shr ebx,2 // =25% max. Health Damage inc ebx // round up cmp ebx,r8d // compare Damage cmova r8d,ebx // 25%maxHealth is higher jmp End_D // Orig. or 400%Danage is higher Foe_Limit: mov ebx,[FOE_min_D] test ebx,ebx je End_D // skip if 0 cmp ebx,r8d cmova r8d,ebx // FOE_min is higher End_D: PutOriginalCode Get-INV-Range 420FB7441F02 * movzx eax,word ptr [rdi+r11+02] 400FB6CE movzx ecx,sil Inject * mov rax,rdi inc rax inc rax // Ammount = +2 mov [INV_Start_A],rax add rax,r11 mov [Row_Last_ITEM],rax PutOriginalCode Get_Used_ITEM 4B8D1491 lea rdx,[r9+r10*4] 0FB782???????? * movzx eax,word ptr [rdx+00771D6A] 413BC0 cmp eax,r8d inject * align 4 call Item_self PutOriginalCode Item_self: pop rax // get actual Address add rax,3 // get Offset-Addrsss form OriginalCode movsxd eax,[rax] // get Offset add rax,rdx // add to Range mov [Act_ITEM],rax // save Actual used Item PutOriginalCode Quarz-Sepith-earning 460FB79499???????? movzx r10d,word ptr [rcx+r11*4+00004452] 4103D2 * add edx,r10d 3BD3 * cmp edx,ebx inject 5 Bytes push rcx lea rcx,[rcx+r11*4] / Base of Quartt-Range mov [Last_Quartz],rcx mov ecx,[Quartz_Cheat] test ecx,ecx jz End_Quartz and ecx,7F cmp ecx,6 jbe Do_Quartz mov ecx,6 / do Limit mov [Quartz_Cheat],ecx Do_Quartz: shl edx,cl // 1. Parameter for Limit-Check shl r8w,cl // 2. Parameter for Add -> may set to Limit in ebx End_Quartz: pop rcx PutOriginalCode Get-PomPom 8B8F???????? * mov ecx,[rdi+000044D8] 83F904 cmp ecx,04 7F?? jg +22 inject * signature=8B8F???????? // ecx will set by PutOriginalCode at end mov rcx,[PomPom_LR] test ecx,ecx // first run jnz PomSaveSkip mov [PomPom_LR],rdi // first save while Value=0 jmp PomPom_End // avoid Bonus for FOE PomSaveSkip: sub rcx,rdi js IsFoePom // Higher rdi Range = Foe mov [PomPom_LR],rdi // Update Lower Range ja PomPom_End // if FOE Range was saved first mov rcx,[PomPom_HR] test rcx,rcx jz PomPom_End // FOE-Range needed <> 0 mov ecx,[PomPom_Cheat] // same Address is CHAR cmp ecx,01F4 // .. 500 CP-Bonus jbe DoPomPom mov ecx,0FA //250 from 500 mov [PomPom_Cheat],ecx DoPomPom: add eax,ecx jmp PomPom_End IsFoePom: mov [PomPom_HR],rdi // Update Higer Range //xor eax,eax // Penatly for FOE PomPom_End: xor rcx,rcx // clear upper 32 Bit for safe PutOriginalCode //OriginalCode= mov ecx,[rdi+0000????] ","Mira-Orb_R dq 0 Char_Data_A dq 0 Row_Last_ITEM dq 2 Last_Quartz dq 0 Act_ITEM dq 8 PomPom_LR dq 0 PomPom_HR dq 0 Combat_Book dq 0 Bonding_Start dq 0 Sully_Tance_R dq 0 Team_Cheat dd 1 Fishing_Cheat dd 1 EP_Cheat dd 1 Item_Cheat dd 1 Boss_Cheat dd 1 Sully_Cheat dd 0 // set 1 for Cheat !! FOE_Cheat dd 2 // Damage=Damage*2^N (N=1) max. 3 EXP_Cheat dd 2 // Char-EXP=EXP*2^N (N=2) max. 4 Quartz_Cheat dd 4 //QUARTZ-EXP*2^N (N=4) max. 6 PomPom_Cheat dd FA // 250 Team_max_D dd 012C //300dec min_CP dd 96 //150dec FOE_min_D dd 03E8 //1000dec Boss_Health dd 3A98 // >=15000 RollerCoaster_Cheat dd 2 // Points*2^N (N=2) max. 4 Line dd 2D2D2D2D //---- ","-- Read: Table/Info/Comment --","000000000000","","2","","nt4","","","","","0","- Start Game, open Inventory, load ARTM-Table-","R","","2","","R","","","","","0"," Mira (Money) -> Open/Close Inventory (X or I)","Mira-Orb_R+P000000000000","","2","","ni4&","","","","","1"," Medal (Casino)","Mira-Orb_R+P000000000000,8","","2","","R","","","","","1"," DP (Detective Points)","Mira-Orb_R+P000000000000,20","","2","","ni2&","","","","","1"," Earth Septith","Mira-Orb_R+P000000000000,24","","2","","ni4&","","","","","1"," Water Septith","Mira-Orb_R+P000000000000,28","","2","","R","","","","","1"," Fire Septith","Mira-Orb_R+P000000000000,32","","2","","R","","","","","1"," Wind Septith","Mira-Orb_R+P000000000000,36","","2","","R","","","","","1"," Time Septith","Mira-Orb_R+P000000000000,40","","2","","R","","","","","1"," Space Septith","Mira-Orb_R+P000000000000,44","","2","","R","","","","","1"," Mirage Septith","Mira-Orb_R+P000000000000,48","","2","","R","","","","","1","* QUARTZ-EXP: Update of Last Team-Member ","Last_Quartz+P000000000000,17490","","2","","ni2&","","","","","0","> POM!POM!Party! CHAR Points / 100 = CP ","PomPom_LR+P000000000000,18136","","2","","R","","","","","1"," POM!POM!Party! FOE Points / 100 = CP","PomPom_HR+P000000000000,18136","","2","","R","","","","","0","* Sully Tance OK Points (max.16, Set 16)","Sully_Tance_R+P000000000000","","2","","R","","","","","0","* Sully Tance Bad Points (max.16, Set 0)","Sully_Tance_R+P000000000000,4","","2","","R","","","","","0","- Min.2 ITEMs: Discard/Sell/Use One ITEM -","Line+000000000000","","2","","nt1&","","","","","0","* 1 ITEM-Before(ONE ITEM before in Memory) ","Act_ITEM+P000000000000,-4","","2","","ni1&","","","","","0"," 1 ITEM-Before-ID (BEFORE-ID)","Act_ITEM+P000000000000,-6","","2","","ni2h&","","","","","0","- Actual Item-Separator -","Line+000000000000","","2","","nt1&","","","","","0","* ITEM-ACTUAL * (Last Discarded/Used ITEM)*","Act_ITEM+P000000000000","","2","","ni1&","","","","","0","! ITEM-ID (WARNING: Edit will CHANGE TYPE)*!","Act_ITEM+P000000000000,-2","","2","","ni2h&","","","","","0","* 1 ITEM-After (ONE ITEM after in Memory) ","Act_ITEM+P000000000000,4","","2","","ni1&","","","","","0"," 1 ITEM-After-ID (AFTER-ID)","Act_ITEM+P000000000000,2","","2","","ni2h&","","","","","0","* Last-ITEM: From last open INVENTORY-TAB","Row_Last_ITEM+P000000000000","","2","","ni1&","","","","","0"," Last-ITEM in TAB-ID (LAST-ITEM-ID)","Row_Last_ITEM+P000000000000,-2","","2","","ni2h&","","","","","0","- Open CHAR STATUS to get CHAR-DATA -","Line+000000000000","","2","","nt1&","","","","","0"," CHAR EXP (Setable)","Char_Data_A+P000000000000,16","","2","","ni4&","","","","","0","- Open COMBAT-BOOK to get Values -","Line+000000000000","","5","","nt1&","","","","","0"," Total Battles Fought","Combat_Book+P000000000000","","5","","ni2&","","","","","0"," Character K.O.s Suffered","Combat_Book+P000000000000,2","","5","","R","","","","","1"," Victories","Combat_Book+P000000000000,4","","5","","R","","","","","0"," ???","Combat_Book+P000000000000,6","","5","","R","","","","","1"," Times Escaped","Combat_Book+P000000000000,8","","5","","R","","","","","1"," Battles Retried","Combat_Book+P000000000000,10","","5","","R","","","","","0"," S-Breaks Used","Combat_Book+P000000000000,12","","5","","R","","","","","1"," Support Craft used","Combat_Book+P000000000000,14","","5","","R","","","","","0"," Party Advantages Gained","Combat_Book+P000000000000,16","","5","","R","","","","","1"," Enemies Advantages Suffered","Combat_Book+P000000000000,18","","5","","R","","","","","1"," Enemies Slain","Combat_Book+P000000000000,20","","5","","R","","","","","1"," + Activated Bursts","Combat_Book+P000000000000,22","","5","","R","","","","","1"," + Canceled Enemy Arts/Crafts","Combat_Book+P000000000000,24","","5","","R","","","","","1","- Bonding-Point SYSTEM/RECORD/LastRow:Elie -","Line+000000000000","","7","","nt1&","","","","","0"," KeA (Fran, Cecile, Ilja, Sully; Start=0)","Bonding_Start+P000000000000","","7","","ni1&","","","","","0"," Elie (Start=1)","Bonding_Start+P000000000000,1","","7","","R","","","","","0"," Tio (Start=2)","Bonding_Start+P000000000000,2","","7","","R","","","","","0"," Randy (Start=1)","Bonding_Start+P000000000000,3","","7","","R","","","","","0"," Noel 2 Points = 1 Heart (Start=0)","Bonding_Start+P000000000000,4","","7","","R","","","","","0"," Wazy (Start=0)","Bonding_Start+P000000000000,5","","7","","R","","","","","0"," Rixia (Start=0)","Bonding_Start+P000000000000,6","","7","","R","","","","","0"," Dudley (Start=0)","Bonding_Start+P000000000000,7","","7","","R","","","","","0"," Ilja (Hidden: Start=0)","Bonding_Start+P000000000000,8","","7","","R","","","","","0"," Cecile (Hidden: Start=0)","Bonding_Start+P000000000000,9","","7","","R","","","","","0"," Fran (Hidden: Start=0)","Bonding_Start+P000000000000,10","","7","","R","","","","","0"," Sully (Hidden: Start=0)","Bonding_Start+P000000000000,11","","7","","R","","","","","0"," CHAR Level (Setable)","Char_Data_A+P000000000000,8","","2","","ni2&","","","","","0","-- CONFIGURABLE CHEATs --","Line+000000000000","","2","","nt2&","","","","","0","* Item-Cheat:1=No Item Sub on usage* 0=OFF*","Item_Cheat+000000000000","","2","","ni1&","","","","","0","* EP's-Cheat;1=sets EP to max.EP 0=OFF","EP_Cheat+000000000000","","2","","R","","","","","0","* Team-Cheat:1=50% Damage to Team, 0=OFF","Team_Cheat+000000000000","","2","","R","","","","","0","* Boss Cheat:1=25% max.Health Damage 0=OFF","Boss_Cheat+000000000000","","2","","R","","","","","0","* FOEs-Damage Cheat: 3=*8,2=*4,1=*2,0=OFF","FOE_Cheat+000000000000","","2","","R","","","","","0","* MULTIPLY EXP 4=*16,3=*8,2=*4,1=*2,0=OFF","EXP_Cheat+000000000000","","2","","R","","","","","0","* QUARTZ-EXP 6=*64,5=*32,4=*16,3=*8..0=OFF","Quartz_Cheat+000000000000","","2","","R","","","","","0","* min. CP for Battle (max. 200) 0=OFF","min_CP+000000000000","","2","","ni2&","","","","","0","* max. Damage to Team-Members 0=OFF","Team_max_D+000000000000","","2","","R","","","","","0","* min. Damage to Foe-Members 0=OFF","FOE_min_D+000000000000","","2","","ni3&","","","","","0","* Boss Detection:max.Health >= Value 0=OFF","Boss_Health+000000000000","","2","","R","","","","","0","* POM!POM!Party! Value: Add Bonus-EP 0=OFF","PomPom_Cheat+000000000000","","2","","ni2&","","","","","0","* HorrorCoaster 4=*16,3=*8,2=*4,1=*2,0=OFF","RollerCoaster_Cheat+000000000000","","2","","ni1&","","","","","0","* Fishing-Cheat:1=~ Double Fish Size 0=OFF","Fishing_Cheat+000000000000","","2","","R","","","","","0","* Sully Minigame: 1=Count ALL OK!, 0=OFF","Sully_Cheat+000000000000","","2","","R","","","","","0","-- Code Injection (signature based) --","Line+000000000000","","2","","nt2&","","","","","0","# Damage_Code for CHARs & FOEs sub ecx,r8d","Damage-Code+000000000000","","2","","nc3$","","","","","0","Y","6","412BC8","// mov rbx,rdx will done with PutOriginalCode mov ebx,[rdx] // Base of Health cmp bx,8 // (0-7 Team, 8+FOEs) jae Is_Foe Team: mov ebx,[Team_Cheat] test ebx,ebx je Team_Limit // skip if no Cheatt shr r8d,1 // =50% Damage Team_Limit: mov ebx,[Team_max_D] test ebx,ebx // skip if 0 je End_D cmp r8d,ebx cmova r8d,ebx /limt Team-Damage jmp End_D Is_Foe: mov ebx,[FOE_Cheat] test ebx,ebx je Boss_Check // skip if no Cheatt cmp ebx,3 jbe Mult_Damage mov ebx,3 mov [FOE_Cheat],3 // max. *8 Mult_Damage: push rcx mov cl,bl shl r8d,cl // = 0 - 800% Damage pop rcx Boss_Check: mov ebx,[Boss_Cheat] test ebx,ebx je Foe_Limit // no Boss Cheat mov ebx,[Boss_Health] test ebx,ebx jz Foe_Limit // Boss-DetectionHealth=0 mov ebx,[rdx+00000274] // get max. Health cmp ebx,[Boss_Health] jb Foe_Limit // not a Boss, max. Health to low shr ebx,2 // =25% max. Health Damage inc ebx // round up cmp ebx,r8d // compare Damage cmova r8d,ebx // 25%maxHealth is higher jmp End_D // Orig. or 400%Danage is higher Foe_Limit: mov ebx,[FOE_min_D] test ebx,ebx je End_D // skip if 0 cmp ebx,r8d cmova r8d,ebx // FOE_min is higher End_D: PutOriginalCode","# Get Mira+Orb mov r8d,[rax+000045D4]","Get-Mira-Orb+000000000013","","2","","nc7$","","","","","0","Y","0","448B80????????","mov r8,rax // get Ragne add r8,45D4 // add offset mov [Mira-Orb_R],r8 PutOriginalCode","# Get CP/EP cmp word ptr [r9+0000565A],64","Get-CP+000000000002","","2","","nc9$","","","","","0","Y","0","664183B9????????64","push rbx push rcx mov rcx,r9 // get base range add rcx,53D8 // add offset to ID mov bx,[rcx] // get actual CHAR cmp bx,8 jae CP_End // is FOE add rcx,282 //for Actual CP mov ebx,[min_CP] cmp ebx,00C8 // 200Dez jbe CP_Do mov ebx,00C8 // CP>200: Game will crash mov [min_CP],ebx CP_Do: mov bx,[rcx] // get actual CP cmp [min_CP],bx // compare to minCP cmova bx,[min_CP] // store higher Value mov [rcx],bx // save Value mov ebx,[EP_Cheat] test ebx,ebx je CP_End sub rcx,04 mov bx,[rcx] // get max. EP inc rcx inc rcx mov [rcx],bx // store to actual EP CP_End: pop rcx pop rbx PutOriginalCode","# Get Item-Sub mov [rdx+00771D6A],ax","Get-Item-Sub+000000000000","","2","","nc7$","","","","","0","Y","0","668982????????","push rbx mov ebx,[Item_Cheat] test ebx,ebx pop rbx jne Item_Store_Skip PutOriginalCode Item_Store_Skip:","# Get Char Data (STATUS-Menue) add r14,02","Get-Char-Data+000000000003","","2","","nc4$","","","","","0","Y","8","4983C602","PutOriginalCode jl skip_Char mov [Char_Data_A],r13 skip_Char:","# Get INV. movzx eax,word ptr [rdi+r11+02]","Get-INV-Range+000000000000","","2","","nc6$","","","","","0","Y","0","420FB7441F02","mov rax,rdi inc rax inc rax // Ammount = ITEM-ID +2 add rax,r11 // add offset mov [Row_Last_ITEM],rax PutOriginalCode","# Get ITEM movzx eax,word ptr [rdx+00771D6A] ","Get_Used_ITEM+000000000004","","2","","nc7$","","","","","0","Y","0","0FB782????????","align 4 call Item_self PutOriginalCode Item_self: pop rax // get actual Address add rax,3 // get Offset-Addrsss form OriginalCode movsxd eax,[rax] // get Offset add rax,rdx // add to Range mov [Act_ITEM],rax // save Actual used Item PutOriginalCode","# Get New EXP + Cheat mov [rbx+7E],ax","EXP_ADD+000000000000","","2","","nc4$","","","","","0","Y","13","6689437E","push rcx mov ecx,[EXP_Cheat] test ecx,ecx jz EXP_End cmp ecx,4 jbe EXP_Mult mov ecx,4 mov [EXP_Cheat],ecx // max. 4 = EXP*16 EXP_Mult: shl eax,cl cmp eax,270F //9999 jbe EXP_End mov eax,270F //9999 EXP_End: pop rcx PutOriginalCode","# Get Quartz EARNINGS add edx,r10d","Quarz-Sepith-earning+000000000009","","2","","nc3$","","","","","0","Y","5","4103D2","push rcx lea rcx,[rcx+r11*4] / Base of Quartt-Range mov [Last_Quartz],rcx mov ecx,[Quartz_Cheat] test ecx,ecx jz End_Quartz and ecx,7F cmp ecx,6 jbe Do_Quartz mov ecx,6 / do Limit mov [Quartz_Cheat],ecx Do_Quartz: shl edx,cl // 1. Parameter for Limit-Check shl r8w,cl // 2. Parameter for Add -> may set to Limit in ebx End_Quartz: pop rcx PutOriginalCode","# Get POM!POM!Party! mov ecx,[rdi+000044D8]","Get-PomPom+000000000000","","2","","nc6$","","","","","0","Y","0","8B8F????????","// ecx will set by PutOriginalCode at end mov rcx,[PomPom_LR] test ecx,ecx // first run Great_Distance: jnz PomSaveSkip mov [PomPom_LR],rdi // first save while Value=0 jmp PomPom_End // avoid Bonus for FOE PomSaveSkip: sub rcx,rdi js IsFoePom // Higher rdi Range = Foe mov [PomPom_LR],rdi // Update Lower Range ja PomPom_End // if FOE Range was saved first mov rcx,[PomPom_HR] test rcx,rcx jz PomPom_End // FOE-Range needed <> 0 mov ecx,[PomPom_Cheat] // same Address is CHAR cmp ecx,01F4 // .. 500 CP-Bonus jbe DoPomPom mov ecx,0FA //250 from 500 mov [PomPom_Cheat],ecx DoPomPom: add eax,ecx jmp PomPom_End IsFoePom: mov rcx,rdi add rcx,200000 // test distance js Great_Distance // restart training mov [PomPom_HR],rdi // Update Higer Range //xor eax,eax // Penatly for FOE PomPom_End: xor rcx,rcx // clear upper 32 Bit for safe PutOriginalCode //OriginalCode= mov ecx,[rdi+0000????]","# Get Fish-Size and Cheat movzx ebp,bx","Get-Fish-Size+000000000000","","2","","nc3$","","","","","0","Y","10","0FB7EB","// ebp will set with PutOriginalCode // and also eax = Fish-Size mov ebp,[Fishing_Cheat] test ebp,ebp jnz Fish_Cheat PutOriginalCode jmp Fish_End Fish_Cheat: PutOriginalCode shl eax,1 // multiply Size by 2 Fish_End: ","# Open Combat Book add esi,0000015A","Get-Combat-Book+000000000000","","2","","nc6$","","","","","0","Y","0","81C6????????","mov [Combat_Book],r15 PutOriginalCode","# Get Horror-Coster mov [rdi+000000A8],ax","Horror-Coaster+000000000000","","2","","nc7$","","","","","0","Y","0","668987????????","mov ecx,[RollerCoaster_Cheat] and ecx,000F cmp ecx,4 jbe Do_Roller mov ecx,04 // max. *16 mov [RollerCoaster_Cheat],ecx Do_Roller: shl eax,cl PutOriginalCode","# ElieBond movzx ebx,byte ptr [rdi+00776E85]","Elie-RECORD-Bond+000000000000","","2","","R","","","","","0","Y","0","0FB69F????????","call Elie_Self PutOriginalCode Elie_Self: pop rbx // get OriginalCode add rbx,3 // skip 3 byte Code movsxd ebx,dword ptr [rbx] // get Real-Offset dec ebx // -1 for KeA and other add rbx,rdi // add Base-Range mov [Bonding_Start],rbx PutOriginalCode","- Reserve using Module-Addressing -","Line+000000000000","","6","","nt2&","","","","","0","# Damage_Code for CHARs & FOEs sub ecx,r8d","ao.exe+00000017F4E1","","6","","nc5","","","","","0","N","6","412BC8","// mov rbx,rdx will done with PutOriginalCode mov ebx,[rdx] // Base of Health cmp bx,8 // (0-7 Team, 8+FOEs) jae Is_Foe Team: mov ebx,[Team_Cheat] test ebx,ebx je Team_Limit // skip if no Cheatt shr r8d,1 // =50% Damage Team_Limit: mov ebx,[Team_max_D] test ebx,ebx // skip if 0 je End_D cmp r8d,ebx cmova r8d,ebx /limt Team-Damage jmp End_D Is_Foe: mov ebx,[FOE_Cheat] test ebx,ebx je Boss_Check // skip if no Cheatt cmp ebx,3 jbe Mult_Damage mov ebx,3 mov [FOE_Cheat],3 // max. *8 Mult_Damage: push rcx mov cl,bl shl r8d,cl // = 0 - 800% Damage pop rcx Boss_Check: mov ebx,[Boss_Cheat] test ebx,ebx je Foe_Limit // no Boss Cheat mov ebx,[Boss_Health] test ebx,ebx jz Foe_Limit // Boss-DetectionHealth=0 mov ebx,[rdx+00000274] // get max. Health cmp ebx,[Boss_Health] jb Foe_Limit // not a Boss, max. Health to low shr ebx,2 // =25% max. Health Damage inc ebx // round up cmp ebx,r8d // compare Damage cmova r8d,ebx // 25%maxHealth is higher jmp End_D // Orig. or 400%Danage is higher Foe_Limit: mov ebx,[FOE_min_D] test ebx,ebx je End_D // skip if 0 cmp ebx,r8d cmova r8d,ebx // FOE_min is higher End_D: PutOriginalCode ","# Get Mira+Orb mov r8d,[rax+000045D4]","ao.exe+0000002B23CC","","6","","R","","","","","0","N","0","448B80????????","mov r8,rax // get Ragne add r8,45D4 // add offset mov [Mira-Orb_R],r8 PutOriginalCode","# Get CP/EP cmp word ptr [r9+0000565A],64","ao.exe+000000185BBD","","6","","R","","","","","0","N","0","664183B9????????64","push rbx push rcx mov rcx,r9 // get base range add rcx,53D8 // add offset to ID mov bx,[rcx] // get actual CHAR cmp bx,8 jae CP_End // is FOE add rcx,282 //for Actual CP mov ebx,[min_CP] cmp ebx,00C8 // 200Dez jbe CP_Do mov ebx,00C8 // CP>200: Game will crash mov [min_CP],ebx CP_Do: mov bx,[rcx] // get actual CP cmp [min_CP],bx // compare to minCP cmova bx,[min_CP] // store higher Value mov [rcx],bx // save Value mov ebx,[EP_Cheat] test ebx,ebx je CP_End sub rcx,04 mov bx,[rcx] // get max. EP inc rcx inc rcx mov [rcx],bx // store to actual EP CP_End: pop rcx pop rbx PutOriginalCode ","# Get Item-Sub mov [rdx+00771D6A],ax","ao.exe+00000029E3D1","","6","","R","","","","","0","N","0","668982????????","push rbx mov ebx,[Item_Cheat] test ebx,ebx pop rbx jne Item_Store_Skip PutOriginalCode Item_Store_Skip:","# Get Char Data (STATUS-Menue) add r14,02","ao.exe+0000002110A2","","6","","R","","","","","0","N","8","4983C602","PutOriginalCode jl skip_Char mov [Char_Data_A],r13 skip_Char:","# Get INV. movzx eax,word ptr [rdi+r11+02]","ao.exe+00000029E3C1","","6","","R","","","","","0","N","0","420FB7441F02","mov rax,rdi inc rax inc rax // Ammount = +1 add rax,r11 mov [Row_Last_ITEM],rax PutOriginalCode","# Get ITEM movzx eax,word ptr [rdx+00771D6A] ","ao.exe+00000029E3C1","","6","","R","","","","","0","N","0","0FB782????????","align 4 call Item_self PutOriginalCode Item_self: pop rax // get actual Address add rax,3 // get Offset-Addrsss form OriginalCode movsxd eax,[rax] // get Offset add rax,rdx // add to Range mov [Act_ITEM],rax // save Actual used Item PutOriginalCode","# Get New EXP + Cheat mov [rbx+7E],ax","ao.exe+0000001793EC","","6","","R","","","","","0","N","13","6689437E","push rcx mov ecx,[EXP_Cheat] test ecx,ecx jz EXP_End cmp ecx,4 jbe EXP_Mult mov ecx,4 mov [EXP_Cheat],ecx // max. 4 = EXP*16 EXP_Mult: shl eax,cl cmp eax,270F //9999 jbe EXP_End mov eax,270F //9999 EXP_End: pop rcx PutOriginalCode","# Get Quartz EARNINGS add edx,r10d","ao.exe+0000002D7D1F","","6","","R","","","","","0","Y","5","4103D2","push rcx lea rcx,[rcx+r11*4] / Base of Quartt-Range mov [Last_Quartz],rcx mov ecx,[Quartz_Cheat] test ecx,ecx jz End_Quartz and ecx,7F cmp ecx,6 jbe Do_Quartz mov ecx,6 / do Limit mov [Quartz_Cheat],ecx Do_Quartz: shl edx,cl // 1. Parameter for Limit-Check shl r8w,cl // 2. Parameter for Add -> may set to Limit in ebx End_Quartz: pop rcx PutOriginalCode","# Get POM!POM!Party! mov ecx,[rdi+000044D8]","ao.exe+000000337432","","6","","R","","","","","0","N","0","8B8F????????","// ecx will set by PutOriginalCode at end mov rcx,[PomPom_LR] test ecx,ecx // first run Great_Distance: jnz PomSaveSkip mov [PomPom_LR],rdi // first save while Value=0 jmp PomPom_End // avoid Bonus for FOE PomSaveSkip: sub rcx,rdi js IsFoePom // Higher rdi Range = Foe mov [PomPom_LR],rdi // Update Lower Range ja PomPom_End // if FOE Range was saved first mov rcx,[PomPom_HR] test rcx,rcx jz PomPom_End // FOE-Range needed <> 0 mov ecx,[PomPom_Cheat] // same Address is CHAR cmp ecx,01F4 // .. 500 CP-Bonus jbe DoPomPom mov ecx,0FA //250 from 500 mov [PomPom_Cheat],ecx DoPomPom: add eax,ecx jmp PomPom_End IsFoePom: mov rcx,rdi add rcx,200000 // test distance js Great_Distance // testart training mov [PomPom_HR],rdi // Update Higer Range //xor eax,eax // Penatly for FOE PomPom_End: xor rcx,rcx // clear upper 32 Bit for safe PutOriginalCode //OriginalCode= mov ecx,[rdi+0000????]","# Get Fish-Size and Cheat movzx ebp,bx","ao.exe+00000032E34D","","6","","R","","","","","0","N","10","0FB7EB","// ebp will set with PutOriginalCode // and also eax = Fish-Size mov ebp,[Fishing_Cheat] test ebp,ebp jnz Fish_Cheat PutOriginalCode jmp Fish_End Fish_Cheat: PutOriginalCode shl eax,1 // multiply Size by 2 Fish_End: ","# Open Combat Book add esi,0000015A","ao.exe+0000002BB3FE","","6","","R","","","","","0","N","0","81C6????????","mov [Combat_Book],r15 PutOriginalCode","# Get Horror-Coster mov [rdi+000000A8],ax","ao.exe+000000353121","","6","","R","","","","","0","N","0","668987A8000000","mov ecx,[RollerCoaster_Cheat] and ecx,000F cmp ecx,4 jbe Do_Roller mov ecx,04 // max. *16 mov [RollerCoaster_Cheat],ecx Do_Roller: shl eax,cl PutOriginalCode","# ElieBond movzx ebx,byte ptr [rdi+00776E85]","ao.exe+0000001F9CDC","","6","","R","","","","","0","N","0","0FB69F????????","call Elie_Self PutOriginalCode Elie_Self: pop rbx // get OriginalCode add rbx,3 // skip 3 byte Code movsxd ebx,dword ptr [rbx] // get Real-Offset dec ebx // -1 for KeA and other add rbx,rdi // add Base-Range mov [Bonding_Start],rbx PutOriginalCode","# Sully Tance Minigame mov rcx,[rbx]","ao.exe+00000036ACF1","","6","","R","","","","","0","N","6","488B0B","push rbx mov rcx,[rbx] //from OriginalCode mov ebx,[Sully_Cheat] test ebx,ebx jz Sully_Range //cmp eax,0 //jz Sully_End // Counter clear cmp rdi,5058 // bad count jne Sully_Range xor rbx,rbx mov [rdi+rcx],ebx // clear bad count mov rdi, 5054 // good count add eax,[rdi+rcx] // add good count to bad Sully_Range: cmp rdi,5054 // good count jne Sully_End lea rbx,[rdi+rcx] mov [Sully_Tance_R],rbx mov ebx,[Sully_Cheat] test ebx,ebx jz Sully_End // no clear xor rbx,rbx mov [rdi+rcx+4],ebx // clear bad count Sully_End: pop rbx PutOriginalCode","R","Sully_Minigame+000000000000","","2","","nc3$","","","","","0","Y","6","488B0B","push rbx mov rcx,[rbx] //from OriginalCode mov ebx,[Sully_Cheat] test ebx,ebx jz Sully_Range //cmp eax,0 //jz Sully_End // Counter clear cmp rdi,5058 // bad count jne Sully_Range xor rbx,rbx mov [rdi+rcx],ebx // clear bad count mov rdi, 5054 // good count add eax,[rdi+rcx] // add good count to bad Sully_Range: cmp rdi,5054 // good count jne Sully_End lea rbx,[rdi+rcx] mov [Sully_Tance_R],rbx mov ebx,[Sully_Cheat] test ebx,ebx jz Sully_End // no clear xor rbx,rbx mov [rdi+rcx+4],ebx // clear bad count Sully_End: pop rbx PutOriginalCode","-- END --","Line+000000000000","","2","","nt2&","","","","","0"