• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Reverse Engineer Game.dll

Status
Not open for further replies.
Level 12
Joined
May 20, 2009
Messages
822
Has anyone tried this? If you have, how far did you get and what were your problems? It seems like a huge ton of the game is built into this DLL file, like most (If not all) of the UI, selection amount, determine what's a hero, a building, an item, or a normal widget, and spell and trigger functionality. This DLL also seems to contain the no-cd hack Blizz put on the game with one of the patches.

Correct me of I'm wrong on any of that, I'm not too skilled in real programming. I figured out most of this by reading some threads on here and a little bit of experimentation mostly with Cheat Engine like for instance I was able to completely destroy selection for the game instance. Had to restart the game to fix it. XD

Parts of the game have already been reverse-engineered. An example of this is with the Nirvana mod, which made it's own executable that injects plugins of good features such as Mana Bars and locking the mouse in the WC3 window when it's in windowed mode, and vamps up the graphics a bit with good HDR, real-time shadows, and Normal Mapping.
 
Last edited:
Level 12
Joined
May 20, 2009
Messages
822
Well, like I said I don't really have a whole lot, if any, experience with coding. I'm pretty sure I've only found out what I know due to sheer luck.

I'm not asking anyone to do this, I'm just asking if anybody has tried and what they accomplished.

I actually can really see this being like a next-gen WC3 modding, remaking Game.dll along with Nirvana. Technically you already can greatly expand upon WC3 using Nirvana, but it requires a great knowledge of assembly, and lots and lots of research into WC3 via a Disassembler. If we could completely rebuild Game.dll, we'd have something a lot easier to work off of more then likely.

But then again, it'd probably be a lot easier to just make an open source WarCraft III-esque RTS... So maybe this isn't all too rewarding. I dunno. What does everyone else think?
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
you could very well just replace the game.dll with different game.dll with more functionality.

Sharpcraft can extend the game too, and you need to know 0 assembly whatsoever, you only need to know C#.

No I havent reverse engineered the game.dll, but some folks did a bit at least, like the people that make the 8 mb bypasses
 
look into .mix files (custom dlls loaded by wc3) and sites like cheatengine/d3scene. I don't know if I've seen anything significant done with them, but it may be worthwhile to check (there is an 8 mb size limit remover in the tools section, but apart from that, it is mostly gold/visibility/misc cheat hacks).

you can also do some post-processing edits like ENB:
http://www.hiveworkshop.com/forums/warcraft-editing-tools-277/enb-warcraft-3-a-237739/

you'll have to do a lot of memory reading to reverse engineer the game.dll. it is a lot of trial and error :p
 
Level 12
Joined
May 20, 2009
Messages
822
you'll have to do a lot of memory reading to reverse engineer the game.dll. it is a lot of trial and error :p

Yep, that's the problem with figuring out stuff via assembly. Doable, actually easy, but just really, REALLY time-consuming with occasionally getting stuck not having clues to go off of.

I think it could be worth-while to change the UI greatly, though. Who would like 4x3 or hell 5x5 button card? Or make the Hero panel display more then 7 heroes? Or show more in-depth elements in the UI, such as real speed instead of saying "Fast" or "Slow" ? I think this would all be pretty useful, and having it in a DLL that people could easily modify because of having a source would be even more useful. =)

I think it's 100% possible, it'd just take time.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
but nothing you said is confirmed to be modifiable from within game.dll, and probably a lot of things are hardcoded so game.dll or not, you cant go around.

there is antimaphack tool that is .mix I believe, which basically detects when people click outside of their possible vision, and pings it on the screen + says who clicked on what.
 
Level 12
Joined
May 20, 2009
Messages
822
No no, you're misunderstanding. I'm not saying modify game.dll at all. I'm saying completely rebuild it from the ground, up. Entirely rebuilt, coded yourself, instead of using the old one at all.

This would have the advantage of having the source to the file, which we could do a whole lot with.

What I was talking about with the selection and UI is identifying that those things 100% for sure are contained within game.dll. So those are features that we can know 100% for sure would have to be inside it in order for a reverse-engineered game.dll to allow WC3 to function properly.

In order to do this, we need to know everything it does so that we can properly recreate it to function properly with WC3.

The idea is, Game.dll I can already tell contains a lot of such as the entirety of the UI. It probably contains other important things, such as unit movement speed, range, attacks, etc. I wouldn't be surprised if the actual WarCraft executables were just there to render graphics and hold all the information. It would be amazing to have a source code to this thing, to be able to modify all these things easily and expand upon them.

Of course, this is all just fantasizing. I doubt anyone would take the time to do this. I've tried figuring out all I can, but I never get much done whenever I sit down with WC3 and Cheat Engine.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
you still need to follow function names, otherwise the game either wont start(in case game.dll is linked statically), or would crash with dereference of 0x00000000 address in case the dll is linked dynamically.

How do you know such information(UI being contained in game.dll)?

You can disassembly stuff, and while it wouldn't be exact original, and variable names would be full garbage, it would still be C/C++ code.

Again, it would really be unfeasible to create new game.dll from scratch, really, really, really unfeasible(consider the fact that the dll has 11 MB. While it is not 1 byte of code == 1 byte in dll, it still is probably like 60%(I pulled this number from my ass, I have no idea) code only, so thats a lot of code, a looooot)
 
Level 14
Joined
Dec 12, 2012
Messages
1,007
No no, you're misunderstanding. I'm not saying modify game.dll at all. I'm saying completely rebuild it from the ground, up. Entirely rebuilt, coded yourself, instead of using the old one at all.

This would have the advantage of having the source to the file, which we could do a whole lot with.

Well what you are saying is essentialy "recode Wc3 completly, then we have the advantage of having the source code".

Before someone would be able to recode something like this from scratch he would have to know everything perfectly about that game - something which is usually not the case even if you have full access to the source code.

Doable, actually easy

I think you really really underestimate this. I guess that even for a team of professional reverse-engineers it would take years to make a full and working rebuilt like the one you are talking about.
 
I'm not sure if it helps, but I have Warcraft 3 source code strings extracted from Game.dll. I will copy and paste them here.

Warcraft 3 was coded in C++ based on the frequent .cpp files in the source code.


.RoE.Ro
Race.mpq
tx.mpq
War3X_med.mpq
War3_med.mpq
War3X_low.mpq
War3_low.mpq
War3XLocal.mpq
War3X.mpq
War3.mpq
War3Patch.mpq
oSkin.txt
.\CMiscCustom.cpp
o.\CPreferencesWar3.cpp
ui\startupstrings.txt
8LoFramedefErrors.log
UI\war3skins.txt
UI\FrameDef\FrameDef.toc
.\Engine.cpp
config.txt
war3mapMap.tga
war3mapMap.blp
Units\MiscGame.txt
UI\SoundInfo\MiscData.txt
UI\MiscUI.txt
UI\MiscData.txt
Units\MiscData.txt
advapi32.dll
%c.mpq
Path.tga
ReplaceableTextures\Selection\SpellAreaOfEffect.blp
25.0
.\CAbilityAttack.cpp
o.\CAbilityMove.cpp
%o.w3u
%o.w3t
%o.w3a
%o.w3h
%o.w3q
%o.w3b
2oo.w3d
%s%s%s.mdl
o.\CDestructable.cpp
%s_portrait.mdx
%s.mdx
.\CWidget.cpp
o.\CItem.cpp
.\NetUnit.cpp
ocommon.ai
common.j
op(.o
x.o.\CCaptainAI.cpp
units\critters\VillagerKid\VillagerKid.mdl
sound\interface\mouseclick2.wav
sound\interface\mouseclick1.wav
.\CGameUI.cpp
CustomKeys.txt
Units\ItemFunc.txt
Units\CommandFunc.txt
Units\Telemetry.txt
Units\ItemStrings.txt
Units\CommandStrings.txt
Units\NeutralUpgradeFunc.txt
Units\UndeadUpgradeFunc.txt
Units\OrcUpgradeFunc.txt
Units\NightElfUpgradeFunc.txt
Units\HumanUpgradeFunc.txt
Units\CampaignUpgradeFunc.txt
Units\NeutralUpgradeStrings.txt
Units\UndeadUpgradeStrings.txt
Units\OrcUpgradeStrings.txt
Units\NightElfUpgradeStrings.txt
Units\HumanUpgradeStrings.txt
Units\CampaignUpgradeStrings.txt
Units\ItemAbilityFunc.txt
Units\UndeadAbilityFunc.txt
Units\OrcAbilityFunc.txt
Units\NightElfAbilityFunc.txt
Units\NeutralAbilityFunc.txt
Units\HumanAbilityFunc.txt
Units\CommonAbilityFunc.txt
Units\CampaignAbilityFunc.txt
Units\ItemAbilityStrings.txt
Units\UndeadAbilityStrings.txt
Units\OrcAbilityStrings.txt
Units\NightElfAbilityStrings.txt
Units\NeutralAbilityStrings.txt
Units\HumanAbilityStrings.txt
Units\CommonAbilityStrings.txt
Units\CampaignAbilityStrings.txt
Units\UndeadUnitFunc.txt
Units\OrcUnitFunc.txt
Units\NightElfUnitFunc.txt
Units\NeutralUnitFunc.txt
Units\HumanUnitFunc.txt
Units\CampaignUnitFunc.txt
Units\UnitGlobalStrings.txt
Units\UndeadUnitStrings.txt
Units\OrcUnitStrings.txt
Units\NightElfUnitStrings.txt
Units\NeutralUnitStrings.txt
Units\HumanUnitStrings.txt
Units\CampaignUnitStrings.txt
oabilities\weapons\spear\spearmissile.mdl
Abilities\Spells\Other\TempSpellArt\TempSpellArt.mdl
ReplaceableTextures\CommandButtons\BTNTemp.blp
ReplaceableTextures\Selection\SpellAreaOfEffect.blp
SoundManagerLog.txt
%-4.1f
%5.2f
4oUI\TipStrings.txt
%s%s.w3z
UI\HelpStrings.txt
ui\widgets\escmenu\human\observer-icon.blp
Sound\Music\mp3Music\PH1.mp3
.\CMultiBoard.cpp
Environment\DNC\DNCLordaeron\DNCLordaeronTerrain\DNCLordaeronTerrain.mdl
Environment\DNC\DNCLordaeron\DNCLordaeronUnit\DNCLordaeronUnit.mdl
.\CWorldFrameWar3.cpp
9o.\CBuildMode.cpp
o.\CBuildFrame.cpp
.\CGameWar3.cpp
maps\campaign\War3XBonusCredits.w3x
maps\campaign\War3XRegularCreditsIce.w3x
maps\campaign\BonusCredits.w3m
maps\campaign\WarcraftIIICredits.w3m
blizzard.j
scripts\common.j
o0.03
Campaigns.w3v
o%s\Campaigns.w3p
.\CFogOfWarMap.cpp
VAo.\CPlayerWar3.cpp
selection.log
.\CSelectionWar3.cpp
o.\CGameState.cpp
ZEo.\Jass.cpp
Nodes.h
.\Compile.cpp
Eo.\Instance.cpp
.\scanner.cpp
.\parser.cpp
Fo.\Agile.cpp
%4.2f
%4.2f
Go.\CAgent.cpp
Go.\Integer.cpp
o0AGo.\Position.cpp
.\FloatProp.cpp
.\AgentRef.cpp
Ho.\CAgentBase.cpp
Ho.\ipse_thread.cpp
256.0
16.0
10.0
-128000.0
.\cproximitymap.cpp
.\agent_.cpp
.\cmemblock.cpp
.\FileCache.cpp
\%s%08x.pre
.\CDataAllocator.cpp
.\Prop.cpp
.\Status.cpp
ZLo0ULo.\RCString.cpp
fLo.\CDataRecycler.cpp
fLo.\CDataStoreChunked.cpp
o.\Database.cpp
Lo.db
.\SysMessage.cpp
.\TextBlock.cpp
.\Profile.cpp
.\Sprite.cpp
.\Lightning.cpp
.\Texture.cpp
_mip%d.tga
8No 8No.\GfxSingletonManager.cpp
No.\Tokenizer.cpp
No.\SprAnimList.cpp
No.\SprLinkTable.cpp
Po.\ModelCreate.cpp
Doodads\Cinematic\ArthasIllidanFight\ArthasCape%s.mrf
.\WorldMatrix.cpp
.\MdlAnim.cpp
.\Interp.cpp
B.\CGxDevice\CGxDevice.cpp
Ro.\CGxDeviceD3d\CGxDeviceD3d.cpp
BlizzardCursor.cur
WAR3.ICO
WAR3X.ICO
Ro.\CGxDeviceOpenGL\CGxDeviceOpenGl.cpp
.\GxMovie\GxVideo.cpp
d3d8.dll
.\CGxDeviceD3d\CGxD3dScene.cpp
So.\CGxDeviceD3d\CGxD3dPrim.cpp
%d.%d
.\CGxDeviceOpenGL\CGxOglTexture.cpp
.\CGxDeviceOpenGL\CGxOglScene.cpp
.\CGxDeviceOpenGL\CGxOglPrim.cpp
.\NetGameStore.cpp
Replay\LastReplay.w3g
TempReplay.w3g
Battle.net
font\font.ccd
font\font.clh
font\font.exp
font\font.gid
UI\Widgets\BattleNet\chaticons\iconselection-border-disabled.blp
UI\Widgets\BattleNet\chaticons\iconselection-border-hilight.blp
UI\Widgets\BattleNet\chaticons\iconselection-border-active.blp
UI\Widgets\Glues\Minimap-Unknown.blp
ui\widgets\glues\icon-folder-up.blp
ui\widgets\glues\icon-folder.blp
ui\widgets\glues\icon-file.blp
ui\widgets\glues\icon-file-ums.blp
ui\widgets\glues\icon-file-melee.blp
ui\widgets\glues\dialogbox-question.blp
ui\widgets\glues\dialogbox-error.blp
ui\widgets\glues\dialogbox-message.blp
UI\Widgets\BattleNet\friends-nonmutual.blp
UI\Widgets\BattleNet\friends-mutual.blp
UI\Widgets\BattleNet\friends-privategame.blp
UI\Widgets\BattleNet\friends-publicgame.blp
UI\Widgets\BattleNet\friends-chatroom.blp
UI\Widgets\BattleNet\friends-online.blp
UI\Widgets\BattleNet\friends-offline.blp
UI\Widgets\BattleNet\chaticons\clan-orc-initiate.blp
UI\Widgets\BattleNet\chaticons\clan-orc-leader.blp
UI\Widgets\BattleNet\chaticons\clan-orc-officer.blp
UI\Widgets\BattleNet\chaticons\clan-orc-member.blp
UI\Widgets\BattleNet\bnet-userlist-back.blp
UI\Widgets\BattleNet\bnet-userlist-mod-back.blp
UI\widgets\BattleNet\bnet-tooltip-background.blp
UI\widgets\BattleNet\bnet-tooltip-border.blp
UI\Widgets\Glues\ThumbsDown-Disabled.blp
UI\Widgets\Glues\ThumbsDown-Down.blp
UI\Widgets\Glues\ThumbsDown-Up.blp
UI\Widgets\Glues\ThumbsUp-Disabled.blp
UI\Widgets\Glues\ThumbsUp-Down.blp
UI\Widgets\Glues\ThumbsUp-Up.blp
UI\Widgets\BattleNet\chaticons\tier1-orc.blp
UI\Widgets\Glues\GlueScreen-Checkbox-CheckDisabled.blp
UI\Widgets\Glues\GlueScreen-Checkbox-Check.blp
UI\Widgets\Glues\GlueScreen-Checkbox-BackgroundDisabled.blp
UI\Widgets\Glues\GlueScreen-Checkbox-BackgroundPressed.blp
UI\Widgets\Glues\GlueScreen-Checkbox-Background.blp
ui\widgets\glues\Icon-Map-AuthentificationFail.blp
ui\widgets\glues\Icon-Map-Unknown.blp
ui\widgets\glues\Icon-Map-Blizzard.blp
ui\widgets\glues\Icon-Map-Authenticated.blp
ui\widgets\battlenet\chaticons\bnet-unknown.blp
%s%s%s%s.w3g
%s\%s_%s.w3g
units\orc\peon\peon_portrait.mdl
%s.mdl
%s_portrait.mdl
Maps\Test\OrcVsOrc.w3m
%d.%d.%d.%d
War3Patch_med.mpq
War3Patch_low.mpq
Frozen Throne.exe
Warcraft III.exe
UI\Glues\ScoreScreen\scorescreen-silverbannerborder.blp
UI\Glues\ScoreScreen\scorescreen-goldbannerborder.blp
UI\Glues\ScoreScreen\scorescreen-hero-archmage.blp
UI\Glues\ScoreScreen\ScoreScreen-BottomBar\ScoreScreen-BottomBar.mdl
UI\Glues\ScoreScreen\ScoreScreen-CenterBar\ScoreScreen-CenterBar.mdl
YoUI\Glues\BattleNet\PlaceholderAd\WelcomeToBattleNet.png
UI\Widgets\BattleNet\bnet-tab-up.blp
UI\Widgets\BattleNet\bnet-tab-down.blp
BattleNet\bnserver-WAR3.ini
ui\widgets\battlenet\chaticons\iconindex_bel.txt
%sMovies\%s.mpq
UI\Captions\%s.txt
.\FrameDef.cpp
.\SetupFrame.cpp
.\FDFile.cpp
.\Handlers\FrameHandlers.cpp
o.\Handlers\EditBoxHandlers.cpp
o.\IFDFile.cpp
o.\Handlers\MenuHashNode.cpp
7_o.\Handlers\HighlightFrameHashNode.cpp
g_o.\Handlers\BackdropFrameHandlers.cpp
.\Handlers\TextFrameHandlers.cpp
_o.\CLayer.cpp
.\CControl.cpp
o.\CSimpleButton.cpp
.\CSimpleMessageFrame.cpp
0o.\CFrame.cpp
o.\CSimpleFrame.cpp
.\CScreenFrame.cpp
oFRIZQT__.TTF
3o.\CDialog.cpp
o.\CSimpleTop.cpp
o.\CSimpleRender.cpp
o%s.blp
o.\CSimpleStatusBar.cpp
o.\CSpriteFrame.cpp
.\CCheckBox.cpp
ao.\CMenu.cpp
3.\CTextFrame.cpp
o.\CPopupMenu.cpp
.\CEditBox.cpp
laoplao.\CControlSet.cpp
.\CBackdropGenerator.cpp
.\CTextArea.cpp
ao l3o.\CTextButtonFrame.cpp
ao.\CSlider.cpp
o.\CSimpleCheckbox.cpp
bo.\CModelFrame.cpp
bo l3o.\CButtonFrame.cpp
.\CMessageFrame.cpp
o.\CHighlightFrame.cpp
Pbo.\CScrollBar.cpp
mbo.\CListBox.cpp
.\CChatDisplay.cpp
bo.\CFramePoint.cpp
bo.\CInputObserver.cpp
.\EvtSched.cpp
fLo.\EvtTimer.cpp
.\NetProvider.cpp
.\NetProviderBNET.cpp
.\NetProviderLOOP.cpp
.\NetProviderLTCP.cpp
eo.\NetCommon.cpp
fo.\NetRouter.cpp
go.\NetClient.cpp
bncache.dat
.\BattleNetCache.cpp
.\BattleNetChat.cpp
ko.\W32\OsGui.cpp
ko.\W32\OsBattleNet.cpp
%s\bnupdate.exe
Prepatch.lst
kernel32.dll
.\W32\Time.cpp
o.\W32\OsSnd.cpp
VORT_DLS.DLL
S3BASE.DLL
GenuineIntelAuthenticAMDCyrixInsteadCentaurHalls.\W32\OSSystem.cpp
8BLZ2112.HTM
.\W32\OsLock.cpp
OsNetLog.txt
o.\W32\OsTcp.cpp
ws2_32.dll
mswsock.dll
Wno.\W32\OsClipboard.cpp
.\W32\OsCall.cpp
calldump.log
.\W32\OsISndCache.cpp
.\SHA.cpp
Maiev.mod
.\WardenClient.cpp
3ooMisc.txt
%%.%df
UI\TriggerStrings.txt
UI\TriggerData.txt
UI\WorldEditLayout.txt
UI\AIEditorData.txt
UI\UnitEditorData.txt
UI\WorldEditGameStrings.txt
UI\WorldEditStrings.txt
UI\WorldEditData.txt
UI\WorldEditStartupStrings.txt
2soPreview.tga
Map.tga
War3.exe
WEUTiming.txt
TerrainMemory.txt
setting to 1.0
%.0f)
xo.\blp.cpp
%s%s\%s.tga
.\CONSOLE.CPP
o.\tga.cpp
.\funcs.cpp
o.\GxuLight.cpp
.\GxuFont.cpp
C%2.2x%2.2x%2.2x%2.2x
.\GxuFontUtil.cpp
.\IGxuFontGlyph.cpp
001.003
001.002
001.001
001.000
5.\MsgBuffer.cpp
.\Param.cpp
o.\AsyncFile.cpp
COMCTL32.dll
WINMM.dll
KERNEL32.dll
comdlg32.dll
ADVAPI32.dll
WININET.dll
Storm.dll
ijl15.dll
MSVCR80.dll
WSOCK32.dll
mss32.dll
OPENGL32.dll
IMM32.dll
USER32.dll
GDI32.dll
SHELL32.dll
ole32.dll
Game.dll
757G7.8
Race.mpq



