Hi all,
I am currently facing some "problems" getting the correct resolution in Chameleon, but I'm not familiar with VBIOS patching, so let me explain it to you... ah, and I'm a software developer, so I already hacked the source code to investigate a little
First, my setup:
- MB: Asus Rampage II Extreme (x58 based)
- CPU: Core i7 920
- GFX: GTX 295 (first rev, 0x05e0, so double PCB I guess).
- Display: Dell 3008 (30", native res: 2560x1600).
The graphic card works really well with OSX (and I have native res in this case), but within Chameleon, I'm limited to 1600x1200 (I have tested that with the debug 'boot' file provided earlier in this thread).
Now, what I have done...
- Like, Vanilla, I was getting a "Chipset unknown" issue, so I have added the 0x34058086 value in the 'autoresolution.c' file, with a new enum value called CT_X58. I have also patched all the switch/case in the file, taking the same 'path' as for the X48 chipset.
- Also, my graphic card was not recognized. For some reason, the 'NVID' identifier that you are trying to match is in my case after the 512 bytes. So I modified the while loop "while (i < 512)" in "while (i < VBIOS_SIZE) // 512)"
But it seems, that the mode is somehow not correctly patched in the VESA tables. On the console, I see:
Mode 1024x768 -> 1024x768
I put some debug outputs inside nvidia_resolution.c, in the 'nvidiaSetMode' function, and when the patching of the first VESA table occurs. It seems that evenso the hActive is correctly set, it gets magically reseted afterwards, ie. if you put a PRINT() right after the "modeTiming[idx].hActive = *x;", everything seems to be in order. But if you put the same PRINT after the hActiveMinusOne patch, you get once again 1024.
Could it be that the VBIOS is not correctly opened? or read-only?