Well, there are two solutions here:
We could either use a filename database, which resolves shortnames to the full length names. Would mean including support for the database in every gp32 program (not supporting programs would simply just use the original shortened name), as well as writing specific pc software to update the file when new files were copies over using it. Would also mean you couldn't copy files over using an SMC Reader/Writer - they would all have to be copied over using the proper pc software that supports the database.
Or, we could go Microsoft's way - and that is to use additional entries in the directory structures for the extended parts of the names. Old programs not supporting the long filenames would show the shortened versions, whilst the supported software would show the full filename. This would would allow SMC readers/writers full use of the smc, and even show the long filenames on the PC when connected in such a way. However, it would require new software for the gp32 pc-link tool as well as a new pc pc-link tool, although you could ignore this and just use an smc reader/writer if you wished.
Both methods would allow filenames upto 255 character and both upper and lower case characters, along with other normally forbidden characters.
Personally, I prefer the second option, as it's more universal, and your not going to naff up the database as easily. The ability to read the entire card (including long names) to your pc for backup purposes is great.
To implement this would require simply calling different routines for listing the files in a directory and opening/creating files etc. May even be able to replace the old routines thereby meaning a simple modification and recompile could enable long filename support (I say modification as no doub't most programs now assume 8+3, and thus only allocate buffers big enough to hold filenames that size).