GRANDIA II HD Remaster

GRANDIA II HD Remaster

Not enough ratings
Grandia II Save Editing Guide
By mag, ♥♥♥♥♥♥♥, neto
A guide on how to edit Grandia II save files.
   
Award
Favorite
Favorited
Unfavorite
Intro
If you already have done some hex editing before I would recommend just skipping to the offsets section as the data structure is pretty simple, otherwise follow along it shouldn't be too difficult.

All you need to edit Grandia II saves is a hex editor, in this guide I will be using HxD[mh-nexus.de]. If you want to Grandia II saves on a Dreamcast use Dream Explorer[bswirl.kitsunet.org].

Todo in the future
  • Check if Roan and King Roan are different characters
  • Add more offsets
If you want more offsets added ask nicely.
Using HxD
First we need to open a Grandia II save in HxD, Grandia 2 saves are located in the data\saves folder in the Grandia II installation folder. Note that the save numbers in the folder are one less than they appear in the game, ex GRANDIA2_000.VMS is save slot 1.

Once the file is open make sure that HxD is in 'Overwrite' mode, if it is in 'Insert' mode double click it to change. Also make sure you never use delete or backspace to delete values since it won't override the bytes and just delete them. Make sure you backup your saves.



Editing Numerical Values
First find the data range you want by pressing ctrl-g and entering the offset of the data you want to edit. In this example we are going to be editing the party's gold which is a 'Little Endian 32bit Unsigned Integer' at offset 2C0.



Entering the value into a Hex to Decimal Converter[www.scadacore.com] shows that it's value is 68.




Next we need to figure out the little endian 32bit equivalent of the new value we want, in this example the goal will be to make the party gold 100000. First we need to find the hexadecimal value of the amount we want, using an online Dec to Hex converter[www.rapidtables.com] we get 0x00 01 86 A0, converting that to little endian we get 0xA0 86 01 00. Replace the old value with the new one and save.



Editing Strings
First find the data range you want by pressing ctrl-g and entering the offset you want. Next on the right hand side enter the text you want, make sure it is within the allowed data range specified in the offset list, finally save the file.

In the example below the text that indicates the party's location was changed.

Data Offsets
Currency (Little Endian 32 bit Unsigned Integer)
Value
Range
Gold
2C0 - 2C3
Special Coins
2C4 - 2C7
Magic Coins
2C8 - 2CB

Inventory Items (8 bit Unsigned Integer)

The area of the save that contains the Inventory appears to be AB0 - DDF. I would recommend not setting any of the values above 99 / 0x63 since selling items when you have over 99 can cause the game to crash. I also recommend not setting the book and egg quantity to anything other than 0 or 1 since it is not possible to obtain more than one of each egg or book in the game.

Consumables
Item
Offset
Miracle Elixir
B2D
Hero's Elixir
B2E
Mystic Potion
B19
Indigo Potion
B4B
Golden Potion
B41
Panacea
B30

Weapons
Item
Offset
Granasaber
BE1
Holy Ghost Staff
BFF
Black Angel Bow
C1D
Brave Dirk
C3B
Soul Eater
C3F
Phoenix Ring
C59
Leo Rex Battleaxe
C77

Armor
Item
Offset
Holy Sword Armor
CA9
Hero's Cuirass
CBD
Valcyre Dress
CC7
Priestess Robe
CD1
Sun Robe
CDB

Headgear
Item
Offset
God of War Helm
CEF
Holy Crown
D03
Illusion Bandanna
D17
Sages Hat
D2B

Footwear
Item
Offset
Lion Boots
D3F
Glass Slippers
D53
Ogre Shoes
D5D

Accessories
Item
Offset
Demon Necklace
D7C
Energy Charm
D7E
Soul of Asura
D80
Dragon Scales
D88
Meteor Earrings
D8C
Jet Black Cape
D98
King's Pride
D84
Mana Crystals
D7B
Angel's Ring
D82
Mystic Veil
DAD
Heracles Belt
DC1
Shoguns Brace
DC5
Sonic Belt
DCA

Valuables
Item
Offset
Debug HP/MP/SC +
AB5
Debug Stats +
AB6
Seed of Life
AF1
Seed of Spells
AF2
Seed of Moves
AF3
Seed of Power
AF4
Seed of Defense
AF5
Seed of Swift
AF6
Seed of Running
AF7
Seed of Magic
AF8
Seed of Psyche
AF9
All-Around Seed
AFA
Omnipotent Seed
AFB
Lore of Moves
AFC
Lore of Magic
AFD
Miracle Scales
B05
Soul of a Hero
B06
Astral Miracle
B07
Ethereal Miracle
B08

Books
Item
Offset
Adventure Book
AE7
Book of Wizards
AE8
Book of Warriors
AE9
Book of Priests
AEA
Book of Gales
AEB
Book of Swords
AEC
Book of War
AED
Book of Sages
AEE
Book of Learning
AEF

Eggs
Item
Offset
Holy Egg
D71
Chaos Egg
D72
Mist Egg
D73
Gravity Egg
D74
Soul Egg
D75
Star Egg
D76
Tutor Egg
D77
Change Egg
D78
Fairy Egg
D79
Dragon Egg
D7A

Character Experience (Little Endian 32 bit Unsigned Integer)
Character
Current Exp
Remaining Exp
Ryudo
31C - 31F
320 - 323
Elena
388 - 38B
38C - 38F
Millenia
3F4 - 3F7
3F8 - 3FB
Roan
460 - 463
464 - 467
Mareg
538 - 53B
53C - 53F
Tio
3CC - 4CF
4D0 - 4D3

Savegame Metadata
Item
Range
Data Type
Play Time
290 - 293
Little Endian 32 bit Unsigned Integer
Save Point Name
294 - 2B3
Array of ASCII
Finding new data offsets
Method 1, binary diff
To use this method you need two save games, before and after a change. In this example I want to find the offset for the 'Mystic Potion', to do this I first find a save that has at least 1 of the item, then I use / sell one of the item and save in another slot. In theory the only difference between the two save games is having one less of the potion, the increase in gold because of selling it, and the files play time.

Once you have two save files press ctrl-k in HxD to start a compare and select the two save files, this will open the two files in two windows, you can now press F6 which jumps to the next difference in the save file until you find the change you want, in this example I had 6 mystic potions and I sold 1 to give me 5 so I press F6 until I find a change in the data that matches which will be the offset for the item.



Method 2, find value with HxD
In some cases it is simply searching the file is good enough to find what you want, this works best with large numbers since there are way more unique two or four byte integers than one byte ones.

In this example I know the value for the party's gold in game is 35507 so I open up the save file in HxD and press ctrl-f to search. The data type we want is an integer number, this means that it it will search the integer values that the hex represents rather than the hex itself. Make it is searching Little Endian values since it is the format used in Grandia II saves, If you know bitwidth of the data you are searching for set it, otherwise set it to any. Finally enter the integer value and search.


17 Comments
Pigeon Apr 10 @ 7:33pm 
In case anyone needs, there is a ton of hex dump, or at least a ton of locations in
text -> strings.txt

mapid_D840=MIRUMU VILLAGE CHIEF'S HOUSE
mapid_D850=MIRUMU, SANDRA'S HOUSE
mapid_D8A0=MIRUMU, HOUSE 1
mapid_D8B0=MIRUMU, HOUSE 2
mapid_D8C0=MIRUMU, HOUSE 3
mapid_D8F0=----
mapid_E010=RYUDO'S TENT
Crawlerbasher Jun 14, 2024 @ 12:37pm 
This is hard to wrap my head around, but if I can learn this for this game, then in practise I could do this for all over save states on all games.
Chad "The King" ThunderCuck Jan 8, 2024 @ 11:39am 
dont bother with all this bullshit, just download a cheat engine table and call it a day. last i checked there was one with a script to add every item in the game to storage, edit individual party memebers every single recorded stat even invisible ones, and change party setup, on top of generic godmode style cheats.
Léon Scarlet Jul 9, 2023 @ 9:11am 
Hi, could it work for grandia 1 ?
It have the same hex folder but i really dont understand what the value means

I want to modifie the amounts of exp per battle
Eternauta May 17, 2023 @ 6:26pm 
I'm still interested to know whether the save records the number of enemies defeated. Let me know in case, I don't understand anything about these things unfortunately.
FOR REAL Nov 23, 2022 @ 9:06pm 
ac0 - Poff Nut (If you give these nuts to a squirrel-like creature in the cave, the squirrel will follow you.)
TheCountofTuscany Nov 12, 2022 @ 5:33pm 
Awesome guide, my first hex editing went smooth as hell. Learned a lot actually with these sites and HxD app. Just a small typo I'm sure most people would figure out, but Tio's experience location starts at 4CC not 3CC for current experience total.
travjfran Feb 5, 2022 @ 4:52pm 
Can this be used to choose who's in your party no matter where you're at in the game? Whether it's swapping out individual party members (eg. Ryudo, Millenia, Pre-king Roan, and Tio) or using party compositions set by the game?
Eternauta Aug 9, 2020 @ 5:06am 
I'm trying to figure out if the save records the number of enemies defeated, does anyone have any idea how to do that?
tuliofreitas_ Jan 1, 2019 @ 8:57am 
Cool!