Author Topic: STM32F407 & ILI9341 FSMC  (Read 11828 times)

0 Members and 3 Guests are viewing this topic.

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #25 on: December 30, 2021, 06:34:55 pm »
That's what I have been using (IDE).
It's been some years since I had any time to do STM programming.
Back in that day I was looking at projects so that I could understand how things worked.
In that time, MX was all that there was.
It's been difficult to get back to speed especially now that I'm older, but being retired gives me the opportunity to learn, although at a slower pace.
I don't use Platform IO and have no desire to do so again. I think it is bloated and an unnecessary resource hog. Just my experiences after trying it a while back.

After configuring the hardware for the LCD for about 12 or so times, each time enabling FSMC, clock sources, Timer 6, FATFS, IO pins and functions, I am down to 247 errors such as

Code: [Select]
void ili9341_DisplayOff(void)
{
  ILI9341_LCDMUTEX_PUSH();
  LCD_IO_WriteCmd8(ILI9341_SLPIN);    // Sleep
  ILI9341_LCDMUTEX_POP();
  LCD_IO_Bl_OnOff(0);
}
if you down to 247 errors then you still proving my point, you are  running to compile untested/random code into your project just for a lcd.

If you can blink a led using the HAL_ code then next step is confirming the FSMC setup , tthen writing the 3 ILI commands that activate most lcds. it's all doable in the basic file i gave you without USING ANYONE ELSES CODE.
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #26 on: December 30, 2021, 06:47:00 pm »
And I already said it complied on 2 different compilers and blinked the 2 LEDs and the LCD backlight.
I was then that you wanted to jump ship to Platform IO. I don't understand. If I've confirmed your code then where is the issue with doing as you ask? :-//
Voltage does not flow, nor does voltage go.
 

Offline DavidAlfa

  • Super Contributor
  • ***
  • Posts: 6183
  • Country: es
Re: STM32F407 & ILI9341 FSMC
« Reply #27 on: December 30, 2021, 09:38:04 pm »
Post your code folder if possible and I'll have a look.
I bet you're forgetting to add some folder to the compiler include path or something  like that.
Hantek DSO2x1x            Drive        FAQ          DON'T BUY HANTEK! (Aka HALF-MADE)
Stm32 Soldering FW      Forum      Github      Donate
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #28 on: December 31, 2021, 07:31:09 am »
* eevblog_files.zip (706.03 kB - downloaded 72 times.)
And I already said it complied on 2 different compilers and blinked the 2 LEDs and the LCD backlight.
I was then that you wanted to jump ship to Platform IO. I don't understand. If I've confirmed your code then where is the issue with doing as you ask? :-//
Apologies, was a stressfull day.
find attached a zipped project for CubeIDE , find the define EEVBLOG , this switches between your board and the 407 i'am currently using (MKSTFT3.5 3d printer panel)
comment out the define with // to switch to my board config,

it should work out of the box with maybe the lcd backlight (LCD_BL) polarity being wrong , this is a minimal config so no fancy gfx code included, just the absolute basics to config the fsmc, enable backlight , init screen and send blue to the buffer.

also the EEVBLOG defines will show you the changes needed between board types so in future it will be easier to use code from other sources and know what to change to port to your board of choice.


darkspr1te

« Last Edit: December 31, 2021, 10:05:46 am by darkspr1te »
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #29 on: January 01, 2022, 06:35:21 pm »
The code you kindly provided originally left a black screen.
So I checked PB1's and it was low.
After a few hours of rest, I found your comment and reversed the polarity on PB1 and commented out the if statements to avoid my confusion and the backlight was lit.
Fast forward 10 minutes and waiting a bit, the screen is not displaying anything.

The code that does display the test screens but nothing other than white screens of a timed nature is from: http://www.lcdwiki.com/res/Program/Parallel_Port/3.2inch/16BIT_ILI9341_MRB3205_V1.0/3.2inch_16BIT_Module_ILI9341_MRB3205_V1.0.zip The demo when unzipped lies at the path of: Demos\3.2inch_16BIT_Module_ILI9341_MRB3205_V1.0\1-Demo\Demo_STM32\Demo_0_STM32F407VET6. It is totally configured for another device, although labelled STM32F407VET6.

