some minecraft installs not working under windows 10
loordgek opened this issue ยท 154 comments
There's nowhere near enough information to debug this...
Case 1
Summary: newest: nvidia driver set installed DVR which makes MC crash. Should be solved by downgrading/uograding driver is by disabling that DVR service.
Case 2
I suspect there is another problem with windows 10 + java 8u60 which can be fixed by downgrading java.
- http://support.feed-the-beast.com/t/pixel-format-not-accelerated/18085
* version info N/A - http://forum.feed-the-beast.com/threads/launcher-crashing-before-game-can-launch.108927/
* 9.17.10.4229, Card name: Intel(R) HD Graphics 3000 - http://support.feed-the-beast.com/t/the-launcher-wont-load-any-of-the-packs/18449/3?u=jikuja
* GL info: ' Vendor: 'Intel' Version: '3.1.0 - Build 9.17.10.4229' Renderer: 'Intel(R) HD Graphics 3000'
I'll update this thread if getting more reports.
I can confirm Case 2.
Specs:
- Windows 10 Pro release, most recent (10.0.10240)
- JRE 1.8.60 x64
- Intel HD Graphics 3000
- Intel drivers from May 2015, obtained trough Windows Update (9.17.10.4229)
I don't see how these are LWJGL issues. The first Case describes a java runtime crash, which would suggest other software is conflicting with the java runtime. The second case uses WDM drivers provided by Microsoft, since Intel has dropped support for Intel HD 2000/3000 series chipsets at Windows 8. I'm actually surprised the game runs at all with them, since Microsoft is notorious for it's limited OpenGL support. That being said, it is strange that different java versions affects whether the game can run. This however sounds like a bug with java, rather than LWJGL.
The second case is actually split. There are two issues.
- quite often what you say is true. Some old intel GPUs are not supported on Windows 10 by Intel anymore.
- however, there is a second issue, where if you use LWJGL with the Intel GPU together with java 8u60, it won't work, while older versions of java work - like 8u25, which Minecraft normally ships with.
The difference is the JRE version used.
I have seen several cases in tech support where users with 2000 and 3000 series (on Windows 10) suddenly can't play the game any more. While we figured the Microsoft driver updates were the cause, this may a more plausible explanation.
Oh yea, should have mentioned that.
I'll experiment and see from which version of java on it stops working.
Updating to 1.8.65 or .66 (a hotfix) didn't fix the problem.
Downgrading to the previous version, 1.8.51, and it works.
So yea, 1.8.60 is the first version that gives the error.
Confirmed with many individuals in the tech support chat. Downgrading java or using native launcher works, for all Sandy Bridge chipset processors.
Does mojang track this? This might be problem as soon as they want to update bundled JRE.
Every inquiry I've seen in regards to updating the bundled JRE version has suggested that, unless there's really a need to do so, it's not going to happen. That isn't to say it won't ever be updated, but there would have to be sufficient grounds for that to occur. I will bring this up on the bug tracker, and perhaps elsewhere, should an update be in the works, or occur. That being said, it isn't overly complicated to change the executable path to use an older installed version of java either.
I've just confirmed this for Arrandale (1st gen) HD graphics too. The user though was also having graphical issues once changing java versions was done. It is unclear whether this is solely an issue for that user though.
I guess we'll have to do the same thing in MultiMC. Bundle a known good
version...
On Mon, Nov 9, 2015 at 7:19 PM, CubeTheThird notifications@github.com
wrote:
I've just confirmed this for Arrandale (1st gen) HD graphics too. The user
though was also having graphical issues once changing java versions was
done. It is unclear whether this is solely an issue for that user though.โ
Reply to this email directly or view it on GitHub
#119 (comment).
Still an issue with 8u71:
https://paste.ee/p/0t7Qb
Your graphics card doesn't support Windows 10. This is a well known fact you can find it anywhere. (And this isn't lwjgl's fault)
Solution: Get a new graphics card or find new drivers that support Windows 10
20 jan. 2016 kl. 08:36 skrev Petr Mrรกzek notifications@github.com:
Still an issue with 8u71:
https://paste.ee/p/0t7Qbโ
Reply to this email directly or view it on GitHub.
Why those intallatons work with java versions older than 8u60?
@Subtleoliver That is not MY issue. I run linux exclusively and have a 980ti.
You might want to tell the possibly thousands of users of MultiMC affected by this. Tell them that their laptop/graphics card is obsolete and that they should drop hundreds of dollars on one that doesn't suck. Send them the money while at it :)
Now you might see the issue. It only started happening with a JAVA update. It is a purely software problem. The same drivers, OS and hardware combination works just fine with 8u25.
So, I blame Java, but see LWJGL as the place to fix this, because getting Oracle to fix anything seems like a huge uphill battle.
I'll dig into this once I don't have to quell other raging flames...
It works fine with Java 8u25 cause that's the version it's supposed to run. (It's packaged with h the launcher). If that's the problem then just run it with the version it's supposed to.
21 jan. 2016 kl. 02:38 skrev Petr Mrรกzek notifications@github.com:
@Subtleoliver That is not MY issue. I run linux exclusively and have a 980ti.
You might want to tell the possibly thousands of users of MultiMC affected by this. Tell them that their laptop/graphics card is obsolete and that they should drop hundreds of dollars on one that doesn't suck. Send them the money while at it :)
Now you might see the issue. It only started happening with a JAVA update. It is a purely software problem. The same drivers, OS and hardware combination works just fine with 8u25.
โ
Reply to this email directly or view it on GitHub.
This logic is all backwards. I am not a user. This is a LWJGL or Java bug. I am not interested in a workaround, I already know them. And walking users through these takes away from other things.
Is lwjgl designed for java 8u25 or what is logic here? Please read support tickets before commenting and giving unsourced opinions about well known facts.
Here is one fact: https://bugs.mojang.com/browse/MC-297 the bug is known by mojang. Someone with hardware access should test this, write SSCCE and send it to intel/MS(theird driver) and oracle(their code caused regression, why?).
No minecraft is.
21 jan 2016 kl. 13:03 skrev jikuja notifications@github.com:
Is lwjgl designed for java 8u25 or what is logic here? Please read support tickets before commenting and giving unsourced opinions about well known facts.
Here is one fact: https://bugs.mojang.com/browse/MC-297 the bug is known by mojang. Someone with hardware access should test this, write SSCCE and send it to intel/MS(theird driver) and oracle(their code caused regression, why?).
โ
Reply to this email directly or view it on GitHub.
@Subtleoliver
So what you want to tell us is to use a way outdated version of Java?
There have been quite a few critical Java-updates released since then and Mojang still ships with a version from 2014, because obviously the newer versions would prevent many people from playing.
This matter should be high priority, and a fix must involve not to "update your graphics card", but to fix the underlying problem in java trough whatever means.
That is the version minecraft "want" to use. It is packaged with the
launchers for mac and windows.
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Det
hรคr e-brevet skickades frรฅn en virusfri dator som skyddas av Avast.
www.avast.com
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
2016-01-21 14:58 GMT+01:00 4rz0 notifications@github.com:
@Subtleoliver https://github.com/Subtleoliver
So what you want to tell us is to use a way outdated version of Java?
There have been quite a few critical Java-updates released since then and
Mojang still ships with a version from 2014, because obviously the
newer versions would prevent many people from playing.
This matter should be high priority, and a fix must involve not to
"update your graphics card", but to fix the underlying problem in java
trough whatever means.โ
Reply to this email directly or view it on GitHub
#119 (comment).
oliver
Stating that Mojang does not fix the problem and employs a workaround adds nothing to the discussion. I think everyone already knows that. The workaround is IMHO not acceptable.
The way I see it, no actual investigation of the issue has been done. We have workarounds like replace your hardware or use outdated java versions.
The hardware in question has perfectly well working drivers on Windows 10 and supports OpenGL 2.1. It even works with Minecraft as long as you do not update java.
Someone with that hardware, a Java and/or native debugger and the required skill should replicate the issue and find out what the root cause is. Then it should be fixed or worked around in a way that does not compromise user security.
I do not have the hardware. Otherwise, I'd already have done it.
I've been able to reproduce this on Windows 10, HD 2000 on a Sandy Bridge i5, driver version 9.17.10.4229. OpenGL (version 3.1) works on all JVMs up to 8u51. Starting from 8u60, the Intel OpenGL driver refuses to load. Specifically:
- The OpenGL ICD works just fine.
- If the Intel iGPU drives the main display, the OpenGL ICD will try to load the Intel OpenGL driver. This fails on 8u60+.
- The OpenGL ICD will then try the software OpenGL 1.1 driver that comes with Windows. That driver works, but of course LWJGL fails with the infamous "Pixel format not accelerated" error.
The machine I'm testing on also has a discrete Nvidia GPU which I had disabled for the above. Interestingly, when enabled with a secondary monitor attached to it, the ICD will again first try the Intel driver and when that fails it will load the Nvidia one successfully. This works even with no monitor attached to the Nvidia GPU.
I'm certain that this is not an LWJGL bug. The latest LWJGL 2.9.4 nightly build behaves the same and so does LWJGL 3 (which uses GLFW for window/context creation). So, there's something in Java 8u60 that the Intel driver doesn't like. I went through the release notes and all changes that made it into the u60 release, but couldn't find anything relevant.
In order to debug this, I changed the LoadLibrary("opengl32.dll")
call (the ICD) to LoadLibrary("ig4icd64.dll")
(the Intel driver). This failed with ERROR_DLL_INIT_FAILED
: A dynamic link library (DLL) initialization routine failed. I then used Dependency Walker to profile the same LWJGL program running under Java8u51 and Javau60. The logs, up to loading ig4icd64.dll and after removing all hex values for easier comparison:
The 8u60 log ends with the DLL_PROCESS_ATTACH
error. It looks like that the Intel OpenGL driver tries to call D3DKMTOpenAdapterFromHdc
, which probably fails, then it returns 0 to the OpenGL ICD. As for JVM differences, what's interesting is the function Java_java_lang_ProcessEnvironment_environmentBlock
which is only called in 8u60. I'll investigate more tomorrow and keep you updated.
Java 8u60 seems to update sun.usagetracker.UsageTrackerClient class to call System.getEnv() which will call Java_java_lang_ProcessEnvironment_environmentBlock: https://gist.github.com/anonymous/100ec231a734cd97eca1
I wonder if calling System.getEnv() with < java 8u60 before opening display triggers same behaviour. Sadly can't test (yet) because I have not installed windows 10.
Tried different JVMs:
- Azul Zulu 8u51, works.
- Azul Zulu 8u60, fails. Zulu is based on OpenJDK and there's no Java_java_lang_ProcessEnvironment_environmentBlock, so it must be something else.
- IBM J9 based on 8u51, fails. This complicates things.
I wonder if calling System.getEnv() with < java 8u60 before opening display triggers same behaviour.
Tried with 8u51, it doesn't.
Are you running any antivirus? What happens if you disable it?
What really happens is still a mystery... and it happens inside the intel
driver, by the looks of it.
See:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx
LoadLibrary will call DllMain, which can return 1 or 0. 0 causes
LoadLibrary to fail and return NULL . I can't run the driver, but I can
look at what happens in DllMain.
... I wonder if I still have my old tools :)
On Fri, Jan 22, 2016 at 2:41 PM, Ioannis Tsakpinis <notifications@github.com
wrote:
I wonder if calling System.getEnv() with < java 8u60 before opening
display triggers same behaviour.Tried with 8u51, it doesn't.
โ
Reply to this email directly or view it on GitHub
#119 (comment).
If I can get my hands on those files, that is :/
On Fri, Jan 22, 2016 at 3:16 PM, Petr Mrรกzek peterix@gmail.com wrote:
Are you running any antivirus? What happens if you disable it?
What really happens is still a mystery... and it happens inside the intel
driver, by the looks of it.See:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx
LoadLibrary will call DllMain, which can return 1 or 0. 0 causes
LoadLibrary to fail and return NULL . I can't run the driver, but I can
look at what happens in DllMain.... I wonder if I still have my old tools :)
On Fri, Jan 22, 2016 at 2:41 PM, Ioannis Tsakpinis <
notifications@github.com> wrote:I wonder if calling System.getEnv() with < java 8u60 before opening
display triggers same behaviour.Tried with 8u51, it doesn't.
โ
Reply to this email directly or view it on GitHub
#119 (comment).
Are you running any antivirus? What happens if you disable it?
No antivirus running. Also tried with Windows Defender disabled, no change.
I cloned the 8u60 repository and went through all commits since 8u51. I couldn't find anything that might be causing this (I have no familiarity with the code though). This looks more like a bug in the Intel driver to me. There's probably a good reason most major OpenGL applications (e.g. browsers) have blacklisted HD 2000/3000 on Windows 10.
If I can get my hands on those files, that is :/
What files do you need?
At least that library it is failing to load. Having a list of reasons why the DllMain could return 0 would help.
This might end up being too big of a task, simply because it could do a LOT of things in there. But I won't know until I look.
Graphics drivers in general employ some really dodgy heuristics for deciding just what to provide to a process... Maybe it's something silly like env variables or command line options not propagating to the loaded libraries.
Minecraft specifically does this to trigger some black magic in the intel driver:
https://github.com/MultiMC/MultiMC5/blob/develop/logic/minecraft/MinecraftInstance.cpp#L99
https://bugs.mojang.com/browse/MCL-767
Considering the issue only occurs with the very specific setup of Windows 10 + 1st and 2nd gen Intel HD graphics, it's possible the issue is introduced in either the specific Intel driver version Microsoft provides, or in some modification to the drivers they made.
Found the "problem". The java.exe manifest changed in 8u60 to include support for Windows 10. The workaround:
- Extract the manifest with Mt.exe.
- Remove the Windows 10
supportedOS
tag. - Either update java.exe with the changed manifest (using Mt again), or use it as an external manifest (requires a registry change).
Needless to say, this is an Intel driver bug/feature.
Posted this on their driver bug report forum:
https://software.intel.com/en-us/forums/graphics-driver-bug-reporting/topic/607695
Hopefully, it will be noticed and resolved.
So, @tahg did some investigation on that file and found that it calls GetVersionEx and then checks if the dwMajorVersion is 5 or 6 and fails if it isn't.
For reference, the structure and values GetVersionEx returns:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724834(v=vs.85).aspx
Windows 10 has dwMajorVersion of 10. GetVersionEx will get the version from the manifest, if it is present. Therefore if Java declares that it supports Windows 10, GetVersionEx will return dwMajorVersion 10. And the driver library fails to load.
I get the feeling Intel won't do anything about it, since those chipsets are EOL. It also sounds like it's intended (on their end).
If this is intended, it's malicious. Looks like a plain old bug to me :)
I'll check if we have contacts at Intel, maybe we can get this fixed.
same problem after windows 10 installation can't play minecraft anymore :(
We obviously have the same problem with JOGL:
https://jogamp.org/bugzilla/show_bug.cgi?id=1278
@Spasi Thank you for your accurate investigation.
The approach I'm going to use is create a native binary that replaces
javaw.exe and does not declare the windows 10 compatibility.
On Tue, Aug 9, 2016 at 12:57 PM, Julien Gouesse notifications@github.com
wrote:
We obviously have the same problem with JOGL:
https://jogamp.org/bugzilla/show_bug.cgi?id=1278@Spasi https://github.com/Spasi Thank you for your accurate
investigation.โ
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#119 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMaPmjURuIBcHg1nFfHFaknHEXFA1hDks5qeF0SgaJpZM4FlHbp
.
Any progress on this. As you can no longer download older versions of java... only the newest version.... And I am afraid of accidentally updating java,
You would have to contact Microsoft about this not Intel.
At windows 10 Intel stopped supporting Intel(R) HD Graphics 3000 so Microsoft made there own drivers for it to work. Or so I have heard.
Yes Intel stopped supporting 1st and 2nd generation HD graphics before the windows 10 release. If however your graphics drivers carry over during the upgrade process, they can be used as long as java doesn't identify the OS as being windows 10, which occurs with java 8 update 60 and newer versions. Prior versions of java do not recognize windows 10. Currently, the native launcher provided for the game bundles java 8 update 25, so using it should not cause this from occurring. If however newer versions of java are used, or the drivers become invalidated/replaced, the JVM will crash.
I use multimc and this affects other lwjgl games as well.
On Sep 11, 2016 8:41 PM, "CubeTheThird" notifications@github.com wrote:
Yes Intel stopped supporting 1st and 2nd generation HD graphics before the
windows 10 release. If however your graphics drivers carry over during the
upgrade process, they can be used as long as java doesn't identify the OS
as being windows 10, which occurs with java 8 update 60 and newer versions.
Prior versions of java do not recognize windows 10. Currently, the native
launcher provided for the game bundles java 8 update 25, so using it should
not cause this from occurring. If however newer versions of java are used,
or the drivers become invalidated/replaced, the JVM will crash.โ
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#119 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACCNyVfn8T9JvptNAzmHIHtoMCMHFAF1ks5qpK3GgaJpZM4FlHbp
.
If possible, you can point the executable the application runs to the java bundled with the native launcher.
Or you can just download the older versions... they are on the Oracle
website, you just need to register:
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
Or, I've repacked the relevant non-installer versions here:
https://files.multimc.org/downloads/jre-8u51-windows-i586.zip
https://files.multimc.org/downloads/jre-8u51-windows-x64.zip
On Mon, Sep 12, 2016 at 3:46 AM, CubeTheThird notifications@github.com
wrote:
If possible, you can point the executable the application runs to the java
bundled with the native launcher.โ
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#119 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMaPuTLqEg_YaX8CeiHe8_a6z7BGrcZks5qpK7rgaJpZM4FlHbp
.
Intel HD Graphics Minecraft Fix by MST
This patch fixes 'Pixel Format Not Accelerated' and 'No OpenGL context found in the current thread' issues related to Intel HD Graphics integrated video cards.
Description of problem can be found here:
https://bugs.mojang.com/browse/MC-297
#119
https://software.intel.com/en-us/forums/graphics-driver-bug-reporting/topic/607695
https://help.mojang.com/customer/en/portal/articles/928791-problematic-frame-or-pixel-format-not-accelerated
MultiMC/Launcher#1283
This patch is dedicated to 1st generation Intel HD Graphics running under Windows 10 with Java 8u60 and newer.
It is not required if you install Java to 8u51 and older or you are using Windows 8.1 and older.
There are some sources saying that this is Mojang fault, others says this is LWJGL fault finally others that this is Intel fault.
In fact this is because Intel video card drivers are not fully compatible with Windows 10. If you do not want to launch MC under outdated Java there is also possibility to remove Win10 compatibility from Java binaries (java.exe and javaw.exe) manifest, using mt.exe tool. It is described above.
But this must be done after every java upgrade, so this method is painful.
Root cause is inside Intel drivers, but of course we never receive official fix for it as long these graphic cards are End Of Life and Intel will not release updated drivers in future.
I'm using 1st generation video card 'Intel HD Graphics' (PCI\VEN_8086&DEV_0046). Latest video driver is v15.22.58.2993 (8.15.10.2993) for 32-bit, v15.22.58.64.2993 (8.15.10.2993) for 64-bit. Drivers were released at 01/30/2013. Moreover those drivers are not dedicated to Win10, and to use it with Win10 small modification within *.inf is required. If anyone is interested in please visit this page: http://brenton.nom.za/forum/showthread.php?tid=82
Also to use Intel video configuration tool .NET 3.5 must be installed. How .NET 3.5 can be installed under Win10 you can read here: http://www.techgainer.com/offline-install-net-framework-3-5-windows-10-8-easily/
Anyway, as long it's Intel fault, and we will never have official fix, I did it by myself.
Fix is dedicated to following video drivers mentioned above:
32-bit zip
32-bit exe
64-bit zip
64-bit exe
Fix tries to be generic so it can work with previous drivers as well (tested also with v15.22.54.2622 (8.15.10.2622) for 32-bit and v15.22.54.64.2622 (8.15.10.2622) for 64-bit WinOS).
There is possibility that it will work with other Intel HD drivers, for example with 2nd and later Intel video cards generation, but I don't know.
If anybody have the same issue and my fix doesn't help, please point me from where I can download drivers for it and I probably will be able to fix it too.
I attached patch works both for 32-bit and 64-bit systems. All you have to do is apply patch when game is not running. No need to reboot Windows, just launch game again and enjoy. Of course fix must be applied again if you will upgrade or change drivers, but as long Intel will newer release new driver for my card in future, I will never have to do it again.
Fix patches ig4icd32.dll file in case of 32-bit WinOS or ig4icd64.dll in case of 64-bit. This can be also applied on older WinOS like Win8.1, Win8, Win7, but for those it makes no sense. It won't crash anything but it fixes Win10 issues only.
You will be able to use Java 8u60 and newer to run any version of Minecraft under Win10.
I tested it under Win10 Anniversary, with Java 8u112 (currently latest one) and Minecraft 1.11 (currently latest one).
This patch is not dedicated to Minecraft only. There may be also helpful for other OpenGL products which suffer like MC, but I do not know any others at the moment.
As I wrote it is generic patch but I'm not able to check if it works also for other drivers than mine.
So if it doesn't work for your Intel driver, and your is also EOL, please write from where I can download it or simple attach only ig4icd32.dll or ig4icd64.dll file depending on which OS you are using (those files are placed within C:\Windows\system32\ folder), and I should be able to fix it too.
Thanks to Spasi and peterix to help me figure out how to fix it. Your hints were very helpful.
PS. Fixes were done using 'diablo2oo2's Universal Patcher 2.26.1'. I know that some AV may treat it as some kind of malicious software, but it is false-positive. If you don't believe me, just don't use it. I won't distribute prepatched dll files as long my fixes are generic.
Regards to all MC fans,
MST
Intel.HD.Graphics.Driver.Win10.32-bit.&.64-bit.Fix.by.MST.zip
The above has been identified as malware by over half the detectors on Virus total here:
https://www.virustotal.com/en/file/49fcc4aadc471f613cfd361cd2528b4ed094ba868ad2eaa9d970640424e2d876/analysis/1479767411/
We have already rejected and removed the files and posts from the Minecraft bugtracker.
Ehhh, that's why I wrote PS. Believe what you want. diablo2oo2's Universal Patcher itself is often detected as malicious software, becouse it is usually used to produce cracks. Also it's patches/loaders are usually recognized as virus, becouse of it's bad fame. That's all. If you don't believe me just run it within any sandbox, virtual OS to check what it do.
Similar false positives may occur using for example AutoIt or if you will pack exe with some non-popular exe packer/cryptor.
Remember, this tool patches dll file within system32 folder. Please answer yourself if this will be detected as potential trojan or not? Answer is: always yes. So if you do not trust me, forget about it.
Probably soon someone will start distribute prepatched dll files, so fearful users will be able to use it without using patcher. But only original patcher is generic and includes legendary mod music :)
I could use other patch generator with serach and replace feature or simply code it by myself in java or C++, but I like DUP and nothing will change it.
About VirusTotal, the best, true description is by Malwarebytes: RiskWare.FilePatcher. This is indeed file patcher. Patch may do something good or not. Robots are not enough to decide about results, so every source of patching, specially widely used by cracking scene will banish.
The answer to "Should I trust some random guy on the internet providing random executables?" should always be no. It doesn't matter what patcher you try and use to ship what ever changes you are trying to include, we have no validation of what you are patching into the drivers and what the patches do, even if we did we would still advise against it.
Before this goes any further though there isn't any point in discussing it, your posts will be removed at some point.
You're absolutely right. No reason to trust me. Use it or forget about it, waiting for Intel fix it which will not happen in case of EOL products. You can always use outdated java with a lot of security issues or modify java binaries manifest. You decide.
Regards.
Would you mind sharing what exactly you are patching in the dlls?
Pather? You just need to make your own driver DLL with some instructions
replaced with NOP. It's a basic crackme. The only question is how to force
feed it to the OS.
On Tue, Nov 22, 2016 at 8:17 AM, Erik Broes notifications@github.com
wrote:
Would you mind sharing what exactly you are patching in the dlls?
โ
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#119 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMaPiLC3xwOlIaaFxeSwCy_Pm-EcVOrks5rApcggaJpZM4FlHbp
.
You could boot in Linux and replace the dll. But Windows might die and stay that the driver is not signed
Sent from my iPad
On Nov 22, 2016, at 9:12 AM, Petr Mrรกzek notifications@github.com wrote:
Pather? You just need to make your own driver DLL with some instructions
replaced with NOP. It's a basic crackme. The only question is how to force
feed it to the OS.On Tue, Nov 22, 2016 at 8:17 AM, Erik Broes notifications@github.com
wrote:Would you mind sharing what exactly you are patching in the dlls?
โ
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#119 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMaPiLC3xwOlIaaFxeSwCy_Pm-EcVOrks5rApcggaJpZM4FlHbp
.โ
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
First of all what patching means? Is means modifying binary files to work in different kind of manner than original.
Is possible without having source code? Yes, but you have to do it at assembler level. As long all native binaries are compiled to machine code, with instructions to processor (opcodes), you are able to view and modify code as long you are have enough knowledge and tools: debugger or disassembler you like. What debugger or dissasembler will do for you it analyses machine code and replaces processor instructions with readable assembler code. Of course it sometimes is not so easy when target file is packed/protected.
Let's back to our issue. As peterix and Spasi wrote, problem starts with Java 8u60 because Oracle decided to declare that java binaries are Win10 compatible. This influence what value Windows API call GetVersionExA returns. When executable mafifest declares Win10 compatibilty, then this routine will return 10 for dwMajorVersion. If not - it will return 6 which means it is Win8.1 till WinVista compatible. For WinXP till Win2k it will return 5. Full possibilities are listed on site mentioned by peterix:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724834(v=vs.85).aspx
peterix found if this API call return 5 or 6 driver dll is loaded successfully, if 10 - it fails to load, so no OpenGL context is initialised and MineCraft says that there is no OpenGL context which can render view.
What I did I opened ig4icd32.dll and ig4icd64.dll under debugger, then searched for GetVersionExA call routine. This API is called only from one place. Here is part of original code for ig4icd32.dll:
10071D56 8D0424 LEA EAX,DWORD PTR SS:[ESP]
10071D59 50 PUSH EAX ; /pVersionInformation = NULL
10071D5A C74424 04 94000000 MOV DWORD PTR SS:[ESP+4],94 ; |
10071D62 FF15 A050A110 CALL DWORD PTR DS:[<&KERNEL32.GetVersionExA>] ; \GetVersionExA
10071D68 85C0 TEST EAX,EAX
10071D6A 75 09 JNZ SHORT ig4icd32.10071D75
10071D6C 33C0 XOR EAX,EAX ; Default case of switch 10071D87
10071D6E 81C4 94000000 ADD ESP,94
10071D74 C3 RETN
10071D75 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
10071D79 83F8 01 CMP EAX,1
10071D7C 74 EE JE SHORT ig4icd32.10071D6C
10071D7E 83F8 02 CMP EAX,2
10071D81 75 2C JNZ SHORT ig4icd32.10071DAF
10071D83 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4] ; ig4icd32.10000000
10071D87 83E8 05 SUB EAX,5 ; Switch (cases 5..6)
10071D8A 74 1A JE SHORT ig4icd32.10071DA6
10071D8C 83E8 01 SUB EAX,1
10071D8F 75 DB JNZ SHORT ig4icd32.10071D6C
10071D91 8B0D B88DB710 MOV ECX,DWORD PTR DS:[10B78DB8] ; ig4icd32.10CB4290; Case 6 of switch 10071D87
10071D97 C601 04 MOV BYTE PTR DS:[ECX],4
10071D9A B8 01000000 MOV EAX,1
10071D9F 81C4 94000000 ADD ESP,94
10071DA5 C3 RETN
10071DA6 8B15 B88DB710 MOV EDX,DWORD PTR DS:[10B78DB8] ; ig4icd32.10CB4290; Case 5 of switch 10071D87
10071DAC C602 03 MOV BYTE PTR DS:[EDX],3
10071DAF B8 01000000 MOV EAX,1
10071DB4 81C4 94000000 ADD ESP,94
10071DBA C3 RETN
First column is memory offset, second are machine opcodes, third is human readable assembler code which represents opcodes, last one is analyser comments.
So as you may see at offset 10071D62 we have API call to function GetVersionExA. If it will succeed, then conditional jump at 10071D6A will be executed and we will go to offset 10071D75. Now have a look at offset 10071D83. dwMajorVersion is moved to EAX CPU register, then it is substracted by 5. Next we have conditional jump which will execute or depending on result. From Java 8u60 memory address from which EAX is assigned DWORD PTR SS:[ESP+4] contains 10 instead of 6 or 5. All you need to do is change this code to fill 6 info memory address DWORD PTR SS:[ESP+4], then it will be moved to EAX at offset 10071D83 and you're done. No matter what dwMajorVersion will be returned from API we gonna cheat driver's code that it's 6. To achieve my scenario I will overwrite part of non important code from offset 10071D75 till 10071D81. It probably checks dwMinorVersion value. So modified code can look like this:
10071D56 8D0424 LEA EAX,DWORD PTR SS:[ESP]
10071D59 50 PUSH EAX ; /pVersionInformation = NULL
10071D5A C74424 04 94000000 MOV DWORD PTR SS:[ESP+4],94 ; |
10071D62 FF15 A050A110 CALL DWORD PTR DS:[<&KERNEL32.GetVersionExA>] ; \GetVersionExA
10071D68 85C0 TEST EAX,EAX
10071D6A 75 09 JNZ SHORT ig4icd32.10071D75
10071D6C 33C0 XOR EAX,EAX ; Default case of switch 10071D87
10071D6E 81C4 94000000 ADD ESP,94
10071D74 C3 RETN
10071D75 B8 06000000 MOV EAX,6
10071D7A 894424 04 MOV DWORD PTR SS:[ESP+4],EAX
10071D7E 90 NOP
10071D7F 90 NOP
10071D80 90 NOP
10071D81 90 NOP
10071D82 90 NOP
10071D83 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4] ; ig4icd32.10000000
10071D87 83E8 05 SUB EAX,5 ; Switch (cases 5..6)
10071D8A 74 1A JE SHORT ig4icd32.10071DA6
10071D8C 83E8 01 SUB EAX,1
10071D8F 75 DB JNZ SHORT ig4icd32.10071D6C
10071D91 8B0D B88DB710 MOV ECX,DWORD PTR DS:[10B78DB8] ; ig4icd32.10CB4290; Case 6 of switch 10071D87
10071D97 C601 04 MOV BYTE PTR DS:[ECX],4
10071D9A B8 01000000 MOV EAX,1
10071D9F 81C4 94000000 ADD ESP,94
10071DA5 C3 RETN
10071DA6 8B15 B88DB710 MOV EDX,DWORD PTR DS:[10B78DB8] ; ig4icd32.10CB4290; Case 5 of switch 10071D87
10071DAC C602 03 MOV BYTE PTR DS:[EDX],3
10071DAF B8 01000000 MOV EAX,1
10071DB4 81C4 94000000 ADD ESP,94
10071DBA C3 RETN
So I modified code starting from offset 10071D75 to move 6 into EAX register, then move EAX into memory location DWORD PTR SS:[ESP+4] which will be processed later. I removed rest of code by inserting NOPs, then starting from offset 10071D83 original code begins. It moves value from memory location back to EAX, next substract, then conditional jump will be executed or not. That's all you have to do. Before you ask: did you have to overwrite part of original code? No, I also might look for some code cave, jump there, restore original code, then add own, and jump back. Next question: why I did not do it in other way, maybe more simply, because I'm moving 6 to EAX, then from EAX to memory, to move the same value back from memory to EAX. Yes, it could be achieved in many ways. I could load 6 directly into memory location, but it was my first idea. If you like to change it then do it.
Finally what you have to replace within ig4icd32.dll are opcodes. You have to search for hex string: 8B 44 24 10 83 F8 01 74 EE 83 F8 02 75 2C then replace it with hex string: B8 06 00 00 00 89 44 24 04 90 90 90 90 90. Well, you may code this kind of search replace routine by your own using your favourite programming language or simply use any patch generator to do it with zero code. There are many patch generators, which can for example compare original file with patched one to generate ready to use patch. Some of them have rich functionalities some not. In this case simply search & replace was used. Usually the same piece of code can be found within different drivers, so there is a chance that other dll's will have the same and search & replace will find the same opcodes then replace it with working code. I tested two different dlls and both of them had the same piece of code. I do not guarantee that other will also work, but hey, right now I learnt you how to do it, so DIY. As patch generator I choose DUP. Alternatives? For example Tola's Patching Engine, Universal Patcher. Of course instead of create patcher you can share hex strings to find and replace by your own using your favourite hex editor. But it is not user friendly.
So I attached patchers both for 32-bit and 64-bit dll, which unfortunately may be detected as some kind of trojan, hack tool or patcher. Why? Because patch generators are often used to generate for example cracks. Patcher code from generator is mainly the same so it is easy to apply some pattern to every generated patch and say it may be unwanted tool. This is why you should never 100% trust in results like virustotal produces. It is suggestion but not final result. Before you will banish it, prove this is really malicious software. If you are not sure and do not have knowledge how to check it, then you can do search & replace by your own without my patcher.
Because of false-positive on virustotal Mojang JIRA moderator '[Mod] Mustek' removed my solution from issue: https://bugs.mojang.com/browse/MC-297. You may judge if it was good or bad reason, but this is fact. I won't try to add comment to this bug tracking system again, but it may be sad that official bug tracking site nuked it, suggesting to downgrade Java or update drivers. Hey, there will no newer drivers for these video cards anymore. And you probably know when you will stuck at Java 8u51 you may face with some security issues which higher JVM implementations may solve. Again, you decide.
Regards,
MST
The only question is how to force feed it to the OS.
You can do it at runtime because this dll file is not part of core driver code and it is not used / locked all the time. Just stop MC before you apply it, and run patcher with admin rights.
i am not realy in this thing but does this help ??
https://wiki.skullsecurity.org/.dll_Injection_and_Patching
Quoting the Java distribution licensing terms:
C. LICENSE TO DISTRIBUTE SOFTWARE. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the README File, including, but not limited to the Java Technology Restrictions and Limitations on Redistribution of these Supplemental Terms, Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce and distribute the Software, provided that (i) you distribute the Software complete and unmodified and only bundled as part of, and for the sole purpose of running, your Programs
So, the other option is to run Java using JNI from a custom native executable that doesn't have the manifests. You avoid 'modifying the Java distribution' issue that stripping the manifest from the original exe would pose, while fixing the problem.
- I have this on my 'TODO tree', but it's a big tree.
- It would need a 64bit and 32bit version, for 64bit and 32bit Java.
- I'm not sure how compatible it would with alternative Java implementations... any ideas on how well is the JNI interface defined?
@peterix
My solution do not modifies any part of Java binaries. Only Intel delivered dll file which sits inside whole driver package is patched. Of course most probably modification of it is also not authorised, but due to fact it applies to EOL product, and help solve in my opinion popular issue, I think it is ok.
But if you're thinking about some generic java binaries manifest workaround indeed creating own exe wrapper, which will launch JVM server using jvm.dll may work. In fact what you will have to do is code java.exe or javaw.exe by yourself. You will have to parse parameters to pass it to JVM, etc. I'm not sure if it is easier than patch driver dll once.
I think it's easier than explaining how to patch a driver to people who
don't understand computers.
On Tue, Nov 22, 2016 at 11:37 PM, Marcinosoft notifications@github.com
wrote:
@peterix https://github.com/peterix
My solution do not modifies any part of Java binaries. Only Intel
delivered dll file which sits inside whole driver package is patched. Of
course most probably modification of it is also not authorised, but due to
fact it applies to EOL product, and help solve in my opinion popular issue,
I think it is ok.But if you're thinking about some generic java binaries manifest
workaround indeed creating own exe wrapper, which will launch JVM server
using jvm.dll may work. In fact what you will have to do is code java.exe
or javaw.exe by yourself. You will have to parse parameters to pass it to
JVM, etc. I'm not sure if it is easier than patch driver dll once.โ
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#119 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMaPlcKwGK1zhQ6xlhkCZApYS-UA0HPks5rA265gaJpZM4FlHbp
.
Really?
- Download patch from post above:
- Unizp, run it, then push Patch button.
That's all. Do you think it is difficult? If anybody can download and run MC, then will be able to do it as well.
But some advanced users might want to know what magic is behind this patch, so I wrote small tutorial about it. It can be also usefull for those who are more advanced and want to do it yourself. Who knows, maybe someone will begin his journey called reverse engineering :)
You forgot steps to advice how and why disable antivirus and actual steps for doing that. Also what happens if windows decides to check digital signature of the dll?
@jikuja No need to disable your antivirus, just exclude the patcher from being judged, how you do with all things that give false-positives.
Well then change my comment to "You forgot steps to advice how and why exclude the patcher from being judgeds and actual steps for doing that. Also what happens if windows decides to check digital signature of the dll?"
Same questions and documentation requirements still apply with the change. Average end user does not know how to disable AV or exclude files
Do you mind that now I should switch to learn end users how to exclude specified file or disable temporary their AV if needed? Forget about it. Google for it if you need. It's you AV software, you should know how to do it. Also please note that non all major AV marked it as malicious software. For example Microsoft Defender, Kasperky, McAfee, Symantec, Panda, TrendMicro says it is ok. What do you think about them. Are thay defective?
About signing drivers: these drivers are not signed by Intel originally, so your comment is out of place.
Nobody asked you to learn and document that thing and at least asking to write documentation was not intent of my earlier comment.
I was just pointing that your steps were oversimplified and usage of hacked drivers is not as easy as you described. It's hard to compare two different solutions if the hardest steps for end user are being left out from the comparison.
Information about drivers not being signed was new for me. Never bothered to check, I've been using 8u51 as a fix.
I'll probably give this a try today.
If this works, it would be pretty good news.
The fact that Mojang ships Minecraft with a way outdated version of Java is kinda sad imo. Do they still use v28? At least it's Java8...
Java 8u25 in stable vanilla and java 8u51 in new beta version.
At least the beta is only 5 critical security patches behind, compared to the release's 8...
I got the Intel DLLs and solved the bug, using a modified version of @Marcinosoft's patch
Intel_OpenGL_Win10_9.17.10.4459_Fix_x64.zip
File | Original | Modified |
---|---|---|
ig4icd32.dll | 8B 44 24 10 83 F8 01 74 EE 83 F8 02 75 28 | B8 06 00 00 00 89 44 24 04 90 90 90 90 90 |
ig4icd64.dll | 8B 44 24 30 83 F8 01 74 ED 83 F8 02 75 2E | B8 06 00 00 00 89 44 24 24 90 90 90 90 90 |
ig7icd32.dll | 8B 44 24 10 83 F8 01 74 EE 83 F8 02 75 28 | B8 06 00,00 00 89 44 24 04 90 90 90 90 90 |
ig7icd64.dll | 8B 44 24 30 83 F8 01 74 DD 83 F8 02 75 23 | B8 06 00 00 00 89 44 24 24 90 90 90 90 90 |
Warning: Update JRE to Latest Version or the driver will crash.
Patch Instructions: Intel_OpenGL_Patch.zip You can use the x64dbg debugger
I corrected my patcher to be more generic and cover Intel HD Graphics 3000 drivers too. No more separate patcher for 32 and 64-bit Win10. Now patcher checks for files existence and is able to patch both of them, so here is one for both. If anybody will find Intel driver which is not patchable by this patcher, please let me know.
Intel.HD.Graphics.Driver.Win10.32-bit.&.64-bit.Fix.by.MST.zip
Regards,
MST
Hi guys! :)
I got the patch working with installing 9.17.10.4459 version driver from here: http://www.catalog.update.microsoft.com/Search.aspx?q=9.17.10.4459
It starts with latest Java version, thanks! :) But the original problem still exists, Minecraft is lagging and the IGP sleeps on 650Mhz, won't go up to 1100Mhz, is this happening just for me? Same in fullscreen and windowed mode, that problem doesn't show under Linux, 100-130FPS at the same place. Is it possible to somehow force IGP to 1100Mhz? Tried to load some shaders which working on Linux, the result is OpenGL errors in chat, no shadows, black sky, etc, and more lag, 5-10FPS.
@UDPSendToFailed You can back to your original Driver and install this
OpenGL_Fix_PHDGD_Omega_5.0.zip
Thanks, its working, but the 650Mhz issue still happens with low FPS... Time to use Linux? I seen somewhere, the Intel driver doesn't recognize Minecraft as game, and won't change frequency. Intel will not update or fix it. :/ I know some about patching drivers in OS X, changing frequency and usage thresholds, VRAM sizes, etc, but Windows is much different.
If your drivers are incorrectly installed or broken (possibly due to a windows update), the workaround/fix won't fix the drivers. That will most likely require a system downgrade, or using Linux instead.
Tested it with Windows 7, 8.1 and now 10, with drivers from manufacturer's site, Windows Update, all PHDGD versions, same problem at all variations, the GPU won't go up to 1100Mhz, it doesn't detect Minecraft as a game. :/
As i see, others have this problem too: https://communities.intel.com/thread/42832
Hmm... I never heard about PHDGD mod drivers for Intel video cards before. I checked drivers for 1st generation cards called "PHDGD Quantic C3 (64bit)".
Unfortunatelly they are almost 100% the same as original, genuine Intel drivers v15.22.58.64.2993 (8.15.10.2993) which can be downloaded from:
https://downloadcenter.intel.com/download/22521/Intel-Graphics-Media-Accelerator-Driver-Windows-7-64-Windows-Vista-64-exe-?product=97497
What's the difference?
Well *.inf was modified to allow install driver under Win10 OS (everybody can do it using instructions I wrote few posts above), there are a few configuration changes in registry (which can be also applied to Intel drivers), and exe utilities was modified. For example ig4icd32.dll and ig4icd64.dll are the same, so pixelformat issue will also exist. I do not really know what PHDGD drivers differs from original genuine Intel drivers but it seems almost nothing. Maybe for other than 1st gen cards there are real improvements.
Thanks for reply @Marcinosoft! :) So it will be better to use latest drivers (9.17.10.4459). Is it possible to fix the frequency bug? I have found something, randomly, on small maps, and ESC menu it steps frequency up, attached video. Driver or Minecraft problem or simply wtf?
First of all, performance issues are not connected with my patch. It's separate issue.
I'm not an expert but in case GPU core clock it seems to be maintained by hardware/driver/BIOS/video BIOS itself.
Why sometimes GPU decides to run high and sometimes not it's Intel's know-how.
You can read about it here:
https://communities.intel.com/thread/27203
For example let's concentrate on my "Intel Core i5-520" processor:
http://ark.intel.com/products/47341
You can read that this processor has 500Mhz "Graphics Base Frequency" (Graphics Base frequency refers to the rated/guaranteed graphics render clock frequency in MHz).
But "Graphics Max Dynamic Frequency" is 766.00 MHz (Graphics max dynamic frequency refers to the maximum opportunistic graphics render clock frequency (in MHz) that can be supported using Intel HD Graphics with Dynamic Frequency feature).
So, GPU core clock fluctuates and it's normal behaviour, and it should fluctuate from 500Mhz to 766Mhz. In fact using GPU-Z I see only about 370Mhz in game, while at Minecraft main menu screen when game window is maximized I see about 766Mhz. When I load Minecraft world then core clock goes back to 370Mhz. It's really annoying.
What you can try to do is overclock your GPU using official Intel tool called "Intel Extreme Tuning Utility". Here is small introduction:
https://www.reddit.com/r/pcmasterrace/comments/3hjonw/psa_you_can_overclock_intel_hd_graphics_for/
And here is the tool link:
https://downloadcenter.intel.com/download/24075/Intel-Extreme-Tuning-Utility-Intel-XTU-
I have 1st generation Intel HD Graphics, so I can't check how it works. For me only way to change something is using BIOS setting. Unfortunately I have no GPU settings inside my BIOS at all :(
I even wasn't able to increase dedicated video memory which is 64MB by default in my case.
I can double it using registry (search for IncreaseFixedSegment value to change it from 0 to 1), so now Windows declares to have 128MB dedicated video memory.
Here is video tutorial how to do it:
https://www.youtube.com/watch?v=Q15mxEsw6K4
Moreover using Intel video control panel I changed 3D settings to performance instead of quality, and in power setting selected maximum performance both when laptop is connected to AC or use battery.
This is what you should also try to do. Description is here:
http://www.pvladov.com/2013/01/improve-intel-hd-graphics-performance.html
You should also know, that Intel implemented within OpenGL driver performance optimizations to improve user experience for specified apps/games. In my case (Intel HD Grahics driver v15.22.58.2993) I found it for "Minecraft", "SolidWorks 2011" and "Chronicles of Riddick - Dark Athena". I found that for newer GPU drivers there are improvements for the same and even more products.
Let's concentrate on Minecraft. I don't know how this feature works but is seems it looks for process "javaw.exe" then it checks it's command line arguments to search for "minecraft.exe". If it will be found then some OpenGL optimizations are on. In newer drivers Minecraft process may be also running using "java.exe", not only "javaw.exe". That's why Mojang added strange looking Minecraft JVM parameter "-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump". The only goal was to include "javaw.exe" and "minecraft.exe" strings somewhere in command line to allow Intel OpenGL driver to detect this process as Minecraft game, and turn on some optimizations. I tried to understand when and how this magic feature really recognizes Minecraft process, but without success. In my case I'm almost sure that Minecraft is not recognized by OpenGL driver, event if JVM process includes "javaw.exe" and "minecraft.exe" strings. Maybe there is also another prerequisite to enable this hook, like process name (description) should be equal to "Minecraft" or maybe this is dedicated to native launcher only, I don't know. I'll try to investigate it more or just ask Intel how it really works. This is something what stopped to work properly after Mojang released launcher 1.6.2, which launched game in separate process. It worked fine for older launchers like 1.5.2. Intel's OpenGL driver wasn't ready for this change, and did not recognize second process as Minecraft game to turn optimizations on. I also do not know what sort of optimizations Intel can turn on, but it may switch GPU core clock to "Graphics Max Dynamic Frequency" continuingly for example.
You can read about it here:
https://communities.intel.com/message/200554#200554
https://bugs.mojang.com/browse/MCL-767
Yea, i know thats a separate problem. The laptop has unlocked BIOS, so DVMT sizes can be modified, but nothing about clocks. On other OSes, the clocks can be changed manually, on Linux with Intel GPU tools, on MacOS by changing some threshold percents in kernel extension (driver). If the driver won't do it automatically, maybe force to higher frequency by editing it? I really don't understand Windows drivers, MacOS is much easier. Intel XTU is just for desktop boards i think, does nothing here.
Using Java 7 up to and including update 79 works this around in my 64-bit Windows 10. (@Marcinosoft's patch Intel.HD.Graphics.Driver.Win10.32-bit.64-bit.Fix.by.MST.zip changed only SysWOW64\ig4icd32.dll and did not make Minecraft succeed).
Found out, if using shaders, it goes up to 1100Mhz, but FPS is low and shader won't work.
These shaders running well on Linux, without any error.
And here are some issues, if helps:
- Turning on coulds in optifine settings causes random crash
- ALT + TAB out from main menu always crashes mc
- OpenGL error 1281 and 1286 spamming in logs when i try to load shader or change texturepack
- Loading Minecraft takes 1-2 minutes, with SSD, on linux its 10-15 seconds
I think the Intel OpenGL driver is not loaded when running Minecraft, and it renders with CPU, is this possible?
Edit: It's on 1000-1100Mhz if rains, using Conquest texturepack, but still half FPS compared to Linux, and when rain stops, the lag starting...
Is this still working? because I have Mobile Intel(R) 965 Express Chipset Family or GM965 express with windows 10 pro 32bit with the latest version of java as of now but this tool is not working it's saying [ERROR] in the tool.
Can you fix it?
Yeap, it's working and confirmed with 1st generation "Intel HD Graphics" (VEN_8086&DEV_0046) and 2nd generation Intel HD Graphics 3000 (VEN_8086&DEV_0126) both on 32-bit and 64-bit Win10. Please note that patch is generic, so errors within patch logfile are normal, as long is searches for different files both for 32-bit and 64-bit. Please scroll log up to check if one of patch attempt was succeed. Or just apply patch then check if it works or not. If not, give me link where I can download drivers for GM965, then I will look at it.
I have serious doubts that this method will work for the 965GM chipset, as that one had its support discontinued in 2009. Even on a supported system (Windows 7 or older), it's known to not be able to run the game beyond Minecraft 1.7.2.
Yeah I had windows 7 before I installed 10, and with the latest driver from intel and latest java I could run any minecraft version fine.
I'm going to reinstall the driver and run the tool to see if it works, and if it doesn't I will give you the driver to see whats the problem.
So after reinstalling the driver from intel : Here and testing the game with and without optifine of course it didn't work, then I tried the patch it gave me this in the console:
`---START PATCHING---
[FILE CHECK]
Loading File:
C:\Windows\system32\ig4icd32.dll
File Exist Check : OK
OK
[SEARCH & REPLACE PATCH]
Loading File:
C:\Windows\system32\ig4icd32.dll
Nothing patched!
ERROR
[FILE CHECK]
Loading File:
C:\Windows\SysWOW64\ig4icd32.dll
File not loaded
ERROR
[FILE CHECK]
Loading File:
C:\Windows\system32\ig4icd64.dll
File not loaded
ERROR
[FILE CHECK]
Loading File:
C:\Windows\SysWOW64\ig4icd64.dll
File not loaded
ERROR
[FILE CHECK]
Loading File:
C:\Windows\system32\ig7icd32.dll
File not loaded
ERROR
[FILE CHECK]
Loading File:
C:\Windows\SysWOW64\ig7icd32.dll
File not loaded
ERROR
[FILE CHECK]
Loading File:
C:\Windows\system32\ig7icd64.dll
File not loaded
ERROR
[FILE CHECK]
Loading File:
C:\Windows\SysWOW64\ig7icd64.dll
File not loaded
ERROR
---PATCHING DONE---
`
then I tried the game (without restarting the PC or the launcher) with the latest java version and it still gave me the Pixel format not accelerated error with or without optifine so please can you fix this?
EDIT: I disabled my windows defender BTW
And this is my device Id for the graphics card (VEN_8086&DEV_2A02)
First two lines of log says that indeed patch found OpenGL driver but it was not able to patch it as long it probably is different than for video cards I mentioned above. Just give me few minutes to download your driver and fix it.
Ok thank you, take your time
Oh and this is the driver's page https://downloadcenter.intel.com/product/81508/Graphics-Drivers-for-Mobile-Intel-965-Express-Chipset-Family
Well, I tried to fix your driver, but it's really hard to guarantee if it works or not without having this device.
Just upack attached file to C:\Windows\System32\ as administrator, overwrite existing file, then let me know if it works or not. Scheme for this driver is similar but not the same.
Before unpacking rename file extension from txt to zip, as long I wasn't able to upload zip file directly. I don't know why:
ig4icd32.txt
Sorry for the delay because the difference in timezones :), but the good news is the files works perfectly without any problems with the latest version of java. Thank you very much, do you have any updates to the file or is this the final version?
EDIT: Does this patch affect performance or it's just to make the game run?
And also the game gives me this error:
Failed to load shader: minecraft:shaders/post/entity_outline.json ku: Invalid shaders/program/sobel.vsh: Couldn't compile vertex program: ERROR: 0:1: '' : Version number not supported by GL2
It's not because of the patch because this happened to me alot in windows 7 but I was wondering if the patch could fix this error. BTW this error is not affecting the game because I don't see performane issues from that error.
Good to know that it works. It's final version. Patch works exactly the same way. It forces to return dwMajorVersion = 6 instead of 10 as output of GetVersionExA API call. Nothing more was patched, so rest of the driver is absolutely the same. So this patch does not affect performace or any other issues.
Your error is quite common. As long Minecraft require at least card with OpenGL v2.1 support, and your card unfortunately supports OpenGL v2.0, you may face some kind of issues.
You can check your card OpenGL support with "OpenGL Extensions Viewer 3.37" tool. Do not use later releases because probably will crash on your device. Download glview337.exe from this site:
http://skablue.tistory.com/76
then install and run to check what OpenGL version your video card driver fully supports. If 2.1 is not fully supported then you're lucky that game runs at all :)
Thanks for your help! :)
@UDPSendToFailed here's something I've noticed just now when launching Minecraft using the bundled Java instead of the native java, could have a relation to your GPU clocking issue:
@Marcinosoft any idea what they do with this? (I have a vague inkling, but too vague to put into words.) Seems highly related to the issue at hand, but I could have misinterpreted this.