#Python 2, 218 200 190 181 176 bytes
Python 2, 218 200 190 181 176 bytes
import time;f='Happy birthday Raffaele Cecco '
while[time.sleep(1)]:v=f[::-1];print'\n'*90,f[:12],''.join('\n'+a+' '*10+b for a,b in zip(v[:3],f[12:16])),'\n',v[3:15];f=f[1:]+f[0]
-18 bytes by removing str
formatting
-10 bytes, thanks to @Uriel and @ElPedro suggestions
-9 bytes by removing negative indexing
-5 bytes by storing reversed f
as v
and while
condition