dos33fsprogs/still_alive
2018-06-05 09:48:06 -04:00
..
art sa: try to encrypt the ascii art 2018-05-23 16:04:27 -04:00
lyrics sa: move lyrics conversion to own directory 2018-05-23 14:20:38 -04:00
music sa: add raw music 2018-05-23 23:29:51 -04:00
ascii_art_lz4.inc sa: try to encrypt the ascii art 2018-05-23 16:04:27 -04:00
ascii_art.inc sa: work on getting art displayed 2018-05-21 17:04:18 -04:00
display_art.s sa: speed up the 80 column draw a bit 2018-05-24 13:53:07 -04:00
display_lyrics.s sa: merge sa and ed lyrics files 2018-06-04 16:46:32 -04:00
duet.s sa_ed: getting close 2018-06-04 13:53:25 -04:00
ending.s sa: ending, move sound vars to not conflict 2018-06-05 09:37:52 -04:00
GLADOS.HGR sa: work on ending 2018-05-24 17:01:42 -04:00
interrupt_handler.s sa: modify to not lyrics off the end and print garbage 2018-05-24 11:59:07 -04:00
lyrics.inc sa: merge sa and ed lyrics files 2018-06-04 16:46:32 -04:00
Makefile sa: ending: falling core 2018-06-05 00:23:14 -04:00
objects_shape.inc sa: ending: draw portals 2018-06-04 23:35:18 -04:00
README.still_alive sa: update README 2018-06-05 01:12:15 -04:00
sa_ed.s sa: enable 80 column mode on ed 2018-06-05 09:48:06 -04:00
sa_mb.s sa: enable 80 column mode on ed 2018-06-05 09:48:06 -04:00
SA.ED sa_ed: getting close 2018-06-04 13:53:25 -04:00
sa.edlyrics sa_ed: working! 2018-06-04 14:17:34 -04:00
SA.KR4 sa: have cursor going on 80col 2018-05-24 14:31:14 -04:00
SA.KRW sa: start work on this 2018-04-27 21:24:57 -04:00
still_alive.dsk sa: update disk image 2018-06-05 00:58:02 -04:00
still_alive.s sa: enable 80 column mode on ed 2018-06-05 09:48:06 -04:00
title.bas sa: enable 80 column mode on ed 2018-06-05 09:48:06 -04:00
TITLE.BAS sa: merge the versions 2018-06-04 15:26:03 -04:00
TODO sa: modify to not lyrics off the end and print garbage 2018-05-24 11:59:07 -04:00
zp.inc sa: merge the versions 2018-06-04 15:26:03 -04:00

                         Still Alive for the Apple II
                               in roughly 20k

                           By Deater (Vince Weaver)


BACKGROUND
~~~~~~~~~~
	A few years back I implemented Valve's Portal in Applesoft BASIC.

	At the end it played Still Alive, but in horrible single-channel
	speaker beeps.  I always wanted to have this sound better.

	So here is the end result.  Still Alive in 6-Channel Mockingboard
	Sound in 80 column with cursor effects.  Also in 40 column if
	your display can't handle 80 cols.  And if you don't have a
	Mockingboard, then a simpler version using P. Lutus'
	Electric Duet 2-channel audio for the stock speaker.



Fun fact:
	The letter 'Z' does not appear at all in the lyrics to the song.
	(Noticed when I had to edge comparison for uppercase off by one)

Challenges:
	+ 6-channel audio.  Really its 4-channel (from a MOD file)
		but it actually does load and play audio on all 6 channels.
	+ Fitting it all in 48k (want to avoid disk routines if can)
	+ Printing the ASCII art (naive implementation takes longer than 50Hz)
		The ASCII art is roughly 7k.  Thought of decompressing
		on the fly, but the LZ4 code is not re-entrant and
		the music is already decompressing on the fly.
	+ Re-using the Lyrics for both the Mockingboard and Electric Duet
		versions.



Goal: Binary fits in 16k (16384 bytes)

note						size (bytes)
---------------------				------
initial music player:				 2078
add raw ascii art:				 9142
add 3-channel music+lyrics,then slim a bit:	18787
initial 40 col support:				18864
have art loading properly 40col:		18910
lz4 encode the ascii art:			15529
revert because lz4 code not re-entrant:		18910
add 4-channel music (KR4):			20128
add cursor (a bit distracting)			20162
feature complete 40 col:			20180
intial 80 col support:				20191
80 col cursor:					20344
strip out some unneeded text printing:		19962
merge ED and MB code				24993
properly select between versions:		25001
merge the ED and MB lyrics:			22828

Memory Map:



0000:		Zero Page
0100:		Stack
0400:		Text Page 0 (AUX 0400: 80 column text)

2000:		HGR Page0
4000:		HGR Page1
9600:		DOS		37.5k
C000:		I/O Space
D000:		ROM
FFFF:		END


Code:		c00 - 8c00 32k 
		(8k=audio, 5k=lyrics, 3k=art)
Sound buffers:	5e00-9600 = 14k

Plan:
	Load compressed 18k image at $5000 - $9600
	Decompress ENDING sequence at $1800 - $4000
	When done, decompress STILL_ALIVE (22k) at $C00 - $5000