e:\drive1\temp\buildwar3x\war3\source\Data.h
e:\Drive1\temp\buildwar3x\Storm\H\stpl.h
e:\drive1\temp\buildwar3x\war3\source\world\WorldCampaign.cpp
e:\drive1\temp\buildwar3x\war3\source\world\WorldLoad.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityMassTeleport.cpp
e:\drive1\temp\buildwar3x\engine\source\agile\FloatModifier.h
e:\drive1\temp\buildwar3x\engine\source\agile\IntegerListener.h
e:\drive1\temp\buildwar3x\engine\source\agile\PositionListener.h
e:\drive1\temp\buildwar3x\engine\source\agile\FloatListener.h
e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityEvasion.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityCouple.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityCriticalStrike.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CAbilitySilence.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CUnitDatabase.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CCustomData.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Visibility.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CUnitUI.cpp
e:\drive1\temp\buildwar3x\engine\source\agile\MovementRequest.h
e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Enum.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Vision.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Ownership.cpp
e:\drive1\temp\buildwar3x\war3\source\unit\CMissile.cpp
e:\drive1\temp\buildwar3x\engine\source\base\CDataStore.h
e:\drive1\temp\buildwar3x\war3\source\ui\CTimerDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CScriptDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CChatDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CLogDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CAllianceSlot.h
e:\drive1\temp\buildwar3x\war3\source\ui\CAllianceDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CResourceBar.h
e:\drive1\temp\buildwar3x\war3\source\ui\CHeroLevelBar.h
e:\drive1\temp\buildwar3x\war3\source\ui\CBuildTimeIndicator.h
e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelBuildingDetail.h
e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelUnitDetail.h
e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelItemDetail.h
e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelDestructableDetail.h
e:\drive1\temp\buildwar3x\war3\source\ui\CReplayPanel.h
e:\drive1\temp\buildwar3x\war3\source\ui\CGameResultDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CEscMenuMainPanel.h
e:\drive1\temp\buildwar3x\war3\source\ui\CEscMenuOptionsPanel.h
e:\drive1\temp\buildwar3x\war3\source\ui\CGameSaveSplashDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CEscMenuSaveGamePanel.h
e:\drive1\temp\buildwar3x\war3\source\ui\CSuspendDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CUnresponsiveDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CUpperButtonBar.h
e:\drive1\temp\buildwar3x\war3\source\ui\CChatEditBar.h
e:\drive1\temp\buildwar3x\war3\source\ui\CSimpleConsole.h
e:\drive1\temp\buildwar3x\war3\source\ui\CQuestDialog.h
e:\drive1\temp\buildwar3x\war3\source\ui\CCinematicPanel.h
e:\drive1\temp\buildwar3x\war3\source\ui\CQuestLists.h
e:\drive1\temp\buildwar3x\war3\source\ui\CLeaderboard.h
e:\drive1\temp\buildwar3x\war3\source\ui\CMultiboard.h
e:\drive1\temp\buildwar3x\engine\source\agile\PositionModifier.h
e:\Drive1\temp\buildwar3x\Storm\H\SAPIEXTEND.H
e:\drive1\temp\buildwar3x\war3\source\ui\CSkinManager.h
e:\drive1\temp\buildwar3x\war3\source\ui\CSoundManagerI.h
e:\drive1\temp\buildwar3x\war3\source\game\HashKeyStripacked.h
e:\Drive1\temp\buildwar3x\War3\Source\CAgentWar3.h
e:\drive1\temp\buildwar3x\war3\source\game\CFogMaskTable.h
e:\drive1\temp\buildwar3x\engine\source\jass2\Nodes.h
e:\drive1\temp\buildwar3x\engine\source\jass2\Instance.h
e:\drive1\temp\buildwar3x\engine\source\jass2\Compile.h
e:\drive1\temp\buildwar3x\engine\source\agile\CAgent.h
e:\Drive1\temp\buildwar3x\Storm\H\SAPIExtend.h
e:\drive1\temp\buildwar3x\engine\source\base\Status.h
e:\drive1\temp\buildwar3x\engine\source\anim\Interp.h
e:\drive1\temp\buildwar3x\war3\source\glue\CDialogWar3.h
e:\drive1\temp\buildwar3x\war3\source\glue\CListBoxWar3.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetUserListBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetNewsBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetFriendsListBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetClanMateListBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetStatusBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CCheckListBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CMapList.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetIconSelectBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetProfileListBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CMapPreferenceBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CCampaignListBox.h
e:\drive1\temp\buildwar3x\war3\source\glue\CPlayerSlot.h
e:\drive1\temp\buildwar3x\war3\source\glue\CTeamSetup.h
e:\drive1\temp\buildwar3x\war3\source\glue\COptionsMenu.h
e:\drive1\temp\buildwar3x\war3\source\glue\CAdvancedOptionsDisplay.h
e:\drive1\temp\buildwar3x\war3\source\glue\CAdvancedOptionsPane.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetChatroom.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetChatActionMenu.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetTeamInvitation.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetClanPane.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetClanInvitation.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetChatPanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CMapInfoPane.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetCustomJoinPanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetMain.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetProfilePanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetTeamPanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CGameChatroom.h
e:\drive1\temp\buildwar3x\war3\source\glue\CTitle.h
e:\drive1\temp\buildwar3x\war3\source\glue\CLoading.h
e:\drive1\temp\buildwar3x\war3\source\glue\CMainMenu.h
e:\drive1\temp\buildwar3x\war3\source\glue\CLocalMultiplayerJoin.h
e:\drive1\temp\buildwar3x\war3\source\glue\CLocalMultiplayerCreate.h
e:\drive1\temp\buildwar3x\war3\source\glue\CScoreScreen.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetCustomCreatePanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CCampaignMenu.h
e:\drive1\temp\buildwar3x\war3\source\glue\CSinglePlayerMenu.h
e:\drive1\temp\buildwar3x\war3\source\glue\CViewReplayScreen.h
e:\drive1\temp\buildwar3x\war3\source\glue\CLoadSavedGameScreen.h
e:\drive1\temp\buildwar3x\war3\source\glue\CSkirmish.h
e:\drive1\temp\buildwar3x\war3\source\glue\CAdBanner.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetScheduledGame.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetCustomLoadPanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetStandardPanel.h
e:\drive1\temp\buildwar3x\war3\source\glue\CMinimapImage.h
e:\drive1\temp\buildwar3x\war3\source\glue\CLocalMultiplayerLoad.h
e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetFriendsPane.h
e:\drive1\temp\buildwar3x\war3\source\glue\CCustomCampaignMenu.h
e:\drive1\temp\buildwar3x\engine\source\frame\CHighlightFrame.h
e:\drive1\temp\buildwar3x\engine\source\frame\CEditBox.h
e:\drive1\temp\buildwar3x\engine\source\framedef\IFrameDef.h
e:\drive1\temp\buildwar3x\engine\source\fdfile\FDFile.h
e:\drive1\temp\buildwar3x\engine\source\fdfile\handlers\MenuHashNode.h
e:\drive1\temp\buildwar3x\engine\source\frame\CSimpleMessageFrame.h
e:\drive1\temp\buildwar3x\war3\source\worldedit\WECustomObjectData.h
e:\drive1\temp\buildwar3x\war3\source\worldedit\CCustomObjectData.h
e:\drive1\temp\buildwar3x\engine\source\base\MsgBuffer.h
e:\drive1\temp\buildwar3x\engine\source\gxu\IGxuFont.h
e:\Drive1\temp\buildwar3x\War3\bin\Game.pdb


Also keep in mind that modification of the source code or Game.dll is strictly prohibited by Blizzard. Hive doesn't support such actions as Blizzard could take this site down if that happened. What you're asking for wont happen, nobody will spend tons of hours reverse engineering it only for it to be hunted down by Blizzard.

Reverse engineering a game is a serious crime, it also is dangerous as you would be sued or had to pay the toll.

You should read End User License Agreement.
 

Attachments

  • Game.dllnodrive.txt
    9.5 KB · Views: 537
  • Game.dllwithdrive.txt
    7.7 KB · Views: 465

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,197
Reverse Engineer Game.dll
Technically illegal...

A.Subject to the Grant of License herein above, you may not, in whole or in part, copy, photocopy, reproduce, sublicense, translate, reverse engineer, derive source code, modify, disassemble, decompile, create a source code equivalent, create derivative works based on the Program, or remove any proprietary notices or labels on the Program, or allow others to do so, without the prior consent, in writing, of the Licensor.

you could very well just replace the game.dll with different game.dll with more functionality.
Only if the executables are dynamically linked. Static linking will likely cause problems as it requires all function addresses to be unmodified.

but nothing you said is confirmed to be modifiable from within game.dll, and probably a lot of things are hardcoded so game.dll or not, you cant go around.
game.dll is Warcraft 3. The executables are purely platform specific ways to start the game. Additionally the executable used to contain copy protection but that has been disabled/removed.

