[Guide] Suikoden II Hex Editor

If you are stuck in the Dunan Unification Wars; or wish for more details on the gameplay systems, this is the place.
Post Reply
Atonias
Posts: 8
Joined: Thu Oct 11, 2018 8:54 pm

[Guide] Suikoden II Hex Editor

Post by Atonias »

Now you can edit the parameters of game ( stat growth rate , weapon , rune ..) . With using software hex editor : https://mh-nexus.de/en/downloads.php?product=HxD20
How to use : Download software , install & run , after open .BIN game . In HxD press Ctrl + G , and Paste Address in list me sent to go to the required address . Edit what you like , final Ctrl + S to Save . Done open the game and enjoy :P
Characters : ( Each one have 12 bytes )
Byte 01 : STR & MAG growth rate ( 1/2 first byte is STR , 1/2 last byte is MAG . Ex : Hero have byte 01 is 65 , mean 6 is STR and 5 is MAG rate )
Byte 02 : PROT & MDF growth rate
Byte 03 : TECH & SPD growth rate
Byte 04 : LUCK & HP growth rate
Byte 09 : Fire & Water Rune Affinities ( same with Stat Growth . Ex : Hero have bye 0B is 32 , mean 3 is Lightning and 2 is Resurrection Rune Affinities )
Byte 0A : Wind & Earth Rune Affinities
Byte 0B : Lighting & Resurrection Rune Affinities
Byte 0C : Darkness & Bright Shield Rune Affinities
Byte 0F : Head Rune slot ( when lv up slot rune will open , but can't attach rune , i don't know why )
Byte 10 : Right Hand Rune slot
Byte 11 : Left Hand Rune slot

Stat Growth Rates:
You can view the information at : http://www.suikosource.com/games/gs2/gu ... growth.php
F = Rank ( Abizboah )
E = Rank ( Later , stat increase big a lot afer lv60 )
D = Rank ( Sigfried )
C = Rank ?
B = Rank ?
A = Rank ( early , lv1-lv20 increase big a lot , but descrease since lv20-99 )
9 = Rank ( early ......)
8 = Rank SS
7 = Rank S
6 = Rank A
5 = Rank B
4 = Rank C
3 = Rank D
2 = Rank E
1 = Rank F

Rune Affinities:
5 - 20% more damage, may backfire
4 - 20% less damage
3 - Normal damage
2 - 20% more damage
1 - 40% more damage )
0 - None


Address :
Hero - 111E1E7A
Flik - 111E1E8C
Victor - 111E1E9E
Viki - 111E1EB0
Sheena - 111E1EC2
Clive - 111E1ED4
Hix - 111E1EE6
Tengaar - 111E1EF8
Futch - 111E1F0A
Humphrey - 111E1F1C
Georg - 111E1F2E
Valeria - 111E1F40
Pesmerga - 111E1F52
Lorelai - 111E1F64
Shin - 111E1F76
Rikimaru - 111E1F88
Tomo - 111E1F9A
Nanami - 111E1FAC
Eilie - 111E1FBE
Rina - 111E1FD0
Bolgan - 111E1FE2
Tuta - 111E1FF4
Hanna - 111E2006
Millie - 111E2018
Karen - 111E202A
Shiro - 111E203C
Zamza - 111E204E
Gengen - 111E2060
Gabocha - 111E2072
Kinnison - 111E2084
Shilo - 111E2096
Miklotov - 111E20A8
Camus - 111E20BA
Hauser - 111E20CC
Freed Y - 111E20DE
Kahn 111E20F0
Amada - 111E2102
Tai Ho - 111E2114
Anita - 111E2126
Bob - 111E2138
Meg - 111E214A
Gadget - 111E215C
Ayda - 111E216E
Killey - 111E2180
Sierra - 111E2192
Oulan - 111E21A4
Genshu - 111E21B6
Mukumuku - 111E21C8
Abizboah - 111E21DA
Feather - 111E21EC
Badeaux - 111E21FE
Tsai - 111E2210
Luc - 111E2222
Chaco - 111E2234
Nina - 111E2246
Sid - 111E2258
Yoshino - 111E226A
Gijimu - 111E227C
Koyu - 111E228E
Lo Wen - 111E22A0
Mazus - 111E22B2
Sasuke - 111E22C4
Mondo - 111E22D6
Vincent - 111E22E8
Simone - 111E22FA
Hai Yo - 111E230C
Stallion - 111E231E
Wakaba - 111E2330
L.C. Chan - 111E2342
Gantetsu - 111E2354
Hoi - 111E2366
Sigfried - 111E2378
Kasumi - 111E238A
Rulodia - 111E239C
Makumaku - 111E23AE
Mikumiku - 111E23C0
Mekumeku - 111E23D2
Mokumoku - 111E23E4
Chuchara - 111E23F6
Jowy 2 - 111E2408