Not only that, but comments like "(GPIOA,GPIO_Pin_1); // initialize GPIOF9, F10 setting high, light off" don't do anything to inspire confidence or calm |O .
Also anything that was commented was in Chinese which required long sessions traversing back and forth between Notepad++, Google and the IDE to sort out.

I did find a YouTube video from Mutex Embedded, a guy in Morocco who showed how to do an 8 bit FSMC which although displaying text, symbols and a photo, it looks cartoonish like "3-1/2 bit color" but it does work to show anything but a white screen.
"STM32F4 Discovery board - Keil 5 IDE with CubeMX - Tutorial 21 - TFT LCD ili9341 (using FSMC)"
All other Chinese "examples" fail.

To compound my miseries, I made a bad mistake of using a common storage folder for all build hex files so I could use STMCube Programmer without searching for where the hex files were at. It destroyed several progressing "better" LCD hex files. This happened when I compiled an unrelated Arduino project, which used the common hex folder. I had the Arduino build output set to this folder. It totally wipes the folders contents out :'( .

I have relearned not to stress out "much" but it is a trait from when I was under the gun when I was still working and not retired as I am now.


Voltage does not flow, nor does voltage go.
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #30 on: January 01, 2022, 06:44:41 pm »
Here are some examples of the LCD I have from various vendors. All of these are direct pin-for-pin compatible direct plug in without wires to the STM32F407VET6 board. No shortened URLs as I like to see where I'm being directed to and I think you do too.

https://www.aliexpress.com/item/32977663446.html?spm=a2g0o.search0302.0.0.5c872274MSRVnp&algo_pvid=4479b8df-41d6-494e-8196-87a5b72acaa7&algo_exp_id=4479b8df-41d6-494e-8196-87a5b72acaa7-7

https://www.aliexpress.com/item/1005002383360549.html?spm=a2g0o.search0302.0.0.5c872274MSRVnp&algo_pvid=35ed8076-9f3d-42a4-9a96-7f0d81595ed2&algo_exp_id=35ed8076-9f3d-42a4-9a96-7f0d81595ed2-52

https://www.aliexpress.com/item/32662835059.html?spm=a2g0o.search0302.0.0.5c872274MSRVnp&algo_pvid=64ac694c-074c-4fad-84bb-f3b024c00560&algo_exp_id=64ac694c-074c-4fad-84bb-f3b024c00560-28

https://www.aliexpress.com/item/32991977705.html?spm=a2g0o.search0302.0.0.5c872274MSRVnp&algo_pvid=64ac694c-074c-4fad-84bb-f3b024c00560&algo_exp_id=64ac694c-074c-4fad-84bb-f3b024c00560-40

https://www.aliexpress.com/item/4000953664266.html?spm=a2g0o.search0302.0.0.5c872274MSRVnp&algo_pvid=64ac694c-074c-4fad-84bb-f3b024c00560&algo_exp_id=64ac694c-074c-4fad-84bb-f3b024c00560-48

The board and LCD pinout:
            ▄  ---------
         GND  | 1     2 | NRST/RST
FSMC_D15/PD10 | 3     4 | PD9/FSMC_D14
 FSMC_D13/PD8 | 5     6 | PE15/FSMC_D12
FSMC_D11/PE14 | 7     8 | PE13/FSMC_D10
 FSMC_D9/PE12 | 9    10 | PE11/FSMC_D8
 FSMC_D7/PE10 | 11   12 | PE9/FSMC_D6
  FSMC_D5/PE8 | 13   14 | PE7/FSMC_D4
  FSMC_D3/PD1 | 15   16 | PD0/FSMC_D2
 FSMC_D1/PD15 | 17   18 | PD14/FSMC_D0
 FSMC_NOE/PD4 | 19   20 | PD5/FSMC_NWE
FSMC_A18/PD13 | 21   22 | PD7/FSMC_NE1   
   T_SCK/PB13 | 23   24 | PB12/T_CS
  T_MOSI/PB15 | 25   26 | PB14/T_MISO
  PEN_IRQ/PC5 | 27   28 | PB1/LCD_BL
         N.C. | 29   30 | GND
         3V3  | 31   32 | GND
               ---------
