Traumaphore by Trope [web]
............................................................ THE HEAD AND IN FRONTAL ATTACK ON AN ENGLISH WRITER THAT THE CHARACTER OF THIS POINT IS THEREFORE ANOTHER METHOD FOR THE LETTERS THAT THE TIME OF WHO EVER TOLD THE PROBLEM FOR AN UNEXPECTED . . . Traumaphore is a 64-byte intro for the Commodore 64. By nom de nom of TROPE, released at Demosplash 2017. Do not view the intro if you have photosensitive epilepsy or are triggered by BASIC error messages. The intro generates text using a Markov chain model (bigram, per-character) with the page of BASIC error messages as data. This underlying text scrolls up, appearing in four different graphics modes. It is used to set sound, background color, & border color registers for a variety of effects on different scales, all in a well-behaved program. A BASIC bootloader is included, and the intro breaks properly when STOP is pressed. 02 08 01 00 00 9E 32 30 36 31 00 00 00 C8 B9 9E A1 85 FB 09 80 20 D2 FF 09 15 29 1F 8D 18 D0 B9 9F A1 85 FC 99 DE D3 AC 12 D0 C8 20 E1 FF F0 D3 B9 9E A1 C5 FB D0 ED B9 9F A1 C5 FC D0 E6 50 CD 02 08 /Load at $802, $801-$802 just needs to be non-null 01 00 00 9E 32 30 36 31 00 00 00 /BASIC bootloader C8 B9 9E A1 85 FB 09 80 20 D2 FF 09 15 29 1F 8D 18 D0 B9 9F A1 85 FC /character: iny ; move 1 ahead through the source text lda $a19e, y ; get character #1 from BASIC error message page sta $fb ; store on zero page ora #%10000000 ; force to uppercase/graphics jsr $ffd2 ; print what's in the accumulator ora #%00010101 ; turn all the bits in $15 on and #%00011111 ; turn all except in $1f off; four possible modes sta $d018 ; VIC-II control register lda $a19f, y ; get character #2 from BASIC error message page sta $fc ; store on zero page & fall through to grab ; now $fb and $fc have the characters we seek 99 DE D3 AC 12 D0 C8 20 E1 FF F0 D3 B9 9E A1 C5 FB D0 ED B9 9F A1 C5 FC D0 E6 50 CD /grab: sta $d3de, y ; sound, bg, border color - chopper sound ldy $d012 ; get noisy value, current raster line iny ; skip ahead 1, alter timing jsr $ffe1 ; check STOP beq zero ; if STOP pressed, brk lda $a19e, y ; get new char #1 from BASIC errors cmp 251 ; compare to zero page 251 bne grab ; if no match, grab a character again lda $a19f, y ; if a match, get new char #2 from BASIC errors cmp 252 ; compare to zero page 252 bne grab ; if no match, grab (starting with 1st char) again bvc character Rather than build a table of conditional probabilities, this technique follows the one described by Claude Shannon in his A Mathematical Theory of Communication (1948): starting with some token (he used words, we use letters), select a pair of them and look ahead to the next place where token 2 is found. The current version is not highly legible while running, but a short version that can be read aloud is also in the works. -nom de nom, 2017-11-10
[ back to the prod ]