Weapon Damage growth : ( each one have 10 bytes )
Ex : Byte 01 : lv1 weapon damage , and 02 : lv2 weapon damg.......vv)
One-handed Swords - 111FCD74
Two-handed Swords - 111FCD85
Spears - 111FCD96
Axes - 111FCDA7
Claws - 111FCDB8
Bows -111FCDC9
Darts - 111FCDDA
Rods - 111FCDEB
Others - 111FCDFC
Talking Sword - 111FCE0D
Hero’s weapon - 111FCE1E
Nanami’s weapon - 111FCE2F
Other - 111FCE40
Other - 111FCE51
Other - 111FCE62
Other - 111FCE73
Other - 111FCE84
Other - 111FCE95
psychedelist
Posts: 68
Joined: Sat Oct 27, 2018 1:45 pm

Re: [Guide] Suikoden II Hex Editor

Post by psychedelist »

Thanks a lot for this post, it's incredibly useful.

Could someone please help me out with addresses of monster data (hp, stats, their item drops, money), prices of items and blacksmith upgrades, and shop data (especially what appears in Rare Finds)? I tried to search for this information and found people talking about it, but unfortunately not mentioning the exact addresses. Would appreciate it a lot if anyone knows some of these and can post it.
User avatar
Pyriel
Webmaster
Posts: 1227
Joined: Wed Aug 18, 2004 1:20 pm

Re: [Guide] Suikoden II Hex Editor

Post by Pyriel »

Well, the way I described of finding them works regardless of version, whether or not your disc is patched, etc. I prefer not to translate that into a rote set of file offsets that may or may not work, or that could lead people astray if they use information for the wrong version.

The easiest way to do it would be to use the character set chart, and search for some of the longer enemy names in your editor. Then you don't need to worry about all the aforementioned things that could change the file offset. You'd also find every copy of an enemy (there are often many). This game doesn't have one massive file or array of enemies. They're stored in the modules that correspond to whatever areas they might appear in, and there are two hundred or so of those. When we did the bestiary, there were something like 20 copies of each type of Highland Soldier in different areas files. I think CutRabbit pops up 4 times, and probably most of them are in at least two files.
psychedelist
Posts: 68
Joined: Sat Oct 27, 2018 1:45 pm

Re: [Guide] Suikoden II Hex Editor

Post by psychedelist »

Thanks for the info. Could you please point me to the exact thread or post where you're describing it? I'm not sure if i found that while looking for the info some time ago. I must be doing something wrong - if i search my rom in a hex editor, there's no meaningful text anywhere, such as enemy monster names. Could you please clarify how exactly i can find the offset where an enemy data begins? And then, what would be the structure size and how would i figure out what stat each byte represents?
Atonias
Posts: 8
Joined: Thu Oct 11, 2018 8:54 pm

Re: [Guide] Suikoden II Hex Editor

Post by Atonias »

I am quite busy so can't find another address , when i have free time , can find another . You can play suikoden 5 , i'd post hex codes S5 here : http://www.suikosource.com/phpBB3/viewt ... 43&t=14605
psychedelist
Posts: 68
Joined: Sat Oct 27, 2018 1:45 pm

Re: [Guide] Suikoden II Hex Editor

Post by psychedelist »

Atonias, thanks. For now i'm only interested in S2. Couldn't find the right encoding to read enemy names, but was able to find their data by searching for stats from the bestiary. Still looking for item and blacksmith prices, Rare Finds and spells power.
KakCAT2
Posts: 12
Joined: Wed Jul 11, 2018 5:12 am

Re: [Guide] Suikoden II Hex Editor

Post by KakCAT2 »

how trustable is the data in the stats growth page? http://www.suikosource.com/games/gs2/gu ... growth.php

I'm writing a tool to view the stats, but while some characters have the stats as shown in the table (i.e. hero), some other characters have some of the stats different (i.e. Victor has not A for STR (has 0xa value, great growth in 1..20) and E as magic.
KakCAT2
Posts: 12
Joined: Wed Jul 11, 2018 5:12 am

Re: [Guide] Suikoden II Hex Editor

Post by KakCAT2 »

tools apart, it is curious how the character order is laid out. Most of the repeating characters from Suikoden 1 are in the first places. Is like when they started S2, they said "well, which characters from S1 do we want to reappear?"
User avatar
Pyriel
Webmaster
Posts: 1227
Joined: Wed Aug 18, 2004 1:20 pm

Re: [Guide] Suikoden II Hex Editor

Post by Pyriel »