« Last Edit: January 01, 2022, 07:03:37 pm by Quarlo Klobrigney »
Voltage does not flow, nor does voltage go.
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #31 on: January 01, 2022, 08:07:32 pm »
After adding-changing a few pins, clock sources and accepting migration to the newer FW version, I can report that now the screen is white at startup then goes to blue. See the MX report enclosed.

 
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #32 on: January 01, 2022, 11:23:44 pm »
After adding-changing a few pins, clock sources and accepting migration to the newer FW version, I can report that now the screen is white at startup then goes to blue. See the MX report enclosed.
That is good progress, can you post the changes you made or better repost the files then others can use the code.

darkspr1te
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #33 on: January 01, 2022, 11:45:33 pm »
Was your intention to make a blue screen?
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #34 on: January 02, 2022, 08:02:00 am »
My Intention was to get the most basic of lcd operations going without having the source filled with routines that would confuse you. further down the line you might find yourself hacking a commercial device for fun or profit and the most basic things you can do is 'hello world' via the device's various IO, in our case we made lcd blue(value was random) with the option of printf, you will note the syscalls.c file and the PUTC defines.
 we can now either take the FSMC setup routines, writing routines and transfer them to other projects or mod the other projects to reflect this setup.
I do see my mistake in the RCC/Clocks setup and now am wondering why mine worked but yours did not, it also explains why i was not getting the correct HAL_Delay values, small oversight but we got to the target anyway.

darkspr1te

 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #35 on: January 02, 2022, 11:41:18 am »
I still have no idea why the screen is blue from your code. Please explain.
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #36 on: January 02, 2022, 02:15:42 pm »
I still have no idea why the screen is blue from your code. Please explain.
In the routine lcd_fill_col() (line 206) it first sets the point of memory to write the data then using the next routine lcd_data16(colour); it fills the buffer memory with the value in colour

 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #37 on: January 02, 2022, 11:58:54 pm »
I still don't understand. No matter what HEX value is substituted, the screen remains blue. It's like when Henry Ford "invented" the first car, he said "you can get any color you want as long as it's black". It appears to be Intensity rather than Color.
I changed the LCD size to accommodate my 3.2" version 320x240.
Code: [Select]
void lcd_fill_col()
{
    uint16_t colour = 0xFFFF;
    lcd_setwindow(0,0,240,320); // 480,320

    lcd_cmd16(ILI9341_RAMWR);

    for (int x=0;x<320;x++)
        for (int y=0;y<240;y++) // for (int y=0;y<480;y++)
        {
            lcd_data16(colour);
            //HAL_Delay(100);
            //lcd_data16(colour);
        }
}
« Last Edit: January 03, 2022, 12:11:45 am by Quarlo Klobrigney »
Voltage does not flow, nor does voltage go.
 

Online SiliconWizard

  • Super Contributor
  • ***
  • Posts: 15178
  • Country: fr
Re: STM32F407 & ILI9341 FSMC
« Reply #38 on: January 03, 2022, 12:20:52 am »
I have used other ILI controllers, not this particular one. But I would guess that maybe the display initialization is not correct. For instance, the pixel format.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #39 on: January 03, 2022, 07:00:51 am »
I still don't understand. No matter what HEX value is substituted, the screen remains blue. It's like when Henry Ford "invented" the first car, he said "you can get any color you want as long as it's black". It appears to be Intensity rather than Color.
I changed the LCD size to accommodate my 3.2" version 320x240.
Code: [Select]
void lcd_fill_col()
{
    uint16_t colour = 0xFFFF;
    lcd_setwindow(0,0,240,320); // 480,320

    lcd_cmd16(ILI9341_RAMWR);

    for (int x=0;x<320;x++)
        for (int y=0;y<240;y++) // for (int y=0;y<480;y++)
        {
            lcd_data16(colour);
            //HAL_Delay(100);
            //lcd_data16(colour);
        }
}
That because i wrote this sample code in about fives mins and uploaded for you to "test" your lcd with, as a result i made a few mistakes, example is the routine lcd_data16() , if you look at the routine it actually accepts a uint8_t number, not the actual uint16_t number that was ment to be there , truth is this code was not ment for anything more that test the lcd/board.

original
Code: [Select]
void lcd_data16(uint16_t data)
{
*(uint8_t*)DataAccess = data;
}