I'm saying completely rebuild it from the ground, up. Entirely rebuilt, coded yourself, instead of using the old one at all.
Consult EULA...

In order to do this, we need to know everything it does so that we can properly recreate it to function properly with WC3.
It took a team of paid programmers years to create WC3 and you want to do it again for free?!

You can disassembly stuff, and while it wouldn't be exact original, and variable names would be full garbage, it would still be C/C++ code.
Disassemble is the process of converting machine code into its (or another) assembly language. Assembly languages are the lowest level form of human readable computer programming as it directly interacts with the underlying processor (translates 1:1 to machine code).

Decompile is the process of converting some low level language produced by a compiler back into the source language, trying to re-create the structure of the code. This works wonders on un-optimized code. Optimized code (such as WC3) will either fail to decompile or the resulting code would be as bad as the underlying assembly (pretty much converting each line of assembly into a line of C/C++). Obviously all named C/C++ context is not restored as that gets lost during compiling.

I'm not sure if it helps, but I have Warcraft 3 source code strings extracted from Game.dll. I will copy and paste them here.
Those are all the string constants in the dll. God knows why there are cpp file references in it but chances are that they were put there by MSVC during build (possibly for some very basic debugging functionality?). In any case that is almost certainly a tiny fraction of the actual source code files.
 
