Make me a scrolling marquee
PowerShell, 118 113 112 108 102 101 99  96 - 10% = 86



Code

$s=(Read-Host)*180;for(){Write-Host($s.substring(($i=++$i%80),80)+"`r")-N -F R -B 0;sleep -m 99}


With the caveat that it now begins the first loop with the second character; The rules don't say it has to start from the front of the string, and the first one is included overall, so that's fine by me. I will get it to 100 chars somehow - edit: thanks @ConnorLSW for the edits to get it below 100.

Instructions


Run PowerShell (normal console, it doesn't work in PowerShell ISE)
Paste the single line version into PoSH, press enter
Type a message, press enter
Ctrl-C to break


Output


  


Notes

A more readable version with the variable names and parameters filled out a bit:

$test = (Read-Host) * 180
for () {
    Write-Host ($text.substring(($i=++$i%80), 80)+"`r") -NoNewLine -ForegroundColor Red -BackgroundColor Black
    sleep -Miliseconds 99
}



The parameters only need to be long enough to be unique, so -F R is unique enough to set a Red ForegroundColor, for example.
'Black' has to be 'Bla' to be unique compared to 'Blue', but -B 0 sets it to color Enum value 0 which is interpreted as Black.


Alternative, more 'correct' marquee:

The reference code doesn't handle strings longer than 80 characters nicely, skipping anything in the message past ~160 characters, and it glitch-resets every 99*len(string) characters. e.g. if the sign width was 5 characters long, it does this:

   here is my long test input
 0 |here |            
 1  |ere i|          ^^^^ never shown
 2   |re is|
 3    |e is |
 4     | is m|
 0 |here |
 1  |ere i|
    ...


This version indexes modulo the text length instead of the sign width, so it runs through the whole string. 106 - 10% = 95 chars.

$l=($s=Read-Host).Length;for(){Write-Host(($s*160).substring(($i=++$i%$l),80)+"`r")-N -F R -B 0;sleep -m 99}


Alternative: sign which cycles like the .gif in the question, 118-10%=106

Because it looks better.

$s=' '*80+(read-host)+' '*80;for(){write-host($s.Substring(($i=++$i%($s.length-80)),80)+"`r")-N -F R -B 0;sleep -m 99}