Intentionally blanked.
Last edited by Pyriel on Thu Nov 01, 2018 10:38 am, edited 1 time in total.
User avatar
Pyriel
Webmaster
Posts: 1227
Joined: Wed Aug 18, 2004 1:20 pm

Re: [Guide] Suikoden II Hex Editor

Post by Pyriel »

psychedelist wrote: Tue Oct 30, 2018 5:13 am Thanks for the info. Could you please point me to the exact thread or post where you're describing it? I'm not sure if i found that while looking for the info some time ago. I must be doing something wrong - if i search my rom in a hex editor, there's no meaningful text anywhere, such as enemy monster names. Could you please clarify how exactly i can find the offset where an enemy data begins? And then, what would be the structure size and how would i figure out what stat each byte represents?
http://www.suikosource.com/phpBB3/viewt ... 84#p148241

I don't think I have a copy of the enemy struct anywhere that I'd consider handy. It's not too hard to work out most of it, though. The closest thing I have to hand is some notes I made on Neclord specifically from a site backup. All enemies have the same structure, though. The only difference with bosses is the potch drop is 1/10 the value.

Edit: OK, the new PHPBB doesn't do code tags very well, so http://www.herrvillain.net/cheats/suiko ... oEnemy.txt
That's the HollyBoy notes from early in developing the bestiary. That's as close I have to a full description of the enemy struct without needing to dig through old projects on old drives.

All text in the game is in a custom encoding. I don't have a matrix handy, but you can find a fairly complete listing on GameFAQs in the save-state hacking guide. Here's a list I have from some old notes, but the board may render it hard to use... (replaced with a link)

http://www.herrvillain.net/cheats/suikoden2/charmap.txt

(How is it formatted properly in the edit panel, but broken in the thread view? Did they add a function to strip all formatting from tags that are supposed to preserve raw formatting?)

I don't think the stat growth guide has been updated any time recently. Most of what's there is best-guess sort of analysis that borrows its concept of rankings from later games. It's a handy way of explaining things to players, but it's not something the developers actually seem to have had in mind. The stat growth thread has a breakdown of how it actually works, starting here: http://www.suikosource.com/phpBB3/viewt ... 15#p156141

Edit 2: Or the board could just duplicate my posts rather than letting me edit.
psychedelist
Posts: 68
Joined: Sat Oct 27, 2018 1:45 pm

Re: [Guide] Suikoden II Hex Editor

Post by psychedelist »

Pyriel, thank you so much for the explanation. I think decoding the names will be unnecessary, it's possible to find the enemy entries just by looking for stats. But it was a nice thing to know still. Besides those things i already listed, there're couple more things i'd love to know.
1. Is there a known table with data for Unite damage multipliers?
2. http://www.suikosource.com/phpBB3/viewt ... d5#p154329
In this topic, there's a discussion about turn order and speed multipliers. I wonder how easy or hard it would be to modify the 1.3 speed multiplier of heals/buffs (e.g. change it to 1.0)? Would it be a matter of changing a single value, or rewriting the routine would be needed? I never had to deal with ps1 code disassembling before, so far it's very difficult for me to figure out how to do it.
KakCAT2
Posts: 12
Joined: Wed Jul 11, 2018 5:12 am

Re: [Guide] Suikoden II Hex Editor

Post by KakCAT2 »

I did a quick and dirty viewer for the data presented in this thread and uploaded the source code at github: https://github.com/KakCAT/suiko2edit


I've uploaded a precompiled version too : https://github.com/KakCAT/suiko2edit/bl ... o2edit.zip (click download button on the right)

Remember to scan for viruses when you download files belonging to suspicious people :) You never know when the Filthy Devil Godwins will try to attack you :)


I've tried to match Suikosource's stats growth guide to present the data. The stats growth is slightly different (in example, there seems not to be really a E/E+ difference)

However HP growth is completely different from the data in suikosource. I don't know if this is due a bug in the viewer or that the HP data in the stats growth guide is incorrect.

The data of spell affinity and weapon growth matches the data in the suikosource site.

I'll try to update the tool to be able to change stats and write back the data in the ISO file when I have more time.

BTW, the tool requires .NET 4.5 to work, but it's highly likely it's already installed in your Windows.
You do not have the required permissions to view the files attached to this post.
User avatar
Pyriel
Webmaster
Posts: 1227
Joined: Wed Aug 18, 2004 1:20 pm

Re: [Guide] Suikoden II Hex Editor

