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.