Level 12
Joined
May 20, 2009
Messages
822
It took a team of paid programmers years to create WC3 and you want to do it again for free?!

To be fair, it took them years because they went through numerous different versions of the game. At least half of the development cycle has got to have been reworking and repurposing things for the changing ideas, so it's safe to say that actually coding the game as we know it today was a fraction of the entire development time.

If you want an example of a realistic time it would take to do this, take a look at OpenRA. The guys over there have built a fully functional C&C-style RTS engine in about 5 years. However if you were to take the hours they put into it without considering other time-consuming factors such as life stuff or a job, it would be about 2 years or so.

Anyway, yeah you're right about the licensing stuff though... As cool as it'd be to have more control over WC3, it's probably not a good idea just from that alone. Disregarding time constraints, cost, and other things.

Probably just a good idea to lock this topic now before it could cause a problem or I keep running my mouth on the subject.
 
To be fair, it took them years because they went through numerous different versions of the game. At least half of the development cycle has got to have been reworking and repurposing things for the changing ideas, so it's safe to say that actually coding the game as we know it today was a fraction of the entire development time.

If you want an example of a realistic time it would take to do this, take a look at OpenRA. The guys over there have built a fully functional C&C-style RTS engine in about 5 years. However if you were to take the hours they put into it without considering other time-consuming factors such as life stuff or a job, it would be about 2 years or so.

