I've researched the same thing. I believe the original filename is hashed somehow, then the game uses that hash to find the appropriate file. In image_2d.bin, the game takes even takes it a step further. It takes a filename (like "BACKGROUND_SUB_GOLD01"), looks in image_2d_database.bin to find a corresponding filename (usually just lowercase, but can be anything), then hashes that to look for the file. I managed to redirect an image lookup that way.
I tried comparing the hashing algorithm to that of SARC (scroll down to GetHashFromName()), but I don't think it's the same one. Maybe it's similar and being calculated slightly differently.
I've identified some corresponding filenames and hashes (well, positively identified the first two and made reasonable guesses about the others):
num - hash - filename
130 - 21691D3B - wallpaper_main_top01
689 - CA5EA838 - wallpaper_main_top02
141 - 259CCD06 - wallpaper_main_top03
680 - C740D87F - wallpaper_main_top04
147 - 2882BD41 - wallpaper_main_top05
It's interesting how different the hashes can be when there's only a 1 bit difference.
For now, I've given up. I've started trying to map image filenames to their corresponding hash, but I don't think we'll ever have a complete list, even if we do figure out the hash. A lot of entries in image_2d_database point to "unused" (like BACKGROUND_SUB_GIFT01), so any file in the FARC that's not in the database we'll probably never know how to match. I would be interested to see your analysis of the message.bin FARC hashes to the actual filenames. This is something I considered doing myself. Knowing this would be especially useful, since it would allow me to make a string editor to complement my WIP script editor.
Right now, there's more we don't know that what we do, so you probably can't go wrong with anything. However, here are some things that we'd like to know:
-The placement data for scripts
-The script flow data
-Where starter moves/abilities are defined when changing the player or partner Pokemon in scripts. If changing the player/partner to a non-starter Pokemon, it will have the moves and ability of some other starter Pokemon. @psy_commando could tell you more about that.
-Cafe rewards
-Item data
-Pretty much everything else