The SNES has a PPU (Picture Processing Unit) which comprises VRAM, OAM (Object Attribute Memory), and CGRAM (Color Graphics/Palette RAM). These are used to represent tiles, tile maps; attributes for sprites; and color palettes, respectively.
The VRAM contains a 2D array which represents a map of tiles that are displayed on the screen (in four background layers, depending on the current mode, not relevant here).
In https://emu-docs.org/Super%20NES/General/snesdoc.html#Reg2116 there is a pretty good overview of how this works:
It states that each entry in the tile map contains this:
High Low Legend-> c: Starting character (tile) number vhopppcc cccccccc h: horizontal flip v: vertical flip p: palette number o: priority bit
It then goes on to say that the following formula can be used to calculate the address of the character:
address_of_character = (base_location_bits << 13) + (8 * color_depth * character_number);
There is also an example:
For example, if base location 1 is selected, the color depth for the tile map is 4 bits (16 colors), and character number 1 is selected, the address will be (1<<13)+8*4*1 = 8224.
However, it then states:
Note that the word address entered into the VRAM address register will be half of that, or 4112.
1: Why is it half?
2: Why is the color depth 4 bits in this example?
3: How is color depth selected or derived, in general?
I've searched through the hardware registers: https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_Hardware_Registers but I don't seem to find anything regarding color depth nor palette. This leads me to believe that the color depth is derived based on the current mode and perhaps something else. Please correct me.