COPS 2170: The Power of Law Ver. 1.20.004 by Chris The Champion e-mail: [email protected] I-20121011 This file contains general way of altering saves game with hexadecimal editor. This game use dynamic-save file. And that means, we only wasting time if we tracking this game by it's address (e.g x8fb0). I don't figure out all possible hack method yet. I only know that you can replace some stuff with the other as long as it's name have the same length, and it's the same type. To hack traits, weapon, armor and ammo it's easier to do it when the stuff is on the ground and in the peaceful police department. Of course it is possible to hack anywhere on the game. For your own convenience, named your save files systematically (e.g Save00, Save01, etc.). For hacking the game I used frhed - free hex editor for 32-bit Windows. Ver 1.0.149 (c) Raihan Kibria 1999. Content: A) List of stuff B) Cheating ground stuffs C) Change the traits D) Cheating inventory stuffs ============================================ A) List of stuff Here is the list of stuffs, written in save file version. You should already noticed that some stuff have the same name length. The same length is the key for replacing stuffs. 1234567890123456789012345 KeyThing AmmoThing ArmorThing WeaponThing ShieldThing CameraThing ImplantThing MedikitThing GrenadeThing ScannerThing ============ ImplantThing ============ database ir_filter antishocker auto_medikit - super rare item thermoregulator electric_implant - rare item vision_amplifier brain_accelarator - super rare item strength_amplifier - rare item reaction_accelerator metabolism_accelerator - super rare item ========== ArmorThing ========== simoto tauret kerk_heavy [Kerk Suit 14 "Assaulter"] nohomoto_np14 nohomoto_np22 mark_soft_sute [Mark XXV "Soft"] mark_command_m4 =========== WeaponThing =========== k4 rk2 rk8 a14 [Atomic 14 "Rain"] maca rolf [T&H "Rolf"] - rare item bull [R.G "Bull"] - rare item sa12 kas2 ["Enforcer"] ronin macs4 rhino amc32 [AMS 32 LPM] amc12 ["Viper"] - rare item wolf1 sa124 storm [Ramshell "Storm"] mag36 - rare item minimi hammer mac142 ["Fire Vortex"] mack22 ["Geyser"] pumpgun minimi_a minimi_b simoto_pr [Simoto I.V. mark A] simoto_rh [Simoto RH 14] atomic200 plasmatic [Ramshell "Plasmatic"] simoto_usr [Simoto S.S.V.] - rare item ========= AmmoThing ========= fiery_shot heavy_shot big_battery standart_shot shock_grenade fiery_grenade standart_shell advanced_shell standart_grenade fiery_army_shell shock_army_shell rapid_army_shell shock_police_shell fiery_police_shell heavy_police_shell sniper_rifle_shell painful_army_shell fiery_cannon_shell standart_army_shell advanced_army_shell standart_ammunition standart_rifle_shell advanced_rifle_shell explosive_army_shell termonuclear_battery vacuum_small_missile plasma_small_missile electric_police_shell standart_police_shell advanced_police_shell explosive_rifle_shell standart_cannon_shell advanced_cannon_shell modified_cannon_shell explosive_cannon_shell standart_small_missile amplified_small_missile armorpierce_cannon_shell armorpiercing_rifle_shell ============ GrenadeThing ============ turtle plasma_bomb fiery_grenade handy_grenade electric_grenade hand_plasma_grenade police_shock_grenade ============ Shield Thing ============ standart_shield advanced_shield ============ MedikitThing ============ medic_toolkit standart_medikit advanced_medikit =========== CameraThing =========== handycam ============ ScannerThing ============ termoscanner neiroscanner ======== KeyThing ======== order_1 [Lower City Operations] order_2 [Arrest Silvio] order_3 [West gate of Gigamarket] order_4 [Crossroad 44] order_5 [Escort Mortimer] order_6 [License to Kill Delichi] roy_order [Mutants Extermination] under_map [Syndicate's Underground Factory Map] mutant_key [Pass for Mutant's Colony] B) Cheating ground stuffs To access ground stuff, search for GraphThing. The format is: <type of stuff><bits><name><bits>GraphThing<bits> Example: 1) 00b330 00 57 65 61 70 6f 6e 54 68 69 6e 67 00 00 00 00 .WeaponThing.... 00b340 00 00 00 00 00 01 00 00 00 6d 61 63 61 00 01 00 ........maca.. 00b350 00 00 00 00 00 47 72 61 70 68 54 68 69 6e 67 00 .....GraphThing. 00b360 01 00 00 00 01 00 00 00 02 00 00 00 57 65 61 70 .........Weap From the example above you can see a weapon maca: WeaponThing............maca.......GraphThing.......... We want to replace maca with kas2, so: WeaponThing............kas2.......GraphThing.......... And voila, it will working perfectly. 2) 00b450 67 00 03 00 00 00 03 00 00 00 04 00 00 00 41 6d g..........Am 00b460 6d 6f 54 68 69 6e 67 00 00 00 00 00 00 00 00 00 moThing......... 00b470 04 00 00 00 61 64 76 61 6e 63 65 64 5f 70 6f 6c ...advanced_pol 00b480 69 63 65 5f 73 68 65 6c 6c 00 02 00 00 00 00 00 ice_shell...... 00b490 40 00 00 00 47 72 61 70 68 54 68 69 6e 67 00 04 @...GraphThing. 00b4a0 00 00 00 04 00 00 00 05 00 00 00 57 65 61 70 6f .........Weapo Here is the example for exchanging ammo: AmmoThing............advanced_police_shell.[email protected] Switch it with the oter ammo: AmmoThing............modified_cannon_shell.[email protected] There are also possible to change the remaining number of ammo. See xb490, 4th bit before word "GraphThing", there is number 40-hex (64-dec). You can change it as absurd as FF-hex (255-dec). Soon, you will meet with hardcoded limitation though. 00b490 40 00 00 00 47 72 61 70 68 54 68 69 6e 67 00 04 @ . . . G r a p h T h i n g . Change remaining ammo: 00b490 ff 00 00 00 47 72 61 70 68 54 68 69 6e 67 00 04 � . . . G r a p h T h i n g . 3) 00b4a0 00 00 00 04 00 00 00 05 00 00 00 57 65 61 70 6f .........Weapo 00b4b0 6e 54 68 69 6e 67 00 13 00 00 00 06 00 00 00 05 nThing....... 00b4c0 00 00 00 6b 61 73 32 00 01 00 00 00 00 00 01 41 ...kas2......A 00b4d0 6d 6d 6f 54 68 69 6e 67 00 00 00 00 00 06 00 00 mmoThing....... 00b4e0 00 00 00 00 00 73 74 61 6e 64 61 72 74 5f 67 72 .....standart_gr 00b4f0 65 6e 61 64 65 00 02 00 00 00 00 00 01 00 00 00 enade......... 00b500 47 72 61 70 68 54 68 69 6e 67 00 05 00 00 00 05 GraphThing.... 00b510 00 00 00 ff ff ff ff 91 08 00 00 00 00 00 00 01 ...�����...... This example show us that possible to create weapon with unmatched ammo (Enforcer with grenade ammo), and you still can cheat the remaining ammo (fourth bit before word GraphThing). 4) 00b4e0 6e 67 00 03 00 00 00 03 00 00 00 04 00 00 00 53 ng..........S 00b4f0 63 61 6e 6e 65 72 54 68 69 6e 67 00 0a 00 00 00 cannerThing. ... 00b500 06 00 00 00 04 00 00 00 74 65 72 6d 6f 73 63 61 ......termosca 00b510 6e 6e 65 72 00 00 04 00 00 00 00 47 72 61 70 68 nner......Graph 00b520 54 68 69 6e 67 00 04 00 00 00 04 00 00 00 ff ff Thing.......�� I do not know the detail yet, but this very useful trick really work! ScannerThing. .........termoscanner......GraphThing Change ScannerThing into ImplantThing and termoscanner into auto_medikit. ImplantThing. .........auto_medikit......GraphThing One more important step, change second bit after the name (i.e auto_medikit) into 08 and 00 to the all following bits. The number 08 means that stuff is implant. 00 00 04 00 00 00 00 00 08 00 00 00 00 00 Now, you can equip the +9 regeneration implant. Note: It's possible to hack equipped implant, but implant effect doesn't change, unless you change it manually (see point C below). C) Change the traits You also can hack any playable character traits. Make sure to recruit the character you want to hack first. For a quick search, you can do this trick: - Export as hexdump the whole save file - Paste it on the text editor, e.g notepad - Search using notepad (not frhed) Here are the characters name: some_label.player (Katy), Maxim, Charly, Fich, Sintu, Arthur, Bik14. Sometime using word "some_label.player" is too long for searching and end up with fail result. So use "some_l" or "l.player" instead, it should work. Now, we begin hacking the traits. Search for a character name, then search (scroll) the area between HumanContext and HumanMarker. Example: This is an example of Katy traits: 008920 48 75 6d 61 6e 43 6f 6e 74 65 78 74 00 04 00 00 HumanContext... 008930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 008940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 008950 00 00 00 00 00 db 0f c9 3f 00 00 a0 41 43 00 00 .....��?..�AC.. 008960 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 ............... 008970 00 34 00 00 00 64 00 00 00 47 00 00 00 2d 00 00 .4...d...G...-.. 008980 00 2c 00 00 00 36 00 00 00 0a 00 00 00 00 00 00 .,...6... ...... 008990 00 00 00 00 00 00 00 00 00 1a 00 00 00 10 00 00 .............. 0089a0 00 34 00 00 00 64 00 00 00 47 00 00 00 2d 00 00 .4...d...G...-.. 0089b0 00 2c 00 00 00 0a 00 00 00 36 00 00 00 00 00 a0 .,... ...6.....� 0089c0 41 1a 00 00 00 1a 00 00 00 01 48 75 6d 61 6e 4d A......HumanM 0089d0 61 72 6b 65 72 00 00 00 00 00 00 00 00 00 01 00 arker.......... Then I put marks (legend) for your convenience, remember not to rely on hex addressing. 008920 48 75 6d 61 6e 43 6f 6e 74 65 78 74 00 RN 00 00 HumanContext... 008930 00 it 00 00 00 rg 00 00 00 ac 00 00 00 st 00 00 ................ 008940 00 rc 00 00 00 00 00 00 SH 00 00 00 FL 00 00 00 ................ 008950 EL 00 00 sg sg db 0f c9 3f 00 00 SG SG 43 00 00 .....��?..�AC.. 008960 00 00 00 00 00 00 00 00 00 00 00 00 00 HL 00 00 ............... 008970 00 IT 00 00 00 MR 00 00 00 AC 00 00 00 ST 00 00 .4...d...G...-.. 008980 00 RC 00 00 00 AG 00 00 00 MC 00 00 00 00 00 00 .,...6... ...... 008990 00 00 00 00 00 00 00 00 00 ID 00 00 00 HL 00 00 .............. 0089a0 00 IT 00 00 00 MR 00 00 00 AC 00 00 00 ST 00 00 .4...d...G...-.. 0089b0 00 RC 00 00 00 MC 00 00 00 AG 00 00 00 00 00 SG .,... ...6.....� 0089c0 SG ID 00 00 00 ID 00 00 00 01 48 75 6d 61 6e 4d A......HumanM 0089d0 61 72 6b 65 72 00 00 00 00 00 00 00 00 00 01 00 arker.......... LEGEND Traits (bit order after HumanContext): ST STRENGTH #82/#130 AG AGILITY #90/#142 RC REACTION #86/#134 AC ACCURACY #78/#126 IT INTELLIGENT #70/#118 MC MECHANIC #94/#138 SG SIGHT #48-49/#148-149 HL HEALTH #66/#114 Additional (traits from implants): st strength #18 rc reaction #22 ac accuracy #14 it intelligent #6 sg sight #40-41 rg regeneration #10 RESISTANCE: SH SHOCK #26 FL FLAME #30 EL ELECTRIC #34 MR MORALE #74/#122 RN RANK #2 ID IDENTITY #110, #150, #154 ============ List of Rank ============ 00 Civilian 01 Not known 02 Private 03 Sergeant-junior 04 Sergeant 05 Sergeant-major 06 Lieutenant-junior 07 Lieutenant 08 Lieutenant-major 09 Captain 0A Major ================ List of Identity ================ This is a special trait that always associated with specific character. I do not know how to manipulate it yet. Katy 1A Maxim 1B Charly 1C Bik-14 08 Fich 48 Sintu 04 Arthur 0B AG, SH, FL, EL max. 100 (64-hex) ST, AC, IT, MC, HL max. 255 (FF-hex) SG more than 255 (FF-hex) RN max. Major (0A-hex) Note: If you hack your rank to maximum (Major), you can still receive promotion from Protocol officer but it does not affect your rank though. For me, sight is a uniqe trait among others. How to calculate is the reason, I don not figure it out completely yet. But here some example for you: Sight Hex code 15 70 41 20 a0 41 22 b0 41 27 d8 41 30 f0 41 45 34 42 53 54 42 - 57 42 54 58 42 150 16 43 165 25 43 180 34 43 You can use the codes above either for Sight (SG SG) or additional sight (sg sg). Next, I write about my own calculation, you don't have to pay attention to this matter, so you can skip this part. To gain Sight value 15-30, times the target value with 8. Then convert the result to hexadecimal (for quickest way, use Windows Calculator). Example: target value (Sight) = 27 27 x 8 = 176 176 (dec) = B0 (hex) Do not forget to combine the result with 41 To gain Sight value 43-54, here is the formula: x = target value (Sight) i = x - 43 hex code = x + 1 + (i x 3) Example: x = 50 i = 50 - 43 = 7 hex code = 50 + 1 + (7 x 3) = 51 + 21 = 72 (dec) = 48 (hex) Do not forget to combine the result with 42 To gain Sight value 150-180, subtract the target value with 128. Then convert the result to hexadecimal. Do not forget to combine it with 43. Example: target value (Sight) = 170 170 - 128 = 42 42 (dec) = 2A (hex) D) Cheating inventory stuffs Not so different with point B), you also can hack everything in the inventory whether equipped or not. But first you must search a character name like in the point C). Then search (scroll) the area below HumanMoveStrategy. A decent difference is bit position for remaining number of ammo. That bit is twelfth bit after name of stuff. Example: 008fb0 00 28 00 00 00 05 00 00 00 41 6d 6d 6f 54 68 69 .(......AmmoThi 008fc0 6e 67 00 02 00 00 00 00 00 00 00 05 00 00 00 61 ng...........a 008fd0 64 76 61 6e 63 65 64 5f 61 72 6d 79 5f 73 68 65 dvanced_army_she 008fe0 6c 6c 00 02 00 00 00 01 1b 00 00 00 00 50 00 00 ll........P.. 008ff0 00 08 00 00 00 41 6d 6d 6f 54 68 69 6e 67 00 00 ....AmmoThing.. Here is the text code: AmmoThing...........advanced_army_shell........P...... The 12th bit in hex code is 50 (80-dec). Manipulate this bit, and the game will work just fine. If you don't change any trait, you can equip unequipable weapon with this trick. Still, harcoded limitation hinder your fun. If you equip an armor, your "special" weapon will unequiped automatically. Ok, I think that's all for hack note. Have your fun.