gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS development > Had screen swap BGpal every 60Hz on XL, blinking forever now

#177621 - LOst? - Wed Oct 03, 2012 8:05 am

Okay, I have a serious problem on two of my DSi XLs. They all ran the same code for 10 minutes or so, where the top screen flashes from black and orange every 60Hz, using a simple *BG_PALETTE ^= 0xF9A operation.

Before I noticed the blinking was less visible when I ran the code for shorter times. I had no idea it would get stuck forever, and the more I run it, the more visible it gets.

Now my DSes are flashing the display all the time, forever. From the time I start the DS, until I turn it off. Both of them. They even got 3 pixels on the bottom screen looking funny (because I changed BG colors on them at a much much slower rate, like once every 4 second).

Other than that, I have blanked out my DSes using the force blank for a very short time, just before I start blinking. So the LCDs might have been in a bad power state. Also the DSes were locked at V-Counter 202 for a that forced blank.





So how do I fix the problem? I also ran this at a DS lite and a DXi normal size, the same amount of time, at the same time, but they were not affected.



If I can't fix them, I'll probably buy new ones in the future, and keep these for blinking eye pleasure. This post serves as a warning, but also for asking help to fix the problem!

Do you have any "software" solution? Like blinking with a different color, or forcing blank at another time?


EDIT:
The area affected is the top screen, which seems to show each interleaved scanline one frame behind (thus the blinking).
It also has a collection of garbage looking pixels at the bottom screen, where I had console test updating every frame as well.
Having a V-Counter interrupt that is issued on scanline 203, and the interrupt writing V-Counter back to 202, to cause an endless loop until another external trigger will sync the DS might have caused this, but it was such a short time (4-16 frames).
I have tried other V-Counter configurations, to no solution! The blinking is very bad.

If you have ever noticed when you reset a DSi tapping the power button fast, the screen goes white, and sometimes you see garbage or white scanlines fading. Well, that's the short moment I can see the bottom screen's wierd group of pixels after the console text that was updating every frame for those 10 minutes I talked about earlier.
_________________
Exceptions are fun

#177623 - sverx - Wed Oct 03, 2012 10:02 am

LOst? wrote:
Okay, I have a serious problem on two of my DSi XLs. They all ran the same code for 10 minutes or so, where the top screen flashes from black and orange every 60Hz, using a simple *BG_PALETTE ^= 0xF9A operation.


You mean 10 minutes of flickering are enough to trash an LCD screen?!?!?! Now, that's scary! :| :| :|
_________________
libXM7 | NDS programming tutorial (Italiano) | Waimanu DS | A DS Homebrewer's Diary

#177624 - LOst? - Wed Oct 03, 2012 10:34 am

sverx wrote:
LOst? wrote:
Okay, I have a serious problem on two of my DSi XLs. They all ran the same code for 10 minutes or so, where the top screen flashes from black and orange every 60Hz, using a simple *BG_PALETTE ^= 0xF9A operation.


You mean 10 minutes of flickering are enough to trash an LCD screen?!?!?! Now, that's scary! :| :| :|


Yes!
And it happened on both my blue DSi XL that I bought in 2010 (firmware 4.4U), and my new green DSi XL that was bought in 2012 (firmware 4.4.4E).

Both going the same work at the same time.
So it is scary. Howevewr, I also did the same thing at the same time for the same time on one DSi normal from 2009, and one DS lite from 2007 and they never got affected. It can be the way the displays are designed on the XL, in combination with messing with (writing to) V-Counter register, and force blanking.

I have tried to change the V-Counter register values, and forced blank, and palette BG swapping to restore at least one DSi XL, with no success.

Writing to V-Counter register should be okay since official games do that, as long as it is in the range 202-212 (the source of this info cannot be confirmed legally though, but it is a good source).

If you wonder what I am doing trying to stop the V-Counter, it is just for a very short time, to sync multiple DSes so they will run on the same frame. It is only good for one thing, which was not possible to do with dswifi lib. So it sucks having 2 broken DSi XLs :(


EDIT:
The blinking is not caused by every scanline being shown from last frame, and that's nice. I have tested my very important HDMA demos and they are running nicely, even the top scanline works as it should.
I tried changing the backlight to different vlaues, and turned the system off, with no success. There was no success in having the system turned off for over an hour. I haven't been able to fix the problem with anything I can come up with.
Blinking ramains:

When I say blinking, I mean flashing from bright to dark (not completely black!) every frame.
_________________
Exceptions are fun

#177627 - LOst? - Wed Oct 03, 2012 12:43 pm

Better news:

Update: The LCD displays on both DSi XLs have improved visually after being powered down for 2 hours.
I wonder if they will recover fully. I will keep you updated. If they recover this slowly, if they will ever recover, I will keep you all informed!

The LCD displays are after all very big and kinda visually blocky compared to the normal DSi. Maybe they work differently. At least I see improvement. Still flashing a little.
_________________
Exceptions are fun

#177632 - sverx - Thu Oct 04, 2012 8:58 am

LOst? wrote:
Writing to V-Counter register should be okay since official games do that, as long as it is in the range 202-212 (the source of this info cannot be confirmed legally though, but it is a good source).


GBATek. Sure it is.
_________________
libXM7 | NDS programming tutorial (Italiano) | Waimanu DS | A DS Homebrewer's Diary