2d array not populated correctly when using bitshift

It's not the MCU, it's the compiler's choice of word size for 'int'. If you use int32_t it should be the same on either an 8 bit or 32 bit processor (16 or 32 bit 'int').