Editing
Hex Editing - Guide
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
= Game Mechanics = == Starting Resources == Table with the starting resources starts at 0x278170. Each 4 bytes are the next resource (Wood, Mercury, Ore, Sulfur, Crystal, Gems, Gold). Each 28 bytes is the next difficulty - Easy, Normal, Expert, etc. At 0x2781FC the AI resources start and follow the same order of resources and difficulties. The whole table thus takes 280 bytes. == Starting Bonuses == === Gold Bonus === The starting gold bonus chooses a random value between the value written at 0x0C0002 and the value at 0x0BFFFD, and then multiplies it by 100. To change the multiplication, simply edit 0x0C000B (multiplying by 25) and 0x0C0016 (moving the value by 2 bits, so multiplying it by 4). === Resource Bonuses === The starting resource bonuses use DWORD pointers to find their appropriate code to run: * Wood and Ore - AF FF 4B 00 * Crystals - D6 FF 4B 00 * Gems - E1 FF 4B 00 * Mercury - EC FF 4B 00 * Sulfur - F4 FF 4B 00 These DWORD pointers are located at the following addresses: * Castle - 0x0C01B4 * Rampart - 0x0C01B8 * Tower - 0x0C01BC * Inferno - 0x0C01C0 * Necropolis - 0x0C01C4 * Dungeon - 0x0C01C8 * Stronghold - 0x0C01CC * Fortress - 0x0C01D0 * Conflux - 0x0C01D4 Note, that you need to edit ScnrStar.def to reflect any altered resources. The amount for each rare resource is most likely determined by the function at 0xc009e: {{unk}} : minimum: c745f0 33333333 ''(mov [ebp-0x10], 0x33333333)'' c745f0 3333EB3F ''(mov [ebp-0x1c], 0x3feb3333)'' : break between the two: eb 0e ''(jmp 0x0e)'' : maximum: c745f0 66666666 ''(mov [ebp-0x10], 0x66666666)'' c745f0 6666E63F ''(mov [ebp-0x10], 0x3FE66666)'' The amount of wood and ore are most likely specified at 0xbffaf: BA 0a000000 ''(mov edx, 0x0a)'' B9 05000000 ''(mov ecx, 0x05)'' == Movement point reminder == The movement point reminder is located at 0x9c91. It checks if movement points are 0 (using a 2-byte ''test eax, eax'') and then proceeds to different code if movement points are (or not) zero. If one wants to change it to a higher number (to avoid reminding of movement for heroes that can't actually move anymore), the following code can be used: :0x9c91: {{---}}{{---}}a1 c8876900 ''mov eax, [0x6987c8]'' e9 849d0d00 (jump to some arbitrary free space) 90909090 : free space: {{-}}3d XY000000 ''cmp eax, XY'' - compare movement points with value XY. :::: {{---}}7F 0A ''jg 0x0a'' - jump 10 bytes if the value is greater. :::: {{---}}A1 C4 5d 6A 00 - displaced code :::: {{---}}e9 6f62f2ff - jump to 0x9c9f (or 49C9F) :::: {{---}}e9 a462f2ff - jump to 0x9cd9 (or 49CD9).
Summary:
Please note that all contributions to Heroes 3 wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information