Breath of Fire IV(c) Capcom, 2000
Save State Hacking Guide
Copyright 2010 Carlos Eugenio
******************************************************************************
This guide is licensed under the Creative Commons Attribution-Sharealike,
avaiable here http://creativecommons.org/licenses/by-sa/2.0/legalcode.
Simplifying the legalese, that means that you are free to copy, print,
distribute, and otherwise use this guide any way you want as long as you don't
violate the license i.e. give credit where it is due! :)
Derivative works of this guide are allowed provided that you credit me for
the original work *AND* release it under this same license or other free,
copyleft license compatible with Creative Commons Attribution-Sharealike. If
you indeed produce a derivate, kindly inform me after it's done so I can enjoy
it too and maybe even improve this guide (you will be credited for it too of
course!)
******************************************************************************
Version History
------------------------------------
2010 April 9: v. 0.9
-First Version, still a lot to do. Probaly a lot of wrong offsets and
values too... and typos...It'll get better soon I promise :D
------------------------------------
This is a save state hacking guide for Breath of Fire IV, a classic PSX
RPG by Capcom. Why I bothered writing this stuff? Well... I've done it JUST to
BEAT mo#$*@>@er Rider without having to grind to level 50+. That's reason
enough to you?! :D
So I did fiddle a little with a hexeditor, a diff tool, some save states and
now I want to share it with you, my dear lazy classic RPG gamer. Enjoy :)
PS: This guide won't teach you hex editing. There are plenty of other guides
who'll teach you better than me.
PS2: I used ePSXe. State hacking with ePSXe is a bit tricky but I'll explain
it in detail on section 1.0.
PS3: Use this guide with moderation! You can ruin your fun if you go overboard
and max out everything. In fact, I recommend that you beat the game first
without cheating, and in subsequent replays hexedit away.
And, before anyone bug me with annoying accusations, I played on a emulator
yes, but I DO OWN a copy of this game! Well I mean I had one... CD's so badly
scratched it won't ever work again that's for sure...
Well, on to the guide...
Index
1.0 Save state?
1.1 Char stats offsets
1.1.1 Hidden Stats?!
1.1.2 Ryu
1.1.3 Nina
1.1.4 Cray
1.1.5 Scias
1.1.6 Ursula
1.1.7 Ershin
1.1.8 Fou-lu
1.2 Money
1.3 Items
1.4 Lists
1.5 Thanks & contact info
1.0 Save state?
Save state is a file with a snapshot of the game progress on a given
instant. More specifically, its the CPU & Memory data on a given instant. This
guide was made and tested on ePSXe for Linux (stated above, before the index).
I guess that the files structure are the same on Linux and Windows but I cannot
be certain, since I can't and won't install Windows EVER AGAIN :P
EDIT: in fact the save states works in both versions. Just tested the Windows
version using wine. (and, surprise! running the Windows version via wine is way
better than playing the native Linux version. Go figure...)
As I said earlier it takes some effort to hack the states. First thing,
ePSXe save states are compressed using gzip, so before you edit anything at all
you must decompress it (used gunzip but I guess 7-Zip, WinRAR, etc should do the
trick on Windows). Then you load the file on your hexeditor, edit whatever you
want, then recompress the file. Remember to remove any file extension that gets
added to the recompressed file, if any. Now you can load the save state on the
emulator. A word of warning, it seems that ePSXe somehow keeps the save state
in memory, so to edit it you must close it before. Phew! I said it was tricky :)
EDIT: I recently used ePSXe 1.7 -- wine emulation :P -- and there's no need to
gzip the file again after you're done editing it... just load it (no need to
restart the emulator too!!)
So, to be clearer, that's how I (used) to do it myself:
$ mv SCUS_942.54.001 SCUS_942.54.001.gz
$ gunzip SCUS_942.54.001.gz #decompressing the file
$ bless SCUS_942.54.001 #loading on the hexeditor
$ gzip SCUS_942.54.001 #done editing, recompressing it
$ mv SCUS_942.54.001.gz SCUS_942.54.001 #removing file extension
$ cd ..
$ ./epsxe #play away
Since now there's no need to gzip again the file neither restart the emulator
it may be already running... SO here's the improved way:
$ wine ePSXe.exe & #yeah the windows version IS better :P
$ cd sstates/
$ mv SCUS_942.54.001 SCUS_942.54.001.gz #save state name of course
$ gunzip SCUS_942.54.001.gz #decompress file
$ bless SCUS_942.54.001 #load it on hexeditor
#reload it on ePSXe and play away
BACKUP YOUR FILES before you edit them to save yourself a lot of grief
in case something goes wrong! Saving in two or more slots and editing one does
the trick neatly.
1.1 Chars stats offsets
YEAHHH you can rename everyone if you wish to :)
As a note, multi-offset stats (HP, MP) are inverted i.e most significant digit
goes last. Just like the money offsets, check below.
1.1.1 Hidden Stats?!
There are some char stats are hidden from the main menu i.e. no way to
figure, in-game, their values. They follow basically the same hidden stats that
existed on BoF3 (yeah they were there too!!). All thanks to Zhi Cheng Liu for
this. Check his BoF3 Secrets Guide for further explanations along with some
nice tables and in-depth info on them.
The hidden (BoF3) stats are: Willpower, Resistances (Physical, Fire,
Ice, Electric, Earth, Wind, Holy, Mind, Status, Death), surprise rate, reprisal
rate, critical rate, dodge rate, and attack accuracy. Willpower is the chance
of auto-revival during battle when you are KOed the first time, the resistances
are how well a given char copes with an element attack on him/her, surprise
rate are your chances at first strike at battle, reprisal rate is counter
attack frequency, critical rate is how ofter you crit when you attack, dodge
rate is how often you dodge an incoming attack, and attack accuracy is, well,
self-explanatory :P Willpower and surprise/reprisal/critical/dodge/accuracy
rates range from 0x00 to 0x64 (i.e 0 to 100 decimal), the resistances range
from 0 (most vulnerable) to 7 (damage is negligible or absorved). Like other
stats, there are both natural values and equipped values for all of those.
All that said, I still haven't tested all this very well yet... there
are some values that are easy to guess (i.e. Ryu is strong to fire and weak to
ice and Fou-lu is just the reverse...) Also, the list may not be exactly the
same as BoF3... it will take some time to pinpoint exactly which offset is
which, coming in a future update :) The list below are the natural values of
all chars (values in hex):
Ryu 02 02 02 02 04 02 01 02 05 02 02 02 19 0A 06 06 32 64
Nina 03 02 02 02 02 03 02 02 05 02 02 02 00 00 00 14 32 64
Cray 02 02 02 02 02 02 02 03 05 02 02 02 00 0F 04 04 37 64
Scias 02 02 02 02 02 02 03 02 05 02 02 02 00 14 08 0F 46 64
Ursula 02 02 02 02 03 02 02 02 05 02 02 02 00 00 02 0A 37 50
Ershin 02 03 02 02 02 02 02 02 05 05 05 19 00 04 00 1E 5A 39
Fou-lu 02 02 02 02 01 02 04 02 05 07 07 07 19 14 0F 08 46 64
So my educated guess, with the very little testing I've done so far, is that
the order is: *dunno*, Physical?, *dunno*, *dunno*, Fire, Wind, Ice, Earth,
Holy,Mind,Status,Death, Suprise, Reprisal, Willpower, Dodge, *dunno*, *dunno*.
Lots of *dunno*... It will get fixed soon don't worry :)
1.1.1 Ryu
Name 0x11AB06-0x11AB0F
Current HP 0x11AB1A-0x11AB1B
Current MP 0x11AB1E-0x11AB1F
Max HP 0x11AB62-0x11AB63
Max MP 0x11AB66-0x11AB67
CP (equipped/natural) 0x11AB46/0x11AB6A
Pwr (equipped/natural) 0x11AB48/0x11AB6C
Def (equipped/natural) 0x11AB4A/0x11AB6E
Agl (equipped/natural) 0x11AB4C/0x11AB70
Wis (equipped/natural) 0x11AB4E/0x11AB72
Hidden stats (equipped) 0x11AB50-0x11AB61
Hidden stats (natural) 0x11AB74-0x11AB85
1.1.2 Nina
Name 0x11AB9E-0x11ABA5
Current HP 0x11ABB2-0x11ABB3
Current MP 0x11ABB6-0x11ABB7
Max HP 0x11ABFA-0x11ABFB
Max MP 0x11ABFE-0x11ABFF
CP (equipped/natural) 0x11ABDE/0x11AC02
Pwr (equipped/natural) 0x11ABE0/0x11AC04
Def (equipped/natural) 0x11ABE2/0x11AC06
Agl (equipped/natural) 0x11ABE4/0x11AC08
Wis (equipped/natural) 0x11ABE6/0x11AC0A
Hidden stats (equipped) 0x11ABE8-0x11AC0C
Hidden stats (natural) 0x11AC0C-0x11AC1D
1.1.3 Cray
Name 0x11AC36-0x11AC3D
Current HP 0x11AC4A-0x11AC4B
Current MP 0x11AC4E-0x11AC4F
Max HP 0x11AC92-0x11AC93
Max MP 0x11AC96-0x11AC97
CP (equipped/natural) 0x11AC76/0x11AC9A
Pwr (equipped/natural) 0x11AC78/0x11AC9C
Def (equipped/natural) 0x11AC7A/0x11AC9E
Agl (equipped/natural) 0x11AC7C/0x11ACA0
Wis (equipped/natural) 0x11AC7E/0x11ACA2
Hidden stats (equipped) 0x11AC80-0x11AC91
Hidden stats (natural) 0x11AB74-0x11ACB5
1.1.4 Scias
Name 0x11ACCE-0x11ACD5
Current HP 0x11ACE2-0x11ACE3
Current MP 0x11ACE6-0x11ACE7
Max HP 0x11AD2A-0x11AD2B
Max MP 0x11AD2E-0x11AD2F
CP (equipped/natural) 0x11AD0E/0x11AD32
Pwr (equipped/natural) 0x11AD10/0x11AD34
Def (equipped/natural) 0x11AD12/0x11AD36
Agl (equipped/natural) 0x11AD14/0x11AD38
Wis (equipped/natural) 0x11AD16/0x11AD3A
Hidden stats (equipped) 0x11AD18-0x11AD29
Hidden stats (natural) 0x11AB74-0x11AD4D
1.1.5 Ursula
Name 0x11AD66-0x11AD6D
Current HP 0x11AD7A-0x11AD7B
Current MP 0x11AD7E-0x11AD7F
Max HP 0x11ADC2-0x11ADC3
Max MP 0x11ADC6-0x11ADC7
CP (equipped/natural) 0x11ADA6/0x11ADCA
Pwr (equipped/natural) 0x11ADA8/0x11ADCC
Def (equipped/natural) 0x11ADAA/0x11ADCE
Agl (equipped/natural) 0x11ADAC/0x11ADF0
Wis (equipped/natural) 0x11ADAE/0x11ADF2
Hidden stats (equipped) 0x11ADB0-0x11ADC1
Hidden stats (natural) 0x11AB74-0x11ADE5
1.1.6 Ershin
Name 0x11ADFE-0x11AE05
Current HP 0x11AE12-0x11AE13
Current MP 0x11AE16-0x11AE17
Max HP 0x11AE5A-0x11AE5B
Max MP 0x11AE5E-0x11AE5E
CP (equipped/natural) 0x11AE3E/0x11AE62
Pwr (equipped/natural) 0x11AE40/0x11AE64
Def (equipped/natural) 0x11AE42/0x11AE66
Agl (equipped/natural) 0x11AE44/0x11AE68
Wis (equipped/natural) 0x11AE46/0x11AE6A
Hidden stats (equipped) 0x11AE48-0x11AE59
Hidden stats (natural) 0x11AE6C-0x11AE7D
1.1.7 Fou-lu
Name 0x11AE96-0x11AE9D
Current HP 0x11AEAA-0x11AEAB
Current MP 0x11AEAE-0x11AEAF
Max HP 0x11AEF2-0x11AEF3
Max MP 0x11AEF6-0x11AEF7
CP (equipped/natural) 0x11AED6/0x11AEFA
Pwr (equipped/natural) 0x11AED8/0x11AEFC
Def (equipped/natural) 0x11AEDA/0x11AEFE
Agl (equipped/natural) 0x11AEDC/0x11AF00
Wis (equipped/natural) 0x11AEDE/0x11AF02
Hidden stats (equipped) 0x11AEE0-0x11AEF1
Hidden stats (natural) 0x11AF04-0x11AF15
1.2 Money
Money offsets are reversed i.e. most significant digit goes last...
Example: to have 50000 Zenny (0xC350) you must fill the offsets 0x50 - 0xC3
Money offsets: 0x11AF3A, 0x11AF3B, 0x11AF3C
1.3 Items
Items are composed of two offsets, the first defines which item and the
second, its quantity. For example, to add 15 Panaceas to your inventory on the
very first item slot, put 0x0E on offset 0x11AF52, then 0x0F on 0x11AF53. :)
Inventory offset start: 0x11AF52
1.4 Lists
1.4.1 Item List
00 Nothing 01 Healing Herb 02 Vitamin 03 MultiVitamin
04 SuperVitamin 05 Vitamins 06 Berries 07 Apple
08 Wisdom Seed 09 Wisdom Fruit 0A Croc Tear 0B Antidote
0C Eye Drops 0D Jabberglass 0E Panacea 0F Ammonia
10 Life Shard 11 Magic Shard 12 Power Food 13 Protein
14 Swallow Eye 15 Fish-head 16 Ambrosia 17 Weather Vane
18 Void Sphere 19 Molotov 1A Firecracker 1B Electrode
1C Dynamite 1D Water Bomb 1E Icicle 1F Napalm
20 Taser 21 Belladonna 22 Scorched Rice 23 Aurum
24 Moon Tears 25 Ginseng 26 Ivory Dice 27 Dragon Scale
28 Headband 29 Knockout Gas 2A Flash Grenade 2B Poison Powder
2C Mouth Gag 2D Jelly Fish 2E Piranha 2F Bass
30 Blue Gill 31 Sweetfish 32 Browntail 33 Black Bass
34 Angelfish 35 Trout 36 Rainbow Trout 37 Bullcat
38 Martian Squid 39 Dorado 3A Salmon 3B Barandy
3C Sturgeon 3D Man-o'-War 3E Flying Fish 3F Blowfish
40 Moorfish 41 Sea Bass 42 Flatfish 43 Sea Bream
44 Octopus 45 Bonito 46 Black Porgy 47 Angler
48 Spearfish 49 Whale 4A Acheron 4B Rice Ball
4C Mozweed 4D Straw 4E Faerie Drop 4F Stamp Card
50 Ship Parts 51 Glass Shard 52 Iron Scraps 53 Lottery Stub
54 Ribs 55 Roast 56 Flank 57 Loins
58 Fire Seed 59 Wind Seed 5A Water Seed 5B Earth Seed
5C Spirit Seed 5D Vigor Seed 5E Phoenix Seed 5F Holy Seed
60 Strength Seed 61 Hard Seed 62 Speed Seed 63 Sage Seed
64 Strike Seed 65 Reflex Seed 66 Dodge Seed 67 Sight Seed
68 Target Seed 69 Elixer 6A Elixer+ 6B Wassail
6C Wassail+ 6D Draught 6E Draught+ 6F Dark Daught
70 Bird Drop 71 Rotten Meat 72 Bent Screw 73 Old Tire
74 Dirty Filter 75 Burnt Plug 76 Rusty Pipe
77 and beyond -- rubbish, removed items, etc
1.5 Thanks & contact info
-Thanks to Capcom, for this wonderful game, I enjoy it to this day!
-Thanks to the free & open source software people!
-Thanks to the GameFAQs people!
-Thanks to Zhi Cheng Liu for his BoF3 Secrets Guide with the Hidden stats
info, it would take even more work to figure out WTF where those offsets...
-Thanks to anyone who deserves a thanks but I forgot to mention!
You can reach me on demonsword at gmail dot com. Please, if you want to mail
me, write in proper English so I can understand you. Offensive mails won't
get replied. And please, I'm a busy man, so if I don't reply to you the same
day/month/year/century don't be mad at me ok? :)
---EOF