fixed
Code: [Select]
void lcd_data16(uint16_t data)
{
*(uint16_t*)DataAccess = data;
}


there are more errors in my example code but the code itself was throw away, not ment for projects. Also some LCD's require the right mapping of colour be it BGR or RGB to be set, i didnt do this in the code.
you can see further details in the lcd manual ,

https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf

truth is there is more to configure when using ILI type screens , pixel format is just one of the many settings, 8-bit/16-bit mode is another.


darkspr1te

 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #40 on: January 03, 2022, 07:24:04 am »
Thanks for the reply and the fix. It now does various color shadings as it was intended.
My next favor, is where would I insert the hex code to display a photo.
I know how to convert the photo, but just where to insert it in main.
This would serve to test the LCD's ability to actually show a picture not in cartoon mode.
I never intended to use it for anything other than to learn how to do it on my own.
If you could do this I would appreciate it very much. I'm old and slow but determined. Thanks.
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #41 on: January 03, 2022, 10:56:34 am »
Thanks for the reply and the fix. It now does various color shadings as it was intended.
My next favor, is where would I insert the hex code to display a photo.
I know how to convert the photo, but just where to insert it in main.
This would serve to test the LCD's ability to actually show a picture not in cartoon mode.
I never intended to use it for anything other than to learn how to do it on my own.
If you could do this I would appreciate it very much. I'm old and slow but determined. Thanks.
if we create another routine and input the hex data (i assume from either a array in memory or a pointer in memory )
like so

Code: [Select]

uint16_t picture_array_data[] = {0,10,11,12,13,100,20};// array containing picture data (note example data provide, this wont work without being replaced with actual data )

void lcd_do_picture(void)
{
uint8_t count=0;//set counter to start of memory array

lcd_setwindow(0,0,480,320); //this set the window size for data write
#ifdef EEVBLOG
lcd_cmd16(ILI9341_RAMWR);//ILI9341 and ILI9488 use same values for this
#else
lcd_cmd16(ILI9488_RAMWR);
#endif

for (int x=0;x<320;x++)
for (int y=0;y<480;y++)
{
lcd_data16(picture_array_data[count]);//this take data from stored image location and outputs to the RAM register of LCD
count++;//increment count
}
}



this is a rough and dirty  bit of code that takes bitmap data in a memory array and outputs to the lcd starting at X=0,y=0 and continues until the end of the array,

you will need to make sure source image is in correct format when stored in the code, some conversion will provide RGB values as separate values
eg picture_data[] =(R,G,B) = 1 pixel value
but our lcd's need a combined value RGB as one number, eg 0xff00ff , this is also depended on the settings of your LCD, as per the data sheet you can switch between GBR values and RGB.


again  this is rough code i'am writing on the go and is not tested.


darkspr1te
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #42 on: January 03, 2022, 11:21:54 am »
Sort of.....
So where is the "injection point"? Is it in main, and how would it be called in the while loop?
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #43 on: January 03, 2022, 03:30:51 pm »
Sort of.....
So where is the "injection point"? Is it in main, and how would it be called in the while loop?

it should be in main , it's up to you if you want to call it once (in main) or many times ( while loop) ,

darkspr1te
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #44 on: January 03, 2022, 05:52:31 pm »
 :-+ :-+ :-+ :-+
Voltage does not flow, nor does voltage go.
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #45 on: January 04, 2022, 05:52:52 pm »
I haven't tried inserting the array code yet because I wanted to understand why all the demos had failed.

I always wondered why there were 2 sets of resistors, 3 together, that were stacked high and low on the backside of the TFT.
I got busy in the ILI9341 manual and the first thing I noticed is no bookmarks, After 30 minutes of my life wasted making chapter and sub chapters in the PDF, I had my answer for what those resistors could doing.
Taking out the latest in superb Chinese technology multimeter as I didn't want to goose the TFT with 9V from my old Fluke, I probed the top and bottom rails of the board to ground and 3V3.
What I found was very logical. The top rail was 3V3 and the bottom ground.
Finding the TFT's 40 pin FPC pinout explained further. The last few pins 37-40 were the IM[3-0] config bits.
On my panel, all IM bits are grounded. The resulting configuration is 8 bit mode D7-0, not 16 bit!
I'll try to move the 5K1 resistor on bit IM0 to 3V3, in accordance to the config chart to make it 16 bit.
 :popcorn:
« Last Edit: January 05, 2022, 04:59:40 am by Quarlo Klobrigney »
Voltage does not flow, nor does voltage go.
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #46 on: January 05, 2022, 04:50:43 am »
Well that was hardly productive.
After removing and replacing the 603 resistor on the right (IM0) and testing the solid color example,
I noticed it didn't work |O
So in order to test all configurations, I removed all the resistors and made a 6 x 2 header with 3 pins of the bottom row going to GND, then the other 3 going to 3V3.
The header was JB Welded to the LCD board.
The top row of 6 is broken into 3 sets of 2, i.e. #1 & #4 are IM0, #2 & #5 are IM1, and #3 & #6 are IM2.
In this way, adding a jumper to the left bank sends IM# to 3V3.
Adding it to the right sends IM# to GND.
I inserted something more visible in size: 3 1206 5K1 resistors, 1 in each IM# leg going to the LCD board original pad.

IM0 IM1 IM2 | IM0 IM1 IM2
 x   x   x  |  x   x   x
 x   x   x  |  x   x   x    Connect a vertical jumper on each IM# left or right position.
 |--3V3--|  |  |--GND--|    Only one jumper for each at a time.

Photo(s) to follow.  :popcorn:     It's time for :=\
« Last Edit: January 05, 2022, 05:06:10 am by Quarlo Klobrigney »
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #47 on: January 05, 2022, 02:51:45 pm »
Well that was hardly productive.
After removing and replacing the 603 resistor on the right (IM0) and testing the solid color example,
I noticed it didn't work |O
So in order to test all configurations, I removed all the resistors and made a 6 x 2 header with 3 pins of the bottom row going to GND, then the other 3 going to 3V3.
The header was JB Welded to the LCD board.
The top row of 6 is broken into 3 sets of 2, i.e. #1 & #4 are IM0, #2 & #5 are IM1, and #3 & #6 are IM2.
In this way, adding a jumper to the left bank sends IM# to 3V3.
Adding it to the right sends IM# to GND.
I inserted something more visible in size: 3 1206 5K1 resistors, 1 in each IM# leg going to the LCD board original pad.

IM0 IM1 IM2 | IM0 IM1 IM2
 x   x   x  |  x   x   x
 x   x   x  |  x   x   x    Connect a vertical jumper on each IM# left or right position.
 |--3V3--|  |  |--GND--|    Only one jumper for each at a time.

Photo(s) to follow.  :popcorn:     It's time for :=\

what was shown on lcd after the change ? a gray/white is normal the config has not set,

darkspr1te
 

Offline Quarlo KlobrigneyTopic starter

  • Frequent Contributor
  • **
  • Posts: 968
  • Country: pt
  • This Space For Rent
Re: STM32F407 & ILI9341 FSMC
« Reply #48 on: January 05, 2022, 07:37:00 pm »
Now that I'm awake I can think a little better. What was shown in all permutations of the jumper swaps was nothing but a blank white screen with some initial flashing but steady gray after a half second with no change after.
I'd like to know what R1 - R6 & R4 - R7 do. I still don't know.
Here are some photos of the "quick and still dirty" IM config test mod but they do work. They will be cleaned up later.
« Last Edit: January 05, 2022, 07:40:02 pm by Quarlo Klobrigney »
Voltage does not flow, nor does voltage go.
 

Offline darkspr1te

  • Frequent Contributor
  • **
  • Posts: 350
  • Country: zm
Re: STM32F407 & ILI9341 FSMC
« Reply #49 on: January 06, 2022, 09:44:03 am »
Now that I'm awake I can think a little better. What was shown in all permutations of the jumper swaps was nothing but a blank white screen with some initial flashing but steady gray after a half second with no change after.
I'd like to know what R1 - R6 & R4 - R7 do. I still don't know.
Here are some photos of the "quick and still dirty" IM config test mod but they do work. They will be cleaned up later.
this might shed some light on the issue, if you scroll down to where is states which resistors to swap for 8/16 bit mode, it shows in 16 bit data d0-d15 is used but in 8-bit d10-d17  is used, in my code i added a data shift to raise the lower 8 bit higher, you might need to remove that for 16 bit mode

darkspr1te
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf