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.