Difference between revisions of "Enables"

From wowdev
Jump to: navigation, search
(Created page with "'''Enables''' are how WoW rendering engine controls how the world is painted into your screen. We call it '''Enables''' because that's what the reverse engineering suggests. A...")
 
 
(4 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
This is how a normal render pipeline works for any WoW version (pseudocode).
 
This is how a normal render pipeline works for any WoW version (pseudocode).
 
  Wow.exe-> StormStaticEntryPoint
 
  Wow.exe-> StormStaticEntryPoint
Wow.exe-> OnPaint
+
  Wow.exe-> PaintScreen
Wow.exe-> PaintScreen
+
    Wow.exe-> OnPaint
Wow.exe-> CGWorldFrame::RenderWorld  
+
    Wow.exe-> CGWorldFrame::RenderWorld  
Wow.exe-> CGWorldFrame::OnWorldRender  
+
        Wow.exe-> CGWorldFrame::OnWorldRender  
Wow.exe-> CWorld::Render
+
        Wow.exe-> CWorld::Render
    WoW.exe.DayNightRenderSky
+
            WoW.exe.DayNightRenderSky
        WoW.exe.GxSceneClear
+
                WoW.exe.GxSceneClear
        WoW.exe.DNSky::Render
+
                WoW.exe.DNSky::Render
        WoW.exe.DNStars::Render
+
                WoW.exe.DNStars::Render
        WoW.exe.DNPlanet::Render
+
                WoW.exe.DNPlanet::Render
        WoW.exe.DNPlanet::Render
+
                WoW.exe.DNPlanet::Render
        WoW.exe.DNClouds::Render
+
                WoW.exe.DNClouds::Render
    WoW.exe.CWorldScene::RenderHorizon
+
            WoW.exe.CWorldScene::RenderHorizon
    WoW.exe.CWorldScene::RenderChunks
+
            WoW.exe.CWorldScene::RenderChunks
    WoW.exe.CWorldScene::RenderMapObjDefGroups
+
            WoW.exe.CWorldScene::RenderMapObjDefGroups
    WoW.exe.CWorldScene::RenderOcean
+
            WoW.exe.CWorldScene::RenderOcean
    WoW.exe.CWorldScene::RenderWater
+
            WoW.exe.CWorldScene::RenderWater
    WoW.exe.CWorldScene::RenderMagma
+
            WoW.exe.CWorldScene::RenderMagma
    WoW.exe.GxXformPop
+
            WoW.exe.GxXformPop
    WoW.exe.GxRsPop
+
            WoW.exe.GxRsPop
    WoW.exe.CWorldScene::RenderDoodads
+
            WoW.exe.CWorldScene::RenderDoodads
    WoW.exe.CWorldScene::RenderObjects
+
            WoW.exe.CWorldScene::RenderObjects
 
  Start rendering again
 
  Start rendering again
  
 
So as you can see, the stars, planets, clouds and environment stuff is first painted, then the map ADTs are drawn, RenderMapObjDefGroups are WMOs and get painted after ADTs, then every liquid is painted, after that every M2 (Doodads) are painted too, and finally NPC/Players (RenderObjects) as the last step.
 
So as you can see, the stars, planets, clouds and environment stuff is first painted, then the map ADTs are drawn, RenderMapObjDefGroups are WMOs and get painted after ADTs, then every liquid is painted, after that every M2 (Doodads) are painted too, and finally NPC/Players (RenderObjects) as the last step.
  
 +
== Enables ==
 
You should know that poking these Enables may crash your client, specially in early versions of the game (alpha, vanilla, tbc)
 
You should know that poking these Enables may crash your client, specially in early versions of the game (alpha, vanilla, tbc)
 
  
 
The following list of addreses can be used to find '''Enables''' in the mentioned versions:
 
The following list of addreses can be used to find '''Enables''' in the mentioned versions:
Line 75: Line 75:
  
 
WoW Alpha 0.5.3 is quite special on how Enables work, as you may see some rendering flags that doesn't exist in Vanilla and above.
 
WoW Alpha 0.5.3 is quite special on how Enables work, as you may see some rendering flags that doesn't exist in Vanilla and above.
[[File:M2 collision boxes.jpg|thumb|M2 Collision Boxes]]
+
[[File:M2 collision boxes.jpg|thumb|left|M2 Collision Boxes]]
 +
[[File:Looking for the "Lisa" wall.jpg|thumb|left|Looking for the "Lisa" wall]]
 +
[[File:Pikes over M2.jpg|thumb|left|Pikes over M2]]
 +
 
 +
One great thing about these Enables is that they can be used to illuminate some parts of WoW that weren't illumated properly, like Dun Garok in WoW 0.5.3.
 +
[[File:Dun Garok without lightning.jpg|thumb|left|Dun Garok ]]
 +
[[File:Dun Garok with lightning enabled (80999007).jpg|thumb|left|Dun Garok with lightning]]

Latest revision as of 13:04, 22 May 2020

Enables are how WoW rendering engine controls how the world is painted into your screen. We call it Enables because that's what the reverse engineering suggests. Altough you may see it called "rendering flags" too.

This is how a normal render pipeline works for any WoW version (pseudocode).

Wow.exe-> StormStaticEntryPoint
 Wow.exe-> PaintScreen 
   Wow.exe-> OnPaint
   Wow.exe-> CGWorldFrame::RenderWorld 
       Wow.exe-> CGWorldFrame::OnWorldRender 
       Wow.exe-> CWorld::Render
           WoW.exe.DayNightRenderSky
               WoW.exe.GxSceneClear
               WoW.exe.DNSky::Render
               WoW.exe.DNStars::Render
               WoW.exe.DNPlanet::Render
               WoW.exe.DNPlanet::Render
               WoW.exe.DNClouds::Render
           WoW.exe.CWorldScene::RenderHorizon
           WoW.exe.CWorldScene::RenderChunks
           WoW.exe.CWorldScene::RenderMapObjDefGroups
           WoW.exe.CWorldScene::RenderOcean
           WoW.exe.CWorldScene::RenderWater
           WoW.exe.CWorldScene::RenderMagma
           WoW.exe.GxXformPop
           WoW.exe.GxRsPop
           WoW.exe.CWorldScene::RenderDoodads
           WoW.exe.CWorldScene::RenderObjects
Start rendering again

So as you can see, the stars, planets, clouds and environment stuff is first painted, then the map ADTs are drawn, RenderMapObjDefGroups are WMOs and get painted after ADTs, then every liquid is painted, after that every M2 (Doodads) are painted too, and finally NPC/Players (RenderObjects) as the last step.

Enables

You should know that poking these Enables may crash your client, specially in early versions of the game (alpha, vanilla, tbc)

The following list of addreses can be used to find Enables in the mentioned versions:

['0.5.3']:
renderFlags: 0xA4046C,
renderFlagsDefault: 0x07104B73
['0.8.0']:
renderFlags: 0xA96C30,
renderFlagsDefault: 0x1F900B77
['1.1.2']:
renderFlags: 0x69FE7C,
renderFlagsDefault: 0x1F110F77
['1.8.0']:
renderFlags: 0x7EC93C,
renderFlagsDefault: 0x9F110F77
['1.12.0']:
renderFlags: 0x87B2A4,
renderFlagsDefault: 0x9F910F77
['2.4.3']:
renderFlags: 0x9A4510,
renderFlagsDefault: 0x1F104F73
['3.3.5a']:
renderFlags: 0x8D774C,
renderFlagsDefault: 0x1F104F73
['4.3.4']:
renderFlags: 0xA741A8,
renderFlagsDefault: 0x0001BFFF
['5.4.8']:
renderFlags: 0xE371D4,
renderFlagsDefault: 0x0001BFFF
['6.2.3']:
renderFlags: 0xF8422C,
renderFlagsDefault: 0x00011FFF
['7.2.5']:
renderFlags: 0x102FF3C,
renderFlagsDefault: 0x7FF7FFFF
['7.3.5']:
renderFlags: 0x1252CC0,
renderFlagsDefault: 0x7FF7FFFF

Where renderFlags is the location of Enables in the memory (WoW.exe + renderFlags) and renderFlagsDefault is the default value for that version, just in case you have to reset it.

Depending on the WoW version you may see a different rendering mode as none all modes are supported in all the clients. And in all years of development these have evolved for obviously reasons.

WoW Alpha 0.5.3 is quite special on how Enables work, as you may see some rendering flags that doesn't exist in Vanilla and above.

M2 Collision Boxes
Looking for the "Lisa" wall
Pikes over M2

One great thing about these Enables is that they can be used to illuminate some parts of WoW that weren't illumated properly, like Dun Garok in WoW 0.5.3.

Dun Garok
Dun Garok with lightning