Now for the palette tricks!
There is a routine called every frame, like the one that updates the animated tiles graphics. This one is at 15:C420. It explicitly looks for tilesets by number. Tilesets 8,A,B do one thing (Whale, Tower, Giant), and tileset 9 (Land of monsters) does another thing. The code does some surgery to manipulate very specific color slots in specific palettes, but pulls the colors to use from tables in ROM.
All of the addresses listed below refer to lists of 8 colors, 2 bytes each. So they are each 16 bytes. Time is used to index all of them. The game does something like move to the next slot every 4 frames, I believe. Update - one of them is 16 entries long and goes twice as fast as the others.
For tilesets 8,A,B: 14:F7D6 (ROM A79D6) -> palette 1, color 1
14:F7E6 (ROM A79E6) -> palette 2, color 1
14:F7F6 (ROM A79F6) -> palette 4, color 1
The following is a similar table, but instead of only updating 1 color, the entire palette is replaced, and time is used to slide the palette smoothly; starting from the appropriate point moving forward, and wrapping as necessary. This is used for the real trippy blue-white crystal tiles. Update - this one is 16 long and goes twice as fast. The table is 16 long, but a sliding window of 8 are copied out to the palette.
14:F826 (ROM A7A26) -> palette 7, all colors
For tileset 9, when the map palette is 9:14:FBC6 (ROM A7DC6) -> palette 1, color 1
14:FBD6 (ROM A7DD6) -> palette 1, color 2 AND palette 5, color 2
14:FBE6 (ROM A7DE6) -> palette 1, color 3
14:FBF6 (ROM A7DF6) -> palette 5, color 1
For tileset 9, when the map palette is F:Same as above, only add 40 (hex) to all those table addresses. They pull from tables immediately after the ones above.

Corrected one of the entries above. The cycling palette table is 16 long and runs twice as fast.