Post by Pyriel »

  1. There's obviously an array of names and descriptions for unites that can be found pretty easily. I don't remember if the structure also includes any data about the unite like multipliers or applied effects, or if that's hard-coded in the executable routines. I'm thinking it's hard-coded. If there's data, it may well be ignored, the way the game ignores the status bonuses for armor in the game data, and instead applies hard-coded values in battle based on the item ID.
  2. Changing the temporary speed buff means changing the code. It doesn't persist beyond the round, and it's so transient I'm not even sure you could affect it by overwriting temporary variables with a cheat code.

    What you need to do it is in the thread you linked, though probably not obvious.

    Code: Select all

    RAM:8003F724                 li      $v1, 0x51EB851F
    RAM:8003F72C sll $v0, $s1, 4
    RAM:8003F730 subu $v0, $s1
    RAM:8003F734 sll $v0, 1
    RAM:8003F738 mult $0, $v0, $v1
    RAM:8003F73C sra $v0, 31
    RAM:8003F740 mfhi $a2
    RAM:8003F744 sra $v1, $a2, 5
    RAM:8003F748 subu $v1, $v0
    RAM:8003F74C j loc_8003F864
    RAM:8003F750 addu $s1, $v1
    All this rigmarole is just multiplying the value in $s1 (speed) by 1.3.

    The PSX didn't do floating-point, so it had to be an integer approximation of 30%. Divide is an expensive operation, so compilers avoided it at all costs. Hell, they avoided multiply whenever possible too. If you had something simple like "x * 5" in your code, you could fully expect it to be translated into "(x << 2) + x" instead of "li $a0, 5; mult $a1, $a0" or similar.

    0x51EB851F is a magic number for dividing by 100 without division, when the high-order 32-bits are right-shifted 5, so the ops at 0x8003F724, 0x8003F740, and 8003F744 are doing just that. All the rest is multiplying the original value by 30, aside from 8003F73C and RAM:8003F748 which are ensuring the value's sign is taken into account. So it's just a whole lot of relatively cheap operations to get x * 30 / 100.

    All that being said, since what you want to do is just have no multiplier at all, you can just NOP (change to 00000000) the "addu $s1, $v1" at 0x8003F750. That's where the extra 30% is added in, and $s1 already contains the base speed value. You have to do it in at least two places that I know of, though. This code is from BP0_SEC.BIN, which handles the second round of battle and beyond. The first round is done by BP0_FST.BIN, which has a copy of this routine. Don't ask why they did it like that. I don't really know.
User avatar
Pyriel
Webmaster
Posts: 1227
Joined: Wed Aug 18, 2004 1:20 pm

Re: [Guide] Suikoden II Hex Editor

Post by Pyriel »

KakCAT2 wrote: Thu Nov 01, 2018 4:32 pm I did a quick and dirty viewer for the data presented in this thread and uploaded the source code at github: https://github.com/KakCAT/suiko2edit


I've uploaded a precompiled version too : https://github.com/KakCAT/suiko2edit/bl ... o2edit.zip (click download button on the right)

Remember to scan for viruses when you download files belonging to suspicious people :) You never know when the Filthy Devil Godwins will try to attack you :)


I've tried to match Suikosource's stats growth guide to present the data. The stats growth is slightly different (in example, there seems not to be really a E/E+ difference)

However HP growth is completely different from the data in suikosource. I don't know if this is due a bug in the viewer or that the HP data in the stats growth guide is incorrect.

The data of spell affinity and weapon growth matches the data in the suikosource site.

I'll try to update the tool to be able to change stats and write back the data in the ISO file when I have more time.

BTW, the tool requires .NET 4.5 to work, but it's highly likely it's already installed in your Windows.
Well, like I said earlier, the stat growth guide is out of date, and it was only ever based on a load of experimentation by the authors. They did the best they could, but with the random factors involved they were never going to get everything perfect. Looking at your tool, you get what I got from extracting the data, so I would imagine yours is right, even if it disagrees a bit with the main site's guide.

As I recall, the growth rates were in several files throughout the disc. How many places is your editor changing it? Or have you tested your edits to make sure they're working consistently? The usual pattern with this game is that data copied 20 times is used 99% of the time in one place, 18 of the remainder will just be cruft, and the one that's left is used in a special circumstance that doesn't even seem to require a privileged copy.
psychedelist
Posts: 68
Joined: Sat Oct 27, 2018 1:45 pm

Re: [Guide] Suikoden II Hex Editor

Post by psychedelist »

Pyriel, thank you so much for the detailed explanations. Spell damage multipliers would be the same then? There was a hardcore hack that says it modifies some spells, i don't know in what way exactly (didn't play it), hope the author will come back and tell us.

I know that 0x800xxxxx is some kind of virtual memory, it wasn't clear for me how i'd map it to the physical memory (the single file). I used a psx disassembler, decompiled BP0_SEC.BIN file, found where that particular instruction sequence appears, matched it with the hex data, and finally located that data in the single ROM file (appears to be at D98D5D8 for unpatched game, but i could easily be wrong). What would be the pro's way of locating this?

KakCAT2, good job on the editor :)
Post Reply