3.95" LCD Module for Mega2560 - Only Half Screen

The how_to says:

17. If you do not have a standard Uno Shield, you can add a SPECIAL to the mcufriend_special.h
    Edit mcufriend_shield.h:  #define USE_SPECIAL
    Edit mcufriend_special.h: e.g. #define USE_MEGA_16BIT_SHIELD
    If your "special" is write-only,  the library can not read the ID.  It always returns 0xD3D3
	
18. Please run LCD_ID_readreg.ino to verify your non-standard wiring.  Paste the defines to a Forum message.

19. OPEN-SMART Shields have different wiring to regular Uno Shields:
    Edit utility/mcufriend_shield.h:  #define USE_SPECIAL
    Edit utility/mcufriend_special.h: #define USE_OPENSMART_SHIELD_PINOUT_xxx e.g. USE_OPENSMART_SHIELD_PINOUT_MEGA
    Edit MCUFRIEND_kbv.cpp:           #define SUPPORT_8352B

In your case you just need:

    Edit utility/mcufriend_shield.h:  #define USE_SPECIAL
    Edit utility/mcufriend_special.h: #define USE_MEGA_16BIT_SHIELD

Example sketches should compile without error. However most of the examples "guess" 0x9481 if readID() returns 0xD3D3 e.g.

    uint16_t ID = tft.readID();
    //    if (ID == 0xD3D3) ID = 0x9481; // write-only shield
    if (ID == 0xD3D3) ID = 0x9488; // USE THIS FOR YOUR SHIELD
    tft.begin(ID);

So you need to make sure that all of your sketches use 0x9488

Personally, I test the ID. Which means that the same sketch will work on a proper read-write Uno shield.

If you have compile errors I suggest that you re-install MCUFRIEND_kbv via the IDE Library Manager and re-edit the two utility files.

David.