I still wish I knew how to *copy* the MS framebuffer, now that we know how to get the address. Sounds like something Ldots could do!
Because we know that the BIOS causes corruption in a certain area of memory but if you fb_clear the one PBL uses for the framebuffer there's no corruption... maybe there's a way to move the framebuffer a little further along in the memory or something? There's corruption with the one that has the output over the MS logo since I don't clear it...
Wow. This is a near-postless day for everybody but me
I got what I think is a good FadeOut routine but it won't work because of the framebuffer, hmm. It stops at the part where the fade buffer is copied to the framebuffer. All of this was taken from load.c and put into one big function.
CODE |
void FadeOut(PVOID Framebuffer) { PUCHAR FadeBuf = 0; FadeBuf = (PVOID)MmAllocateContiguousMemoryEx(640*480*4, MIN_KERNEL, MAX_KERNEL, 0, PAGE_READWRITE); int BufSize; BufSize = 640*480*4; int amount; amount = -2; memcpy(FadeBuf, Framebuffer, BufSize); printk(" TESTY!"); int i; for (i=0;i>-128;i--) { //FadeStep(FadeBuf,640*480*4,-2); for (i=0;i { if (*FadeBuf + amount < 0) { *FadeBuf = 0; } else if (*FadeBuf + amount > 255) { *FadeBuf = 255; } else { *FadeBuf += amount; } FadeBuf++; } memcpy(Framebuffer, FadeBuf, BufSize); printk("a"); } } |
Unfortunately, I've yet to see an "a" outputted. And when I try passing the location retrieved with MMIO_H_IN32, I never see "TESTY!" Nothing seems to happen when using the location retrieved with MMIO_H_IN32 as the Framebuffer, but when using framebuffer itself, all I get is green CRAPUPTION that takes up about 9/10 of the TV vertically. Here's a picture: