#Python 2, 218 200 bytes
f = 'Happy birthday Raffaele Cecco ';import time
while 1:
print '\n'*30,f[:12],''.join('\n'+a+' '*10+b for a,b in zip(f[-1]+f[-3:-1][::-1],f[12:16])),'\n',f[-15:-3][::-1];f=f[1:]+f[:1];time.sleep(.5)
Probably could be optimized a bit