Anyway, yeah you're right about the licensing stuff though... As cool as it'd be to have more control over WC3, it's probably not a good idea just from that alone. Disregarding time constraints, cost, and other things.

Probably just a good idea to lock this topic now before it could cause a problem or I keep running my mouth on the subject.

No problem, it is justified. Warcraft 3 has a lot of potential that has been ruined by these closed limitations. It would be awesome to edit UI or add new things to it.
 
Level 8
Joined
Nov 29, 2014
Messages
191
Hello, I'm making graphic modification for WarCraft III based on the Nirvana mod.

The first demo is avaliable for download.
Installation:
1. Download Nirvana and unzip it to War3 folder.
2. Download RenderEdge and unzip it to War3 folder.
3. If you want to see the parallax mapping, replace Nir_Plugin_RenderCraft.dll
on (parallax)Nir_Plugin_RenderCraft.dll and delete "(parallax)".
Note: Parallax mapping does not work properly, but later will fix it.
More info: http://xgm.guru/p/wc3/155094 (All download links are available at this link)
I'm sorry, but the topic is only the Russian language.
 
Hello, I'm making graphic modification for WarCraft III based on the Nirvana mod.

The first demo is avaliable for download.
Installation:
1. Download Nirvana and unzip it to War3 folder.
2. Download RenderEdge and unzip it to War3 folder.
3. If you want to see the parallax mapping, replace Nir_Plugin_RenderCraft.dll
on (parallax)Nir_Plugin_RenderCraft.dll and delete "(parallax)".
Note: Parallax mapping does not work properly, but later will fix it.
More info: http://xgm.guru/p/wc3/155094 (All download links are available at this link)
I'm sorry, but the topic is only the Russian language.

Sorry, it's not working. It says no Game.dll found, it is there. I tried running it as an administrator..

Edit: It worked now, but there was no sky and it lagged like 1 frame per second.
 
Level 8
Joined
Nov 29, 2014
Messages
191
I don't know because of what is happening. I tried to run it on Windows XP and Windows 10 and it worked in 60 frames per second (although I have NVIDIA NVS 5200m video card), the sky is displayed correctly.
Do you used ReShade? And could you show me an ingame screenshot?
 
I just extracted Nirvana and RenderCraft then setup the files to run as administrator. I am running Windows 10. It gave me No Game.dll error and when I clicked on it in Windowed mode it ran the game, it was very laggy and there was no sky. Otherwise if it was running in full screen it crashed.

rsseh1.png

j6im4i.png


Btw, I wanted to personally thank you for doing this mod, it is very amazing! It would be interesting to create something with this one day. Wonder how long it took you to do something like this.. :)
 
Thank you)
Have you did this?


Do you use Enb or other d3d8/d3d9 mods at the same time?

I use d3d8/d3d9.dll in my Warcraft 3 folder. You can see why in my signature Warcraft 3 in Windows 10.

Yes i did set those programs to run as administrator. I also tried removing d3d8/d3d9.dll and the sky showed up. The no Game.dll error was still there and the game was very laggy.
 
Level 8
Joined
Nov 29, 2014
Messages
191
One more person tested this mod and he also complained about the low fps, but other tester didn't get such a problem. I really don't understand where there may be a problem :(

Edit:
Have you tried to remove the restriction on the maximum fps in the Registry Editor?
Freezes fade with time? Maybe it's just this problem:
Because of my laziness, after loading the game starts to load too much garbage => appear notable freezes, but only for a few seconds.
At the beginning, with the appearance of the primitives in the camera field of view, are beginning to load and compile shaders, so the game begins laggy.

In addition, you can try to disable anisotropic filtering of textures:
- find ParallaxOcclusionMapping.fx in "Shaders" folder
- find "Texture samplers", change MinFilter and MagFilter values to "LINEAR" and comment out "MaxAnisotropy = 16;"
 
Last edited:

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,197
One more person tested this mod and he also complained about the low fps, but other tester didn't get such a problem. I really don't understand where there may be a problem :(
Probably with graphics API. WC3 was Direct3D 8. Any advanced graphics are likely newer features. Chances are how they implement it mixed with all the Direct3D 8 code is not optimal.

In any case this is all illegal.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
ENAleksey, I read the features of your project and they're truly awesome. Did you consider going open source?

Giving more options to JASS at wc3 runtime is always great.

I don't know how deep you are in the source code of wc3's graphics but I made a 1.27 wish list where some more points could be found :).

In any case this is all illegal.
Silence!
 
Level 8
Joined
Nov 29, 2014
Messages
191
Ezekiel12, Yes, open source will come. I don't use the source code of wc3, I use a hook to add support Direct3D9: yes, it is illegal, but it's cool!

Dr Super Good, to minimize workload, I turned off the original wc3 d3d8 rendering of primitives, materials, textures and lights.
 
But why do I not have this problem?

Now I'll try to make a version that works with only one effect, and look if will be freezes.

I noticed that when I look in the horizon it starts to lagg. When I am looking on the ground or closer to the ground it is very smooth.

Maybe it's the problem with far distance? However, this mod is truly amazing and It looks beautiful! I thought that this was Skyrim at first.

xoo409.png
 
Level 8
Joined
Nov 29, 2014
Messages
191
Well, if there are important updates, I'll write about them here.
But I will create the project on The Hive Workshop, only when everything will work as I want.

Ezekiel12, did you try to run mod by yourself?

You can download the new version with corrections and additional effects from here.
Note: To use this version, you must have already installed a previous.

Updated the main download link, the update includes.
 
Last edited:
Level 12
Joined
Mar 13, 2012
Messages
1,121
Ezekiel12, did you try to run mod by yourself?
Yes I tried but I'm getting strange errors (I set all .exes to admin execution). It's probably because I did something wrong. If you create a thread with up-to-date english instructions I would ofc test again.

Some more things here: Put everything of your mod in one folder inside the wc3 folder. Also add version numbers to that folder. This is not necessary in the first alpha phase but later you will dodge a lot of problems and confused questions of users this way. Installation and removal should be dead simple.
 
Last edited:
The mod is likely drastically raising the system requirements for the game. It is possible some modern weak systems or older systems will have bad performance as a result.

Yes. Absolutely! I can play Far Cry 3 on maximum settings yet I can't play a graphically enhanced Warcraft 3 mod. Sounds logical. :)

Yes I tried but I'm getting strange errors (I set all .exes to admin execution). It's probably because I did something wrong. If you create a thread with up-to-date english instructions I would ofc test again.

Step 1 - Download Nirvana and put files into your Warcraft 3 installation.

Step 2 - Download RenderEdge and put files in your Warcraft 3 installation, overwrite if necessary.

Step 3 - Set Nirvana.exe, SharpCraft.exe, EasyHook32Svc.exe and EasyHook6432Svc.exe to run as administrator.

Step 4 - Run [RenderEdge] Start.bat or [RenderEdge] Start -window.bat to launch Warcraft 3.

Step 5 - Done!

and.. here is the video.



 
Level 12
Joined
Mar 13, 2012
Messages
1,121
Step 1 - Download Nirvana and put files into your Warcraft 3 installation.

Step 2 - Download RenderEdge and put files in your Warcraft 3 installation, overwrite if necessary.

Step 3 - Set Nirvana.exe, SharpCraft.exe, EasyHook32Svc.exe and EasyHook6432Svc.exe to run as administrator.

Step 4 - Run [RenderEdge] Start.bat or [RenderEdge] Start -window.bat to launch Warcraft 3.

Step 5 - Done!

Downloaded from exactly those sources, did exactly what you said. Same error as in the previous post.

I'm running Windows 10 64-bit Home edition on DirectX 12.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
Ezekiel12, do you use this d3d mod?
I do not. Might be of help, if I try to start Nirvana.exe this happens. I can not move in there and it's prone to crashes. Also mind that I did not install wc3 normally, I just copied the version from my other computer via USB stick.

Would you like to have a list of all files in my wc3 folder?
 
Level 8
Joined
Nov 29, 2014
Messages
191
Ezekiel12, could you show a screenshot of the full list of files from your war3 folder?

Some more things here: Put everything of your mod in one folder inside the wc3 folder. Also add version numbers to that folder.
Later I will rid of files depending from Nirvana. And mod would contain only two launchers (start war3, start WorldEditor), graphical .dll file, a folder of SharpCraft and folder with textures, effects/shaders. Most likely it will all be located in a separate folder.

BTW, it is the earliest video (without using shaders):
 
Last edited:
Level 8
Joined
Nov 29, 2014
Messages
191
Try to cut blizzard.ax file, and run game without it. Do you set admin rights for Nirvana.exe?

Don't start Nirvana.exe without "-loadfile", because I turned off rendering of wc3 graphic, so you can't see game menu, only this:
sc6yhk.png
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
Deleted blizzard.ax, still the same problem. Nirvana.exe has admin rights set under properties, for some reason it does not show in the icon.

Awaiting further instructions^^.
 
Status
Not open for further replies.
Top