diff --git a/doku/TriOS-1.jpg b/doku/TriOS-1.jpg deleted file mode 100644 index aa72063..0000000 Binary files a/doku/TriOS-1.jpg and /dev/null differ diff --git a/doku/TriOS.ods b/doku/TriOS.ods deleted file mode 100644 index 3609cd9..0000000 Binary files a/doku/TriOS.ods and /dev/null differ diff --git a/doku/TriOS.rtf b/doku/TriOS.rtf deleted file mode 100644 index bea5b10..0000000 Binary files a/doku/TriOS.rtf and /dev/null differ diff --git a/doku/administra-flash.rtf b/doku/administra-flash.rtf deleted file mode 100644 index 782a73d..0000000 Binary files a/doku/administra-flash.rtf and /dev/null differ diff --git a/doku/entwicklungsstatus.ods b/doku/entwicklungsstatus.ods deleted file mode 100644 index cc7b902..0000000 Binary files a/doku/entwicklungsstatus.ods and /dev/null differ diff --git a/doku/notizen.rtf b/doku/notizen.rtf deleted file mode 100644 index d3f5a12..0000000 --- a/doku/notizen.rtf +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doku/notizen.txt b/doku/notizen.txt deleted file mode 100644 index 3d2803c..0000000 --- a/doku/notizen.txt +++ /dev/null @@ -1,51 +0,0 @@ - -SD-Laufwerksfunktionen - - 1 sd_mount - 2 sd_opendir - 3 sd_nextfile - 4 sd_open - 5 sd_close - 6 sd_getc - 7 sd_putc - 8 sd_getblk - 9 sd_putblk - 10 sd_eof - 11 sd_seek ??? - 12 sd_fattrib - 13 sd_ftime - 14 sd_fsize - -Managementfunktionen - - 92 mgr_starthss - 93 mgr_stophss - 94 mgr_startwav - 95 mgr_stopwav - 96 mgr_aload - 97 mgr_cogs - 98 mgr_version - 99 mgr_reboot - -HSS-Funktionen - - 100 hss_load - 101 hss_play - 102 hss_stop - 103 hss_pause - 104 hss_peek - 105 hss_intreg - 106 hss_vol - -SFX-Funktionen - - 107 sfx_fire - 108 sfx_setslot - 109 sfx_keyoff - 110 sfx_stop - -WAV-Funktionen - - 150 sdw_start - 151 sdw_stop - 152 sdw_status diff --git a/flash/administra/admflash-fat.spin b/flash/administra/admflash-fat.spin deleted file mode 100644 index 6d84090..0000000 Binary files a/flash/administra/admflash-fat.spin and /dev/null differ diff --git a/flash/administra/admflash-hss.spin b/flash/administra/admflash-hss.spin deleted file mode 100644 index a41aeef..0000000 --- a/flash/administra/admflash-hss.spin +++ /dev/null @@ -1,738 +0,0 @@ -''***************************** -''* Hydra Sound System v1.2 * -''* (C)2007 Andrew Arsenault * -''***************************** -''http://www.andrewarsenault.com/hss/ -''e-mail: ym2413a@yahoo.com -'' -'' Cogs used: 2 -'' HUB-RAM: ~2.7k - -'' Please visit the website for the latest version, documentation, examples and media files. -'' Thank you! --Ym2413a - -'' 25.01.2009 Anpassungen für ein komfortableres Interface zur Visualisierung und Steuerung - -CON -#0, iEndFlag 'Repeat oder Ende wurde erreicht - iRowFlag 'Flag das Songzeile fertig ist - iEngineC 'Patternzähler - iBeatC 'Beatzähler - iRepeat 'zähler für loops -#5, iChannel -#5, iChannel1 -#10, iChannel2 -#15, iChannel3 -#16, iChannel4 -#0, iNote - iOktave - iVolume - iEffekt - iInstrument - -VAR - -'Interface - word intreg[5 * 5] - -'Sound Engine Stack - long hsnd_stack[18] - long cog1, cog2 - -'WavSynth Parameters - long snd_regs[48] 'Regs for Sound Hardware (8x6)+5dpcm - long dpcm_regs[5] - -'DPCM Command Variables - word dpcmreg_ptr - -'Global Hmus Player Vars - word tempo - word song_pc - word song_div - word song_ptr - word chfre[4] - byte chfx[4] - byte chvol[4] - byte hmus_state - byte hmvol - byte fxphs - -'Sound FX Variables - word runlen[2] - word envamp[2] - word sfx_ptr[2] - byte envphs[2] - byte fmcnt[2], fmfreq[2] - byte loadsfx[2] - -CON - -'' Hss Master Control - -PUB start: okay - - okay := cog1 := cognew(@entry, @snd_regs) - okay := cog2 := cognew(hsound, @hsnd_stack) - -PUB stop - - cogstop(cog2) - cogstop(cog1) - -PUB peek(addrptr) : var1 - - var1 := LONG[@snd_regs][addrptr] - -PUB intread(index): wert 'interface: auslesen eines interfaceregisters - - wert := intreg[index] - - -CON - -'' Hydra Music Commands - -PUB hmus_load(songptr) | z - - hmvol := 15 - song_div := 0 - song_ptr := songptr - song_pc := WORD[songptr][8] - tempo := WORD[songptr][12] - repeat z from 0 to 3 - chfx[z] := 0 - - repeat z from 0 to 5*5 'interface: playerinterface alle werte löschen - intreg[z] := 0 - - -PUB hmus_play - - hmus_state := 1 - -PUB hmus_stop | z - - hmus_state := 0 - repeat z from 0 to 3 - chvol[z] := 0 - -PUB hmus_pause - - hmus_state := 0 - -PUB hmus_tempo(var1) - - tempo := var1 - -PUB get_hmus_tempo : var1 - - var1 := tempo - -PUB hmus_vol(var1) - - hmvol := var1 <# 15 #> 0 - -PUB get_hmus_vol : var1 - - var1 := hmvol - -CON - -'' FXsynth Commands - -PUB sfx_play(chan, soundptr) - - if(chan == 1) - sfx_ptr[0] := soundptr - loadsfx[0] := 0 - if(chan == 2) - sfx_ptr[1] := soundptr - loadsfx[1] := 0 - -PUB sfx_stop(chan) - - if(chan == 1) - sfx_ptr[0] := 0 - if(chan == 2) - sfx_ptr[1] := 0 - -PUB sfx_keyoff(chan) - - if(chan == 1) - envphs[0] := 3 - if(chan == 2) - envphs[1] := 3 - -CON - -'' Hydra DPCM Commands - -PUB dpcm_play(soundptr) - - dpcmreg_ptr := soundptr - -PUB dpcm_stop - - dpcmreg_ptr := 1 - -CON -''***************************** -''* Hss Sound Engine * -''***************************** -PRI Hsound -repeat - 'Update Music Engine - UpdateMus(song_ptr, Hmus_state) 'Update Music Player - 'volume/frequenzwerte werden in die soundregister geschrieben - VolumeInterpol 'Delay and Interpolate Volume to Remove Pops and Clicks. - - 'Update DPCM Engine - if(dpcmreg_ptr) - DpcmUpdate 'Update the DPCM registers - - 'Update SoundFX Engine - - 'FX channel A - FXSynth(0,32) - 'FX channel B - FXSynth(1, 40) - -PRI VolumeInterpol | z, channelmul, musvar, freqval - - fxphs += 5 - -'Volume Interpolation - repeat z from 0 to 3 step 1 - channelmul := 4+(8*z) - musvar := (chvol[z]*(hmvol+1))&$F0 - snd_regs[channelmul] := (snd_regs[channelmul] & 15)+musvar - - 'Freq Interpolation - channelmul -= 1 'Jump down a REG to Freq - musvar := chfre[z]<<16 - - if(chfx[z] == 0) 'None - snd_regs[channelmul] := musvar - - elseif(chfx[z] < 3) 'Vibrato (light/hard) - if(fxphs < 128) - snd_regs[channelmul] := musvar+(chfre[z]<<(7+chfx[z])) - else - snd_regs[channelmul] := musvar-(chfre[z]<<(7+chfx[z])) - - elseif(chfx[z] == 3) 'Tremolo - if(fxphs < 128) - snd_regs[channelmul] := musvar - else - snd_regs[channelmul] := musvar<<1 - - else 'Portamento - freqval := snd_regs[channelmul]>>16 - if(freqval & $F000 == chfre[z] & $F000) - snd_regs[channelmul] := musvar - elseif(freqval < chfre[z]) - snd_regs[channelmul] := snd_regs[channelmul]+(chfx[z]<<22) - else - snd_regs[channelmul] := snd_regs[channelmul]-(chfx[z]<<22) - -PRI UpdateMus(songptr, state) | i, channel, channelmul, scrdat, freq, freqoct, flag - - if(state == 0) - return ''Song is not playing. - - song_div++ 'zeitfaktor; wird erhöht bis... - - if(song_div => tempo) 'Tempo Divider 'schwellwert erreicht, dann nächster beat - song_div := 0 - flag := 0 - intreg[iBeatC] := intreg[iBeatC] + 1 'interface: beatconter erhöhen - intreg[iRowFlag] := 0 'interface: Kennung das Zeile bearbeitet wird - repeat i from 5 to 5*5 'interface: channelwerte löschen - intreg[i] := 0 - - repeat 'Score Decoder and Processor - scrdat := BYTE[song_ptr][song_pc] 'song_pc ist zeiger auf wert in MusicDat - channel := scrdat & 3 'untere zwei bit enthalten die kanalnummer - channelmul := channel<<3 'jedem channel sind 8 registerwerte zugeordent - intreg[iEngineC] := song_pc 'interface: enginecounter setzen - song_pc++ 'zeiger auf nächsten wert setzen - - ''Base Commands - if(scrdat == 0) 'End Row 'nächste trackerzeile - intreg[iRowFlag] := 1 'interface: Zeile fertig bearbeitet - quit - - if(scrdat == 1) 'Repeat Song 'wiederholt ab MusicLoop (MusicDat ist also die einleitung) - song_pc := WORD[songptr][9] - intreg[iRepeat] := intreg[iRepeat] + 1 'interface: flag das songende erreicht wurde - quit - - if(scrdat == 2) 'End Song 'status wird auf 0 gesetzt - intreg[iEndFlag] := 1 'interface: flag das songende erreicht wurde - hmus_stop - quit - - if(scrdat == 3) 'Set Flag - flag := 1 - next - - if((scrdat & $3C) == $20) 'Patch HI Note 'oktave erhöhen und veränderung zu "Change Note" - flag := 2 - scrdat := scrdat>>3 - scrdat += 64+channel - - if(scrdat & 4) 'Change Note - freq := scrdat>>3 'note Bit3 bis Bit7 (32 Noten) - freqoct := freq/12 - freq -= freqoct*12 - case flag - 1 : freqoct += 2 - 2 : freqoct += 6 - other : freqoct += 4 - flag := 0 - snd_regs[4+channelmul] := snd_regs[4+channelmul] & $FE - intreg[(channel*iChannel)+iChannel+iNote] := freq + 1 'interface: note setzen (0 ist erste note!) - intreg[(channel*iChannel)+iChannel+iOktave] := freqoct 'interface: oktave setzen - 'frequenz aus tabelle holen - 'je nach oktave wird nach rechts verschoben (/2) - chfre[channel] := NoteFreqs[freq]>>(6-freqoct) - snd_regs[4+channelmul] := (snd_regs[4+channelmul] & $FE)+1 - next 'Repeat To Next Datum - - if(scrdat & 8) 'Change Evelope / Channel Effect - if(flag) - intreg[(channel*iChannel)+iChannel+iEffekt] := scrdat>>4 + 1 'interface: effektwert setzen - chfx[channel] := scrdat>>4 - flag := 0 - else - intreg[(channel*iChannel)+iChannel+iVolume] := scrdat>>4 'interface: volume setzen - chvol[channel] := scrdat>>4 - next 'Repeat To Next Datum - - if(scrdat & 16) 'Change Instrument - freq := (scrdat & $E0)>>3 - freq += flag<<5 - flag := 0 - intreg[(channel*iChannel)+iChannel+iInstrument] := freq>>2 + 1 'interface: instrument setzen - snd_regs[0+channelmul] := songptr+WORD[songptr+32][freq] 'zeiger auf neues instrumentensample - snd_regs[1+channelmul] := WORD[songptr+32][freq+1] 'ende des samples - snd_regs[2+channelmul] := WORD[songptr+32][freq+2] 'loop - snd_regs[4+channelmul] := WORD[songptr+32][freq+3] & $0F 'flags? - next 'Repeat To Next Datum - - if(scrdat & 64) 'Detune - chfre[channel] := chfre[channel]+(chfre[channel]>>8) - - - -PRI DpcmUpdate - - if(dpcmreg_ptr > 15) 'Play Sample. - dpcm_regs[2] := 65535 'End sample if one was playing - dpcm_regs[0] := dpcmreg_ptr+8 - dpcm_regs[4] := 128 - dpcm_regs[3] := LONG[dpcmreg_ptr][1] 'Get sampling rate - dpcm_regs[1] := WORD[dpcmreg_ptr][1] 'Get length - dpcm_regs[2] := 0 'Reset play counter - elseif(dpcmreg_ptr == 1) 'Stop Sample - dpcm_regs[2] := 65535 'End sample - dpcm_regs[4] := 128 - - dpcmreg_ptr := 0 - -PRI FXSynth(SoundVars, ChannelFX) | TimeCnt, SoundFX, Modwav, FMwav, AMwav - TimeCnt := Cnt - SoundFX := sfx_ptr[SoundVars] - - if(loadsfx[SoundVars] == 0) - 'Setup OSC WaveForm - case BYTE[SoundFX][0] - $00: 'Sine - snd_regs[ChannelFX] := @SineTable - snd_regs[1+ChannelFX] := 64 - $01: 'Fast Sine - snd_regs[ChannelFX] := @FastSine - snd_regs[1+ChannelFX] := 32 - $02: 'Sawtooth - snd_regs[ChannelFX] := @Sawtooth - snd_regs[1+ChannelFX] := 64 - $03: 'Square - snd_regs[ChannelFX] := @SqrTable - snd_regs[1+ChannelFX] := 32 - $04: 'Fast Square - snd_regs[ChannelFX] := @FastSqr - snd_regs[1+ChannelFX] := 8 - $05: 'Buzz - snd_regs[ChannelFX] := @NoteFreqs - snd_regs[1+ChannelFX] := 24 - $06: 'Noise - snd_regs[ChannelFX] := $F002 - snd_regs[1+ChannelFX] := 3000 - - snd_regs[2+ChannelFX] := 0 - snd_regs[4+ChannelFX] := $01 - - loadsfx[SoundVars] := 1 - runlen[SoundVars] := 0 - fmcnt[SoundVars] := 0 - fmfreq[SoundVars] := 0 - envamp[SoundVars] := 0 - envphs[SoundVars] := 0 - -''Modulation Code - fmfreq[SoundVars]++ - if(fmfreq[SoundVars] => BYTE[SoundFX][4]) - fmfreq[SoundVars] := 0 - fmcnt[SoundVars]++ - fmcnt[SoundVars] := fmcnt[SoundVars] & $3F - - case BYTE[SoundFX][5] - $00: - Modwav := BYTE[@SineTable][fmcnt[SoundVars]] - $01: - Modwav := BYTE[@FastSine][fmcnt[SoundVars] & 31] - $02: - Modwav := fmcnt[SoundVars]<<2 - $03: - Modwav := !fmcnt[SoundVars]<<2 - $04: - if(fmcnt[SoundVars] & 8) - Modwav := $ff - else - Modwav := $00 - $05: - Modwav := BYTE[$F002][fmcnt[SoundVars]] - $FF: - Modwav := BYTE[SoundFX+12][fmcnt[SoundVars] & 15] - - fmwav := Modwav/(BYTE[SoundFX][6]) 'FM amount - amwav := 256-(Modwav/(BYTE[SoundFX][7])) 'AM amount - amwav := (BYTE[SoundFX][3]*amwav)>>8 - -''Envelope Generator - if(envphs[SoundVars] == 0) 'Attack - envamp[SoundVars] += BYTE[SoundFX][8] - if(envamp[SoundVars] > 8191) - envamp[SoundVars] := 8191 - envphs[SoundVars] := 1 - if(BYTE[SoundFX][8] == $ff) - envamp[SoundVars] := 8191 - if(envphs[SoundVars] == 1) 'Decay - envamp[SoundVars] -= BYTE[SoundFX][9] - if(envamp[SoundVars] & $8000) - envphs[SoundVars] := 2 - if(envamp[SoundVars] =< (BYTE[SoundFX][10]<<5)) - envphs[SoundVars] := 2 - if(envphs[SoundVars] == 2) 'Sustain - envamp[SoundVars] := (BYTE[SoundFX][10]<<5) - if(envphs[SoundVars] == 3) 'Release - envamp[SoundVars] -= BYTE[SoundFX][11] - if(envamp[SoundVars] & $8000) - envamp[SoundVars] := 4 - - amwav := ((envamp[SoundVars]>>9)*(amwav+1))>>4 - -''Run Length and Outputing - if(SoundFX > 15) - runlen[SoundVars]++ - snd_regs[3+ChannelFX] := (BYTE[SoundFX][2]+fmwav)<<24 'Update Frequency - snd_regs[4+ChannelFX] := (amwav<<4)+(snd_regs[4+ChannelFX] & $0F) 'Update Amplitude - else - snd_regs[4+ChannelFX] := $00 'Mute - - if(BYTE[SoundFX][1] == $ff) '$ff = never stop - runlen[SoundVars] := 0 - - if(runlen[SoundVars] > (BYTE[SoundFX][1]<<5)) 'Duration KeyOff - envphs[SoundVars] := 3 - -WaitCnt(TimeCnt + 52_000) ''Delay for Synth Engine Update. - -DAT - -SineTable byte $80, $8c, $98, $a5, $b0, $bc, $c6, $d0 - byte $da, $e2, $ea, $f0, $f5, $fa, $fd, $fe - byte $ff, $fe, $fd, $fa, $f5, $f0, $ea, $e2 - byte $da, $d0, $c6, $bc, $b0, $a5, $98, $8c - byte $80, $73, $67, $5a, $4f, $43, $39, $2f - byte $25, $1d, $15, $0f, $0a, $05, $02, $01 - byte $00, $01, $02, $05, $0a, $0f, $15, $1d - byte $25, $2f, $39, $43, $4f, $5a, $67, $73 - -Sawtooth byte $ff, $fb, $f7, $f3, $ef, $eb, $e7, $e3 - byte $df, $db, $d7, $d3, $cf, $cb, $c7, $c3 - byte $bf, $bb, $b7, $b3, $af, $ab, $a7, $a3 - byte $9f, $9b, $97, $93, $8f, $8b, $87, $83 - byte $80, $7c, $78, $74, $70, $6c, $68, $64 - byte $60, $5c, $58, $54, $50, $4c, $48, $44 - byte $40, $3c, $38, $34, $30, $2c, $28, $24 - byte $20, $1c, $18, $14, $10, $0c, $08, $04 - -FastSine byte $80, $98, $b0, $c6, $da, $ea, $f5, $fd - byte $ff, $fd, $f5, $ea, $da, $c6, $b0, $98 - byte $80, $67, $4f, $39, $25, $15, $0a, $02 - byte $00, $02, $0a, $15, $25, $39, $4f, $67 - -SqrTable byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - byte $00, $00, $00, $00, $00, $00, $00, $00 - byte $00, $00, $00, $00, $00, $00, $00, $00 - -FastSqr byte $ff, $ff, $ff, $ff, $00, $00, $00, $00 - -'Note LookupTable. -NoteFreqs word $85F3, $8DEA, $965B, $9F4B, $A8C4, $B2CD, $BD6F, $C8B3, $D4A2, $E147, $EEAC, $FCDE 'Top Octave Lookup - -CON -''***************************** -''* WaveTable Synth v1.2 * -''* DPCM Synth v1.1 * -''* (C)2006 Andrew Arsenault * -''***************************** -DAT - org -entry mov dira,Port_Pins 'Setup output pins - - mov ctra,Right_ctra 'Setup Right Audio Channel - mov ctrb,Left_ctra 'Setup Left Audio Channel - - mov ChlA_wave,#256 'Set channel signals. - mov ChlA_offset,#0 'Set channel's offset. - mov ChlA_counter,#0 - - mov Time,#10 - add Time,cnt 'Prepare for asm type WAITCNT loop. - -'MAIN LOOP -update waitcnt Time,Timing_delay 'Wait for CNT = D, then add S into D - - 'Transfer Sound Registers - mov addrregs,par - mov y,NumberOfChannels - - 'Fetch Channel's Registers -transferchl rdlong ChlAp_sampptr,addrregs - add addrregs,#4 - rdlong ChlAp_sampend,addrregs - add addrregs,#4 - rdlong Ch1Ap_samplpp,addrregs - add addrregs,#4 - rdlong Ch1Ap_freq,addrregs - add addrregs,#4 - rdlong ChlAp_keyon,addrregs - - 'Fetch Channel's Static Variables - add addrregs,#8 - rdlong ChlA_offset,addrregs - add addrregs,#4 - rdlong ChlA_counter,addrregs - - 'Run Synth Engine on Channel - call #wvsynth - - 'Store Channel's Static Variables (Tucked Center X move to Wave) - wrlong ChlA_counter,addrregs - sub addrregs,#4 - sub x,#256 - wrlong ChlA_offset,addrregs - sub addrregs,#4 - mov ChlA_wave,x 'Doesn't Waste anything doing this. - wrlong ChlA_wave,addrregs - add addrregs,#12 - - 'Loop Until All Channel's Are Done. - djnz y,#transferchl - - 'Run DPCM Engine - call #dpcm - - 'Mix Channels Together - mov addrregs,par - mov ChlA_wave,#0 - add addrregs,#5*4 - mov y,NumberOfChannels - -mixchls rdlong x,addrregs - add ChlA_wave,x - add addrregs,#8*4 - djnz y,#mixchls - - mov x,DPCM_wave 'Add DPCM - shl x,#2 - add ChlA_wave,x - - shl ChlA_wave,#20 'Convert 12bit singal into a 32bit one. - - 'Update output Channels then repeat again. - mov frqa,ChlA_wave - mov frqb,ChlA_wave - - jmp #update - - - - -'-------------------------Dpcm Engine-------------------------' - -dpcm mov addrregs,par - add addrregs,#192 - - rdlong DPCM_address,addrregs 'Start Address - add addrregs,#4 - rdlong DPCM_runlen,addrregs 'File Lenght - add addrregs,#4 - rdlong DPCM_offset,addrregs 'File Offset - add addrregs,#4 - rdlong DPCM_freq,addrregs 'Playback Speed - add addrregs,#4 - rdlong DPCM_wave,addrregs 'Waveform Amp - - 'Check for if keyon/length is set. - cmp DPCM_offset,DPCM_runlen wc - if_ae jmp #mute_dpcm 'End of file - - 'Freq Timer/Divider and Increase sampling offset - add DPCM_counter,DPCM_freq wc - if_nc jmp #done_dpcm - - 'Decode DPCM - add DPCM_address,DPCM_offset - rdbyte x,DPCM_address 'Fetch Datum - - mov DPCM_delta,x - shr DPCM_delta,#6 - mov y,#1 - shl y,DPCM_delta - mov DPCM_delta,y - - mov y,#1 - shl y,DPCM_phs - test x,y wc - if_c add DPCM_wave,DPCM_delta - if_nc sub DPCM_wave,DPCM_delta - - add DPCM_phs,#1 - cmp DPCM_phs,#6 wc - if_b jmp #done_dpcm - - mov DPCM_phs,#0 - add DPCM_offset,#1 - jmp #done_dpcm - -mute_dpcm mov DPCM_wave, #128 - -done_dpcm mov addrregs,par - add addrregs,#200 - wrlong DPCM_offset,addrregs 'File Offset - add addrregs,#8 - wrlong DPCM_wave,addrregs 'Wave -dpcm_ret ret - -'-----------------------Dpcm Engine End-----------------------' - - - -'-------------------------Sound Engine-------------------------' - - 'Freq Timer/Divider and Increase sampling offset -wvsynth add ChlA_counter,Ch1Ap_freq wc - if_c add ChlA_offset,#1 - - 'Reset sample position and lock at zero if Keyoff. - test ChlAp_keyon,#%0001 wc - if_nc mov ChlA_offset,#0 - - 'Reset(loop) if needed - cmp ChlA_offset,ChlAp_sampend wc - if_ae mov ChlA_offset,Ch1Ap_samplpp - - 'Check BitRate and Set Offset - mov x,ChlA_offset - test ChlAp_keyon,#%0010 wc - if_c shr x,#1 - - 'Fetch WaveTable - mov ChlA_wave,ChlAp_sampptr - add ChlA_wave,x - rdbyte ChlA_wave,ChlA_wave - - 'Check BitRate and Skip if 8bit - test ChlAp_keyon,#%0010 wc - if_nc jmp #skip_4bitsam - - 'Convert 4bit to 8bit - test ChlA_offset,#%0001 wc - if_c shr ChlA_wave,#4 - if_nc and ChlA_wave,#%00001111 - - mov x,ChlA_wave - shl ChlA_wave,#4 - add ChlA_wave,x - - 'Center Amplitude and mute if Keyoff. -skip_4bitsam test ChlAp_keyon,#%0001 wc - if_nc mov ChlA_wave,#128 - - 'Volume Multiply - mov x,#0 - test ChlAp_keyon,#%10000000 wc - if_c add x,ChlA_wave - if_nc add x,#128 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%01000000 wc - if_c add x,ChlA_wave - if_nc add x,#64 - add x,#64 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%00100000 wc - if_c add x,ChlA_wave - if_nc add x,#32 - add x,#96 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%00010000 wc - if_c add x,ChlA_wave - if_nc add x,#16 - add x,#112 - -'Return Audio as X. -wvsynth_ret ret - -'-----------------------Sound Engine End-----------------------' - -Port_Pins long %00000000_00000000_00000011_00000000 - - '- CTR PLL -------- BPIN --- APIN -Right_ctra long %0_00110_000_00000000_000000_000_001000 -Left_ctra long %0_00110_000_00000000_000000_000_001001 - -Timing_delay long 2500 'Sampling Rate = 32,000.00hz -NumberOfChannels long 6 - -Time res 1 -addrregs res 1 -x res 1 -y res 1 - -'WaveTable Synth Accumulators -ChlA_wave res 1 -ChlA_offset res 1 -ChlA_counter res 1 -ChlAp_sampptr res 1 -ChlAp_sampend res 1 -Ch1Ap_samplpp res 1 -Ch1Ap_freq res 1 -ChlAp_keyon res 1 - -'DPCM Accumulators -DPCM_wave res 1 -DPCM_address res 1 -DPCM_offset res 1 -DPCM_counter res 1 -DPCM_freq res 1 -DPCM_runlen res 1 -DPCM_phs res 1 -DPCM_delta res 1 \ No newline at end of file diff --git a/flash/administra/admflash-old.spin b/flash/administra/admflash-old.spin deleted file mode 100644 index ca74d49..0000000 Binary files a/flash/administra/admflash-old.spin and /dev/null differ diff --git a/flash/administra/admflash-rtc.spin b/flash/administra/admflash-rtc.spin deleted file mode 100644 index 8cd6854..0000000 Binary files a/flash/administra/admflash-rtc.spin and /dev/null differ diff --git a/flash/administra/admflash-wav.spin b/flash/administra/admflash-wav.spin deleted file mode 100644 index a623355..0000000 Binary files a/flash/administra/admflash-wav.spin and /dev/null differ diff --git a/flash/administra/admflash.spin b/flash/administra/admflash.spin deleted file mode 100644 index d9c29ff..0000000 Binary files a/flash/administra/admflash.spin and /dev/null differ diff --git a/flash/administra/pterm.spin b/flash/administra/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/flash/administra/pterm.spin and /dev/null differ diff --git a/flash/administra/wavtest.spin b/flash/administra/wavtest.spin deleted file mode 100644 index 0b1bf59..0000000 --- a/flash/administra/wavtest.spin +++ /dev/null @@ -1,104 +0,0 @@ -CON - -_CLKMODE = XTAL1 + PLL16X -_XINFREQ = 5_000_000 - - -OBJ - sdfat : "amdflash-fat" 'fatengine - wav : "admflash-wav" 'sd-wave - debugx : "pterm" 'debug - -VAR - - long leftVolume - long rightVolume - long backgroundPlayCog - long backgroundPlayStack[50] - -PUB main - - debugx.start(115200) ' Start des Debug-Terminals - sdfat.FATEngine - leftVolume := 50 - rightVolume := 50 - wav.DACEngine(0) - waitcnt(clkfreq + cnt) - backgroundPlayCog := -1 - sdfat.mountPartition(0,0) - - sdw_start - repeat - - -CON ''------------------------------------------------- WAV-FUNKTIONEN - - -PUB sdw_start | len,j,err ''sdw: startet extra cog mit sdwav-engine -''funktionsgruppe : sdw -''funktion : wav-datei von sd-card abspielen -''eingabe : - -''ausgabe : - -''busprotokoll : [150][sub.getstr][put.err] -'' : err - fehlernummer entspr. liste - -' err := \sdfat.openFile(string("test.wav"), "r") 'datei öffnen -' if err == 0 - backgroundPlayCog := cognew(programBackgroundPlay, @backgroundPlayStack) - -PUB sdw_stop ''sdw: stopt cog mit sdwav-engine - - if(backgroundPlayCog => 0) - cogstop(backgroundPlayCog) - wav.stopPlayer - sdfat.closeFile - - -PRI programBackgroundPlay | n - - debugx.str(string("Player gestartet ")) 'debug - debugx.NewLine - - dira[24] := 1 - sdfat.openFile(string("test2.wav"), "r") - - sdfat.setCharacterPosition(22) - - n := (sdfat.readCharacter | (sdfat.readCharacter << 8)) - debugx.str(string("NumberOfChannels : ")) 'debug - debugx.dec(n) - debugx.NewLine - wav.changeNumberOfChannels(n) - - n := sdfat.readCharacter | (sdfat.readCharacter << 8) | (sdfat.readCharacter << 16) | (sdfat.readCharacter << 24) - debugx.str(string("SampleRate : ")) 'debug - debugx.dec(n) - debugx.NewLine - wav.changeSampleRate(n) - - sdfat.setCharacterPosition(34) - - n := (sdfat.readCharacter | (sdfat.readCharacter << 8)) - debugx.str(string("BitsPerSample : ")) 'debug - debugx.dec(n) - debugx.NewLine - wav.changeBitsPerSample(n) - - wav.changeSampleSign(n == 16) - - wav.changeLeftChannelVolume(leftVolume) - wav.changeRightChannelVolume(rightVolume) - - - sdfat.setCharacterPosition(40) - wav.startPlayer - - repeat ((sdfat.readCharacter | (sdfat.readCharacter << 8) | (sdfat.readCharacter << 16) | (sdfat.readCharacter << 24)) / 512) - sdfat.readData(wav.transferData, 512) - - wav.stopPlayer - wav.clearData - - sdfat.closeFile - cogstop(cogid) - diff --git a/flash/bellatrix/belflash.spin b/flash/bellatrix/belflash.spin deleted file mode 100644 index e3cefa7..0000000 Binary files a/flash/bellatrix/belflash.spin and /dev/null differ diff --git a/flash/regnatix/regflash.spin b/flash/regnatix/regflash.spin deleted file mode 100644 index 337464b..0000000 Binary files a/flash/regnatix/regflash.spin and /dev/null differ diff --git a/license.spin b/license.spin deleted file mode 100644 index 6f1fc2e..0000000 Binary files a/license.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/bel-keyb-de.spin b/system/bellatrix/htext-treiber/bel-keyb-de.spin deleted file mode 100644 index dad7275..0000000 Binary files a/system/bellatrix/htext-treiber/bel-keyb-de.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/bel-vga1024-demo.spin b/system/bellatrix/htext-treiber/bel-vga1024-demo.spin deleted file mode 100644 index 9bdc27c..0000000 --- a/system/bellatrix/htext-treiber/bel-vga1024-demo.spin +++ /dev/null @@ -1,45 +0,0 @@ -{ -vga-bildschirmtreiber-demo - -- verwendet zwei cogs -- auflösung 1024 x 768 -- 64 x 128 textzeichen -- font ohne umlaute! - -} - - - - -CON - -_clkmode = xtal1 + pll16x -_xinfreq = 5_000_000 - -VGABasePin = 8 - -OBJ - - vga : "bel-vga1024" - -VAR - - long sync ' gets signal for vertical refresh sync - byte VGACogStatus ' results of trying to start the VGA display cog - -PUB main | i - - VGACogStatus := vga.Start(VGABasePin,@sync) - - vga.print_string(string("abcd")) - vga.printchar(0) - vga.newline - - repeat - repeat i from $20 to $ff - vga.printchar(i) - waitcnt(500_000 + cnt) - - - - \ No newline at end of file diff --git a/system/bellatrix/htext-treiber/bel-vga1024.spin b/system/bellatrix/htext-treiber/bel-vga1024.spin deleted file mode 100644 index b441b6a..0000000 --- a/system/bellatrix/htext-treiber/bel-vga1024.spin +++ /dev/null @@ -1,144 +0,0 @@ -CON - - cols = VGA#cols 'anzahl der spalten - rows = VGA#rows 'anzahl der zeilen - chrs = cols * rows 'anzahl der zeichen - -OBJ - VGA : "bel-vga1024-htext" - -VAR - - byte array[chrs] 'bildschirmspeicher - byte VGACogStatus 'status des vga-treiber-cogs - byte cx0, cy0, cm0 'x, y, mode von cursor 0 - byte cx1, cy1, cm1 'x, y, mode von cursor 1 - word colors[rows] 'zeilenfarbenspeicher - long ScreenIndex 'index im bildschirmspeicher - long RowIndex 'zeilenindex - long ColumnIndex 'spaltenindex - long color 'zeilenfarbe - -PUB Start(BasePin,pSyncAddress)| ColorIndex - stop 'stopt ein bereits laufenden vga-task - cm0 := %000 'cursor 0 aus - cm1 := %110 'cursor 1 unterstrich blinkend - printchar($0E) 'bildschirm löschen - - ColorIndex := 0 'graue balken auf scharzem grund - repeat rows - colors[ColorIndex++] := %00000100_01101000 'rrggbb00_rrggbb00 - - VGACogStatus := VGA.Start(BasePin,@array, @colors, @cx0, pSyncAddress) 'startet vga-treiber (2cogs) - - return true - -PUB Stop '' to stop specific running monitor cog - VGA.stop ' stop any VGA cogs that were started - -PUB home -'' move writing place to upper left without clearing screen - SetXY(0,0) - -PUB SetXY(x,y) - ColumnIndex := x <# cols 'setzt spalte mit begrenzung auf spaltenzahl - RowIndex := y <# rows 'setzt zeile mit begrenzung auf zeilenzahl - ScreenIndex := ColumnIndex + (RowIndex * cols) 'berechnet bildschirmindex - -PUB print_string(ptr) - repeat while byte[ptr] - printchar(byte[ptr++]) - -PUB printchar(c) | i, k -'' Print a character -'' -'' $0D = new line -'' $0E = clear screen -'' $20..$FF = character - - case c - $0D: 'return? - newline - - $20..$FF: 'character? - array[RowIndex * cols + ColumnIndex] := c - if ++ColumnIndex == cols - newline - cx1 := ColumnIndex - cy1 := RowIndex - - $0E: 'clear screen? - ScreenIndex := 0 - repeat chrs - array[ScreenIndex++] := 32 - home - - -PUB newline_test | i - - ColumnIndex := 0 - if (RowIndex += 1) == rows - RowIndex -= 1 - - 'scroll lines - ScreenIndex := 0 - repeat i from 0 to chrs - cols - array[ScreenIndex + i] := array[ScreenIndex + i + cols] - - 'clear new line - bytefill(@array[(rows-1)*cols], 32, cols) 'BYTEFILL (StartAddress, Value, Count) - -PUB newline | i - - ColumnIndex := 0 - if (RowIndex += 1) == rows - RowIndex -= 1 - 'scroll lines - repeat i from 0 to rows-2 - bytemove(@array[i*cols], @array[(i+1)*cols], cols) 'BYTEMOVE (DestAddress, SrcAddress, Count) - - 'clear new line -' bytefill(@array[(rows-1)*cols], 32, cols<<1) 'BYTEFILL (StartAddress, Value, Count) -' code fehlerhaft, zähler ist falsch gesetzt! - - bytefill(@array[(rows-1)*cols], 32, cols) 'BYTEFILL (StartAddress, Value, Count) - - -{ -PUB newline | i - - ColumnIndex := 0 - if (RowIndex += 1) == rows - RowIndex -= 2 - 'scroll lines - repeat i from 0 to rows-3 - wordmove(@array.word[i*cols], @array.word[(i+2)*cols], cols) - 'clear new line - wordfill(@array.word[(rows-2)*cols], 32, cols<<1) -} - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/system/bellatrix/htext-treiber/htext-keyb.spin b/system/bellatrix/htext-treiber/htext-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/system/bellatrix/htext-treiber/htext-keyb.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/htext-vid.spin b/system/bellatrix/htext-treiber/htext-vid.spin deleted file mode 100644 index d14ddbb..0000000 Binary files a/system/bellatrix/htext-treiber/htext-vid.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/htext.spin b/system/bellatrix/htext-treiber/htext.spin deleted file mode 100644 index cd20581..0000000 Binary files a/system/bellatrix/htext-treiber/htext.spin and /dev/null differ diff --git a/system/bellatrix/tv-text-13x40-zeichen/tv-core.spin b/system/bellatrix/tv-text-13x40-zeichen/tv-core.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/system/bellatrix/tv-text-13x40-zeichen/tv-core.spin and /dev/null differ diff --git a/system/bellatrix/tv-text-13x40-zeichen/tv-keyb.spin b/system/bellatrix/tv-text-13x40-zeichen/tv-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/system/bellatrix/tv-text-13x40-zeichen/tv-keyb.spin and /dev/null differ diff --git a/system/bellatrix/tv-text-13x40-zeichen/tv.spin b/system/bellatrix/tv-text-13x40-zeichen/tv.spin deleted file mode 100644 index 55b85a3..0000000 Binary files a/system/bellatrix/tv-text-13x40-zeichen/tv.spin and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-keyb.spin b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-keyb.spin and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-vid.spin b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-vid.spin deleted file mode 100644 index 9acf513..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-vid.spin and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga.spin b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga.spin deleted file mode 100644 index 078de00..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga.spin and /dev/null differ diff --git a/system/license.spin b/system/license.spin deleted file mode 100644 index c2b7622..0000000 Binary files a/system/license.spin and /dev/null differ diff --git a/system/regnatix/admtest.spin b/system/regnatix/admtest.spin deleted file mode 100644 index f96c6f0..0000000 Binary files a/system/regnatix/admtest.spin and /dev/null differ diff --git a/system/regnatix/beltest.spin b/system/regnatix/beltest.spin deleted file mode 100644 index bf4d72c..0000000 Binary files a/system/regnatix/beltest.spin and /dev/null differ diff --git a/system/regnatix/hallo.spin b/system/regnatix/hallo.spin deleted file mode 100644 index b4a7654..0000000 Binary files a/system/regnatix/hallo.spin and /dev/null differ diff --git a/system/regnatix/hplay.spin b/system/regnatix/hplay.spin deleted file mode 100644 index 2ea9c5a..0000000 Binary files a/system/regnatix/hplay.spin and /dev/null differ diff --git a/system/regnatix/hplay.txt b/system/regnatix/hplay.txt deleted file mode 100644 index 78a0da2..0000000 --- a/system/regnatix/hplay.txt +++ /dev/null @@ -1,7 +0,0 @@ -/? : hilfetext -/p name.wav : hss-datei abspielen -/d : verzeichnis abspielen -/s : wiedergabe stoppen -/t : anzeige trackerliste -/r : anzeige engine-register -/i : anzeige interface-register diff --git a/system/regnatix/ios.spin b/system/regnatix/ios.spin deleted file mode 100644 index 4a2f36b..0000000 Binary files a/system/regnatix/ios.spin and /dev/null differ diff --git a/system/regnatix/para.spin b/system/regnatix/para.spin deleted file mode 100644 index 4744617..0000000 Binary files a/system/regnatix/para.spin and /dev/null differ diff --git a/system/regnatix/regime.spin b/system/regnatix/regime.spin deleted file mode 100644 index 881ff02..0000000 Binary files a/system/regnatix/regime.spin and /dev/null differ diff --git a/system/regnatix/regime.txt b/system/regnatix/regime.txt deleted file mode 100644 index 8007895..0000000 --- a/system/regnatix/regime.txt +++ /dev/null @@ -1,22 +0,0 @@ - -help - diese hilfe - - bin/adm/bel-datei wird gestartet -mount - sd-card mounten -unmount - sd-card abmelden -dir wh - verzeichnis anzeigen -type - anzeige einer textdatei -aload - administra-code laden -bload - bellatrix-treiber laden -rload - regnatix-code laden -del - datei löschen -cls - bildschirm löschen -free - freier speicher auf sd-card -attrib ashr - attribute ändern -cd - verzeichnis wechseln -mkdir - verzeichnis erstellen -rename fn2> - datei/verzeichnis umbenennen -format - sd-card formatieren -reboot - hive neu starten -sysinfo - systeminformationen -color <0..7> - farbe wählen -cogs - belegung der cogs anzeigen diff --git a/system/regnatix/sfxtool.spin b/system/regnatix/sfxtool.spin deleted file mode 100644 index e223d21..0000000 Binary files a/system/regnatix/sfxtool.spin and /dev/null differ diff --git a/system/regnatix/stringEngine.spin b/system/regnatix/stringEngine.spin deleted file mode 100644 index acc112b..0000000 Binary files a/system/regnatix/stringEngine.spin and /dev/null differ diff --git a/system/regnatix/sysconf.spin b/system/regnatix/sysconf.spin deleted file mode 100644 index 2b20f6a..0000000 Binary files a/system/regnatix/sysconf.spin and /dev/null differ diff --git a/system/regnatix/sysconf.txt b/system/regnatix/sysconf.txt deleted file mode 100644 index 59f101d..0000000 --- a/system/regnatix/sysconf.txt +++ /dev/null @@ -1,8 +0,0 @@ -/? : Hilfe -/p : Konfiguration anzeigen -/h 0|1 : hss ab-/anschalten -/w 0|1 : wav ab-/anschalten -/s 0|1 : systemklänge ab-/anschalten -/l 0..100 : wav-lautstärke links -/r 0..100 : wav-lautstärke rechts -/h 0..15 : hss-lautstärke diff --git a/system/regnatix/wplay.spin b/system/regnatix/wplay.spin deleted file mode 100644 index b0b8ef8..0000000 Binary files a/system/regnatix/wplay.spin and /dev/null differ diff --git a/system/regnatix/wplay.txt b/system/regnatix/wplay.txt deleted file mode 100644 index 525ef03..0000000 --- a/system/regnatix/wplay.txt +++ /dev/null @@ -1,5 +0,0 @@ -/? : Hilfetext -/p name.wav : WAV-Datei abspielen -/d : Verzeichnis wiedergeben -/l 0..100 : Lautstärke links -/r 0..100 : Lautstärke rechts diff --git a/zubehör/game boulderdash/bin/bd.bin b/zubehör/game boulderdash/bin/bd.bin deleted file mode 100644 index 3b68414..0000000 Binary files a/zubehör/game boulderdash/bin/bd.bin and /dev/null differ diff --git a/zubehör/game boulderdash/bin/bd.wav b/zubehör/game boulderdash/bin/bd.wav deleted file mode 100644 index c289dba..0000000 Binary files a/zubehör/game boulderdash/bin/bd.wav and /dev/null differ diff --git a/zubehör/game boulderdash/bin/bd_ntsc.bel b/zubehör/game boulderdash/bin/bd_ntsc.bel deleted file mode 100644 index f900e05..0000000 Binary files a/zubehör/game boulderdash/bin/bd_ntsc.bel and /dev/null differ diff --git a/zubehör/game boulderdash/bin/bd_pal.bel b/zubehör/game boulderdash/bin/bd_pal.bel deleted file mode 100644 index 57304e0..0000000 Binary files a/zubehör/game boulderdash/bin/bd_pal.bel and /dev/null differ diff --git a/zubehör/game boulderdash/musik/BONUS.SFX b/zubehör/game boulderdash/musik/BONUS.SFX deleted file mode 100644 index 97f538e..0000000 Binary files a/zubehör/game boulderdash/musik/BONUS.SFX and /dev/null differ diff --git a/zubehör/game boulderdash/musik/BONUS.SPN b/zubehör/game boulderdash/musik/BONUS.SPN deleted file mode 100644 index ada8775..0000000 --- a/zubehör/game boulderdash/musik/BONUS.SPN +++ /dev/null @@ -1 +0,0 @@ -bonus ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $03,$03,$FF,$0F,$02,$00,$05,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/zubehör/game boulderdash/musik/CRACK.SFX b/zubehör/game boulderdash/musik/CRACK.SFX deleted file mode 100644 index f3de3e2..0000000 Binary files a/zubehör/game boulderdash/musik/CRACK.SFX and /dev/null differ diff --git a/zubehör/game boulderdash/musik/CRACK.SPN b/zubehör/game boulderdash/musik/CRACK.SPN deleted file mode 100644 index 424e89e..0000000 --- a/zubehör/game boulderdash/musik/CRACK.SPN +++ /dev/null @@ -1 +0,0 @@ -crack ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$22,$01,$0F,$11,$00,$05,$00,$55,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/zubehör/game boulderdash/musik/ERROR.SFX b/zubehör/game boulderdash/musik/ERROR.SFX deleted file mode 100644 index c671bc0..0000000 Binary files a/zubehör/game boulderdash/musik/ERROR.SFX and /dev/null differ diff --git a/zubehör/game boulderdash/musik/ERROR.SPN b/zubehör/game boulderdash/musik/ERROR.SPN deleted file mode 100644 index 131169e..0000000 --- a/zubehör/game boulderdash/musik/ERROR.SPN +++ /dev/null @@ -1 +0,0 @@ -error ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $04,$01,$80,$0F,$00,$00,$00,$00,$FF,$00,$00,$80 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/zubehör/game boulderdash/musik/EXP.SFX b/zubehör/game boulderdash/musik/EXP.SFX deleted file mode 100644 index feb669b..0000000 Binary files a/zubehör/game boulderdash/musik/EXP.SFX and /dev/null differ diff --git a/zubehör/game boulderdash/musik/EXP.SPN b/zubehör/game boulderdash/musik/EXP.SPN deleted file mode 100644 index bd1258f..0000000 --- a/zubehör/game boulderdash/musik/EXP.SPN +++ /dev/null @@ -1 +0,0 @@ -exp ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $06,$04,$10,$0F,$00,$00,$00,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/zubehör/game boulderdash/musik/Mahoney - BoulderDash (Commodore 69 mix).mp3 b/zubehör/game boulderdash/musik/Mahoney - BoulderDash (Commodore 69 mix).mp3 deleted file mode 100644 index 5f82040..0000000 Binary files a/zubehör/game boulderdash/musik/Mahoney - BoulderDash (Commodore 69 mix).mp3 and /dev/null differ diff --git a/zubehör/game boulderdash/musik/RKO- The Def Guide to C64 MP3 remakes. I bet you can't do this on a SID..url b/zubehör/game boulderdash/musik/RKO- The Def Guide to C64 MP3 remakes. I bet you can't do this on a SID..url deleted file mode 100644 index 274cdb6..0000000 --- a/zubehör/game boulderdash/musik/RKO- The Def Guide to C64 MP3 remakes. I bet you can't do this on a SID..url +++ /dev/null @@ -1,2 +0,0 @@ -[InternetShortcut] -URL=http://remix.kwed.org/index.php?search=boulder diff --git a/zubehör/game boulderdash/musik/WALL.SFX b/zubehör/game boulderdash/musik/WALL.SFX deleted file mode 100644 index dec7ab7..0000000 Binary files a/zubehör/game boulderdash/musik/WALL.SFX and /dev/null differ diff --git a/zubehör/game boulderdash/musik/WALL.SPN b/zubehör/game boulderdash/musik/WALL.SPN deleted file mode 100644 index 8465ad0..0000000 --- a/zubehör/game boulderdash/musik/WALL.SPN +++ /dev/null @@ -1 +0,0 @@ -wall ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $04,$FF,$FF,$0F,$01,$00,$01,$00,$FF,$06,$20,$00 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/zubehör/game boulderdash/musik/WavFormat.pdf b/zubehör/game boulderdash/musik/WavFormat.pdf deleted file mode 100644 index f5098a4..0000000 Binary files a/zubehör/game boulderdash/musik/WavFormat.pdf and /dev/null differ diff --git a/zubehör/game boulderdash/musik/bd1.wav b/zubehör/game boulderdash/musik/bd1.wav deleted file mode 100644 index 8d39c07..0000000 Binary files a/zubehör/game boulderdash/musik/bd1.wav and /dev/null differ diff --git a/zubehör/game boulderdash/musik/bd2.wav b/zubehör/game boulderdash/musik/bd2.wav deleted file mode 100644 index 35f20a5..0000000 Binary files a/zubehör/game boulderdash/musik/bd2.wav and /dev/null differ diff --git a/zubehör/game boulderdash/musik/bd3.wav b/zubehör/game boulderdash/musik/bd3.wav deleted file mode 100644 index eb6173f..0000000 Binary files a/zubehör/game boulderdash/musik/bd3.wav and /dev/null differ diff --git a/zubehör/game boulderdash/musik/bd4.wav b/zubehör/game boulderdash/musik/bd4.wav deleted file mode 100644 index 06b3d3d..0000000 Binary files a/zubehör/game boulderdash/musik/bd4.wav and /dev/null differ diff --git a/zubehör/game boulderdash/musik/bd5.wav b/zubehör/game boulderdash/musik/bd5.wav deleted file mode 100644 index b1041da..0000000 Binary files a/zubehör/game boulderdash/musik/bd5.wav and /dev/null differ diff --git a/zubehör/game boulderdash/musik/bd6.wav b/zubehör/game boulderdash/musik/bd6.wav deleted file mode 100644 index 4efac14..0000000 Binary files a/zubehör/game boulderdash/musik/bd6.wav and /dev/null differ diff --git a/zubehör/game boulderdash/readme.rtf b/zubehör/game boulderdash/readme.rtf deleted file mode 100644 index 625df0e..0000000 Binary files a/zubehör/game boulderdash/readme.rtf and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_095.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_095.spin deleted file mode 100644 index 6d331a5..0000000 --- a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_095.spin +++ /dev/null @@ -1,3812 +0,0 @@ -'Boulderdash, for Hydra or Demo Board. -'Version 0.95 -'Released to the public domain. - -' Changes: -' 2009-11-10 - Modified for the Demo Board. -' - Added 'readkey' routine to allow playing the game from the keyboard. -' - Rockford now can be moved around and the screen scrolls automatically. -' 2009-11-12 - Halved tile horizontal resolution to eliminate redundant pixel pairs -' (and BoulderDash uses 8x16 tiles anyway). This also halves tile memory -' requirements. -' - The scroller now runs in a separate cog. -' 2009-11-13 - Changed pixel clock settings in order to display 20 tiles per line, -' as in the classic C64/Atari BoulderDash I. -' - Added code to handle boulders and diamonds. Rockford cannot push yet -' boulders or pick-up diamonds. -' 2009-11-14 - Reversed pixel order in video driver in order to avoid having to define -' mirrored tiles. -' - Added more tiles, hopefully all the characters are there. -' - The scroller cog now also handles animated characters. -' - Rockford can pick-up diamonds and the screen flashes when diamond count -' reaches the target. -' - Rockford now walks facing in the right direction and gets "bored". -' 2009-11-15 - Added an optional status line. -' - Added a character font for the status line. -' - Main game loop moved to a separate routine. -' - Boulders can be pushed around. -' - New routines to cover and uncover the screen. -' - Added an infinite loop to the main routine, pressing ESC restarts the -' game. -' 2009-11-16 - Inbox now morphs into Rockford. -' - Rockford can exit through the Outbox. -' 2009-11-17 - Added hardware detection feature (Hydra, Demo Board, etc.) Video driver -' changed accordingly. Not sure if keyboard will work on Hydra. -' - Falling boulders and diamonds now can kill Rockford. -' - Added PAL timings table to video driver, but PAL mode is not working yet. -' 2009-11-18 - Synchronized scroller to vertical sync, scrolling is totally smooth now. -' - PAL mode now works. -' 2009-11-25 - Started adding support for fireflies and butterflies. Had to split the -' case statement in the main game loop into sections due to poor performance. -' - Added code to decode raw cave data of original Atari/C64 BoulderDash I. -' You can now import your favorite caves :) -' 2009-11-26 - Fireflies and butterflies now explode in contact with Rockford. -' - Time counts down, but there is no "out of time" condition yet. -' 2009-11-27 - Implemented the "pick without moving" Rockford trick (use left CTRL key). -' - Stop cave when time runs out. -' - Do not advance to next cave until current one is successfully completed. -' Game is now playable! Use LeftCtrl + LeftShift as a "cheat" to move to -' next cave without finishing the current one. The Escape key restarts the -' current cave. Sorry, no score points yet. -' 2009-11-28 - Status line now handled by a separate cog. -' - Flashing "Out of time" message when time runs out. -' - Space bar now pauses game. -' - Score points implemented. -' - No more unlimited lifes, sorry ;))) -' - New life every 500 points. -' 2009-11-29 - Using a table of codes to reset the 'scanned' flag avoids a second case -' statement and improves performance. -' - Implemented amoebas and magic wall. Now all the original caves work! -' - Added all the original BoulderDash I caves (except the intermissions) -' - Added a Level variable. After successfully finishing the last cave the -' game starts again from the first one of the next difficulty level. -' 2009-11-30 - Fixed a bug in amoeba handling that caused cave M to crash. -' 2009-12-02 - Game controller apparently does not like to be read too fast. -' - Added intermission caves. -' 2009-12-04 - Aborting the current cave will cost you a life. -' - Restart (or exit) automatically the cave if "Out of time" has been -' flashing for more than a minute without user input. -' - Throtle down Rockford a bit in levels 1 and 2 (is running too fast!) -' 2009-12-05 - Added the title screen (had a hard time scrolling the background behind -' those big letters!). -' - Starting cave and level can be selected from the title screen. -' - Run a demo if the title screen has been inactive for about a minute. -' 2009-12-06 - Fixed boulder/diamond rolling off: they must move to the side first, -' not directly diagonally. -' - Added a preliminary sound object. Nothing there yet. -' - Bonus points at the end of the cave increase with difficulty level. -' 2009-12-07 - First steps towards SID emulation via PWM. Single voice waveform generation -' already works (well, sort of). No envelope control yet. -' 2009-12-08 - SID emulator: noise waveform, amplitude control, 3 voices. Envelope -' control using a separate cog (see the ChangeLog in the SIDemu.spin file). -' 2009-12-09 - Integrated the SID emulator into the game, running out of cogs. -' - Got the main tune working. -' - Added a few other sound/noise effects the game. -' - Boulder noise interfers with diamond pick up sound. Which one has the -' preference? -' 2009-12-12 - Added the cover/uncover screen sound. -' - Added the bonus points sound. -' - Added amoeba and magic wall sound. -' -' TODO: -' - Finish it :) -' - Add broadcast TV mode with sound carrier to use the TV antenna input (like in old times :)) -' -' -' Anpassungen für den Hive -' -' 09-01-2010 - Entfernung der Hardwareerkennung -' - Anpassung Konfiguration an Hive/Bellatrix -' - Gamecontr. entfernt -' - Auskommentierung Sound -' 12-01-2010 - Scrolltext im Titelscreen -' - Optimierung Soundobjekt - -con - - _clkmode = xtal1 + pll16x - _xinfreq = 5_000_000 - - ' The supported video modes - TV_NTSC = 0 - TV_PAL = 1 - - TV_MODE = TV_PAL ' <--- Select your TV system here -- NTSC or PAL ---<<< - - ' Game controller codes - GP_RIGHT = %00000001 '(Right arrow) Move right - GP_LEFT = %00000010 '(Left arrow) Move left - GP_DOWN = %00000100 '(Down arrow) Move down - GP_UP = %00001000 '(Up arrow) Move up - GP_START = %00010000 '(Left Shift) Start game. Together with GP_SELECT: go to next cave (cheat) - GP_SELECT = %00100000 '(Left Ctrl) Pick - GP_B = %01000000 '(Space) Pause - GP_A = %10000000 '(Escape) Abort and restart current cave - -var - long nes - long last_dir - long cave_addr - long random_ptr - long screen_height - long sx, sy - long video_params[7] - long sound_pin - long Score - long NextLife - byte temp_cave[40*22] - byte HWType - byte Cave - byte Level - byte CaveNumber - byte DiamondCount - byte DiamondsNeeded - byte DiamondValue - byte ExtraValue - byte CaveTime - byte Men - byte Alive - byte MagicWallStatus - byte MagicWallTime - byte AmoebaStatus - byte AmoebaTime - byte target - byte vsync - byte door_x, door_y - -obj - tv: "Boulderdash_Tile_TV" - kb: "Keyboard" - sc: "Scroller" - st: "Status" - rr: "RealRandom" - sn: "Sounds" - -pub main | success - - video_params[0] := %0_11_101_000 ' Set Mode for VCFG - video_params[1] := 2 ' Set Pingroup used by TV driver. - video_params[2] := %0111_0000 ' Set Pinmask for VCFG pins. - video_params[3] := %0000_0111<<20 ' Set Pinmask for output pins. - - video_params[4] := TV_MODE - video_params[5] := @screen - video_params[6] := @vsync - - if video_params[4] == TV_NTSC - screen_height := 12 - else - screen_height := 14 - - rr.start 'start the real random number generator - random_ptr := rr.random_ptr - - bytefill(@screen, $00, constant(40 * 22)) 'clear screen - - tv.start(@video_params) 'start the TV driver - sc.start(@video_params, random_ptr) 'start the scroller - st.start(@video_params) 'start the status line handler - kb.start(17, 16) 'start the keyboard driver - sn.start 'start the sound engine - - cave_addr := @screen - - repeat - - repeat - success := TitleScreen - - palette.byte[1] := $04 - palette.byte[2] := $4B - palette.byte[3] := $06 - bytefill(@screen, $3C, constant(40 * 22)) 'fill the screen with the scrolling pattern - status := 0 - - Score := 0 - Men := 3 - - if success - quit - else - Demo - - repeat - - sn.music_off - - CaveNumber := byte[@@caves[Cave]] - st.player_params(1, Men, CaveNumber, Level, Score) - st.set_mode(st#STATUS_PRE) - - CreateCave(@@caves[Cave], @temp_cave) - st.cave_params(DiamondsNeeded, DiamondValue, CaveTime) - - last_dir := -1 'last rockford direction - sc.rockford_go(0) 'rockford initially stands still - sc.milling_off - - if CaveNumber > 16 - 'intermission - sx := 0 - sy := 0 - else - 'normal cave - sx := door_x - 10 - sx <#= constant(40 - 20) - sx #>= 0 - sy := door_y - screen_height / 2 - sy <#= 22 - screen_height - sy #>= 0 - sc.scroll_to(sx * 8, sy * 16) - - Uncover 'uncover screen - success := GameLoop - - if not success - if --Men == 0 - st.set_mode(st#STATUS_GAME_OVER) - waitcnt(clkfreq + cnt) - Cover - quit - - if success or CaveNumber > 16 - 'go to next cave only if current one was completed - 'but never restart intermissions - if success and CaveNumber > 16 and Men < 9 - ++Men 'the promised bonus life - if caves[++Cave] == 0 - if Level < 4 - ++Level - Cave := 0 - - st.player_params(1, Men, CaveNumber, Level, Score) - st.set_mode(st#STATUS_PRE) - Cover 'cover screen with scrolling pattern - - -pub TitleScreen | x, y, h, t, i, j, lk, ticks, count, scr - - if TV_MODE == TV_NTSC - h := 24 - t := 2 - ticks := constant(60 * 130 / 2) 'dr235 - else - h := 28 - t := 4 - ticks := constant(50 * 130 / 2) - - scr := 0 - - bytefill(@screen, $00, constant(40 * 28)) 'clear screen - palette.byte[1] := $FC - palette.byte[2] := $FB - palette.byte[3] := $06 - st.set_mode(st#STATUS_NONE) - - Cave := 0 - Level := 0 - CaveNumber := byte[@@caves[Cave]] - - repeat x from 0 to 19 - byte[@screen + x] := $B1 - byte[@screen + x + (h - 6) * 40] := $B1 - repeat y from 1 to h - 7 - byte[@screen + y * 40] := $B5 - repeat x from 1 to 18 - byte[@screen + x + y * 40] := $B0 - byte[@screen + 19 + y * 40] := $B6 - - i := 0 - repeat y from t to t + 6 - repeat x from 1 to 18 - byte[@screen + x + y * 40] := big_boulder.byte[i++] - - i := 0 - repeat y from t + 8 to t + 14 - repeat x from 3 to 15 - byte[@screen + x + y * 40] := big_dash.byte[i++] - - status := 2 - scroll := 0 - 'st.text_out(@screen + (h - 4) * 40, @str1, 20) - scr++ - repeat i from 0 to 19 - 'j := str1.byte[i] - j := scr1.byte[i + scr] - if j == $20 - byte[@screen + (h - 4) * 40 + i] := $90 - else - byte[@screen + (h - 4) * 40 + i] := j + $A0 - st.text_out(@screen + (h - 3) * 40, @str2, 20) - st.text_out(@screen + (h - 2) * 40, @str3, 20) - st.text_out(@screen + (h - 1) * 40, @str4, 20) - - screen.byte[(h - 2) * 40] := $D1 'player(s) - screen.byte[(h - 2) * 40 + 10] := $D1 'joystick(s) - screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 - screen.byte[(h - 1) * 40 + 17] := Level + $D1 - - lk := 0 'last key - count := ticks - - sn.music_on - - repeat while count > 0 - - 'wait for vsync, count every other tick - repeat while vsync == 0 - repeat while vsync <> 0 - repeat while vsync == 0 - repeat while vsync <> 0 - --count - - 'scrolltext - scr++ - if (scr>>2) > 318 '(scr2 - scr1) - scr := 0 - repeat i from 0 to 19 - j := scr1.byte[i + (scr>>2)] - if j == $20 - byte[@screen + (h - 4) * 40 + i] := $90 - else - byte[@screen + (h - 4) * 40 + i] := j + $A0 - - ' scrolling background - x := @tiles + constant(16 * $B0) - y := word[x] - wordmove(x, x + 2, 7) - word[x + 15] := y - - repeat i from 0 to 5 - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $BD) + y + 16 * i - j := @tiles + constant(16 * $B3) + y + 16 * i - word[j] := word[x] | word[t] - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $C3) + y - j := @tiles + constant(16 * $B9) + y - word[j] := (word[x] & $00FF) | word[t] - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $C4) + y - j := @tiles + constant(16 * $BA) + y - word[j] := (word[x] & $FF00) | word[t] - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $C5) + y - j := @tiles + constant(16 * $BB) + y - word[j] := (word[x] & $FF00) | word[t] - - i := read_input - if i <> lk - count := ticks 'reset countdown - if i & GP_START - sn.music_off - return 1 - elseif i & GP_LEFT - if Cave => 5 - Cave -= 5 - CaveNumber := byte[@@caves[Cave]] - screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 - elseif i & GP_RIGHT - if Cave =< 10 - Cave += 5 - CaveNumber := byte[@@caves[Cave]] - screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 - elseif i & GP_UP - if Level < 4 - ++Level - screen.byte[(h - 1) * 40 + 17] := Level + $D1 - elseif i & GP_DOWN - if Level > 0 - --Level - screen.byte[(h - 1) * 40 + 17] := Level + $D1 - lk := i - - sn.music_off - return 0 - -dat - -big_boulder - byte $B2, $B1, $B7, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0 - byte $B2, $B0, $B9, $B2, $B1, $BA, $B5, $B9, $B2, $B0, $BA, $B1, $B7, $B2, $B1, $BA, $B1, $B7 - byte $B2, $B1, $B8, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9 - byte $B2, $B1, $B7, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B5, $BA, $B1, $B8 - byte $B2, $B0, $B9, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B0, $BA, $B1, $B7 - byte $B2, $B1, $B5, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B5, $B9 - byte $B2, $B1, $B8, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B8, $B2, $B1, $BA, $B5, $B9 - -big_dash - byte $BA, $B1, $B3, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0 - byte $BA, $B5, $BA, $B0, $B2, $B7, $B2, $B1, $BA, $B5, $BA, $BB, $BC - byte $BA, $B5, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $BA, $B0, $B0 - byte $BA, $B5, $BA, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B1, $B0, $B0 - byte $BA, $B5, $BA, $BA, $B5, $B9, $B0, $B2, $BA, $B5, $BA, $B0, $B0 - byte $BA, $B1, $B1, $BA, $B5, $B9, $B2, $B1, $BA, $B5, $BA, $B0, $B0 - byte $BA, $B1, $B4, $BA, $B5, $B9, $B2, $B1, $BA, $B5, $BA, $B0, $B0 - -str1 byte " HIVE VERSION " -str2 byte "PRESS BUTTON TO PLAY" -str3 byte " PLAYER JOYSTICK" -str4 byte " CAVE: LEVEL: " - -scr1 byte " " - byte "THANKS :SPORK FROGS: :HPG: :AHLE2: AND THE OTHER PROPELLERHEADS FOR THE BASECODE" - byte " " - byte "THANKS PEX :MAHONEY: TUFVESSON FOR THE COOL MUSIC" - byte " " - byte "GRUSS AN ALLE HIVE-DROHNEN" - byte " " - byte "HIVE: WE ARE BORG - RESISTANCE IS FUTILE" - byte " " - byte "DROHNE235: HIVE-VERSION 2010" - byte " " -scr2 byte 0 - -pub Demo - - Score := 0 - Cave := 0 'demo happens on cave A - Level := 0 - CaveNumber := byte[@@caves[Cave]] - st.player_params(1, Men, CaveNumber, Level, Score) - st.set_mode(st#STATUS_PRE) - - CreateCave(@@caves[Cave], @temp_cave) - st.cave_params(DiamondsNeeded, DiamondValue, CaveTime) - - last_dir := -1 'last rockford direction - sc.rockford_go(0) 'rockford initially stands still - sc.milling_off - - sx := door_x - 10 - sx <#= constant(40 - 20) - sx #>= 0 - sy := door_y - screen_height / 2 - sy <#= 22 - screen_height - sy #>= 0 - sc.scroll_to(sx * 8, sy * 16) - - demo_ptr := @demo_data 'set demo data pointer - kcount := 0 - - Uncover 'uncover screen - GameLoop 'play the demo - Cover 'cover screen back - -var - - long demo_ptr - byte kcount, last_key - -dat - -' The low nibble of each byte is the direction of movement: -' $x0 = no movement -' $x1 = Right -' $x2 = Left -' $x3 = Down -' $x4 = Up -' bit 3 ($x8) set means GP_SELECT is pressed (not used here anyway) -' The high nibble is the number of scan frames to apply the movement. -' $00 means end of demo data. - -demo_data - byte $F0, $10, $14, $71, $23, $91, $40, $23 - byte $41, $34, $12, $40, $14, $B1, $13, $21 - byte $40, $63, $11, $43, $32, $40, $13, $12 - byte $41, $32, $40, $44, $52, $34, $52, $43 - byte $32, $50, $34, $A2, $14, $32, $13, $62 - byte $43, $11, $40, $33, $41, $43, $42, $24 - byte $21, $34, $A1, $A1, $13, $41, $13, $41 - byte $23, $50, $51, $44, $51, $60, $13, $00 - -pub readkey : key - - if demo_ptr - if kcount > 0 - --kcount - return last_key - else - key := byte[demo_ptr++] - if key == $00 - demo_ptr := 0 - else - kcount := key / 16 - 1 - case key & $07 - $0: last_key := 0 - $1: last_key := GP_RIGHT - $2: last_key := GP_LEFT - $3: last_key := GP_DOWN - $4: last_key := GP_UP - if key & $08 - last_key |= GP_SELECT - return last_key - - key := 0 - if kb.keystate($C0) - key |= GP_LEFT - if kb.keystate($C1) - key |= GP_RIGHT - if kb.keystate($C2) - key |= GP_UP - if kb.keystate($C3) - key |= GP_DOWN - if kb.keystate($F2) 'left control key - key |= GP_SELECT - if kb.keystate($CB) 'escape key - key |= GP_A - if kb.keystate($20) 'space key - key |= GP_B - if kb.keystate($F0) 'left shift - key |= GP_START - if kb.keystate($0D) 'or enter - key |= GP_START - -pub read_input - - return readkey - - -var - byte RandSeed1, RandSeed2 - -pub GetRandom | temp1, temp2, temp3, cy, r - -'' Generate a pseudo-random number, given a seed -'' The output matches the one used in the original BoulderDash I - - temp1 := (RandSeed1 & 1) << 7 - temp2 := (RandSeed2 & 1) << 7 - temp3 := (RandSeed2 >> 1) & $7F - - r := RandSeed2 + temp2 - if r > $FF - cy := 1 - r &= $FF - else - cy := 0 - - r += cy + $13 - if r > $FF - cy := 1 - r &= $FF - else - cy := 0 - - RandSeed2 := r - - r := RandSeed1 + cy + temp1 - if r > $FF - cy := 1 - r &= $FF - else - cy := 0 - - r += cy + temp3 - RandSeed1 := r & $FF - -dat - -caves long @cave_A, @cave_B, @cave_C, @cave_D, @inter_1 - long @cave_E, @cave_F, @cave_G, @cave_H, @inter_2 - long @cave_I, @cave_J, @cave_K, @cave_L, @inter_3 - long @cave_M, @cave_N, @cave_O, @cave_P, @inter_4 - long 0 - -cave_A byte 1 'cave number - byte 20 'magic wall/amoeba time - byte 10 'initial diamond value - byte 15 'extra diamond value - byte 10, 11, 12, 13, 14 'randomizer seed per level - byte 12, 12, 12, 12, 12 'diamonds needed per level - byte 150, 110, 70, 40, 30 'time per level - byte $08, $0B, $09, $D4, $20 'bg color 1, bg color 2, fg color - byte $00, $10, $14, $00 'random objects - byte $3C, $32, $09, $00 'probability of object - byte $42, $01, $09, $1E, $02 'raw cave data - byte $42, $09, $10, $1E, $02 - byte $25, $03, $04 - byte $04, $26, $12 - byte $FF - -cave_B byte 2 - byte 20 - byte 20, 50 - byte $03, $00, $01, $57, $58 - byte $0A, $0C, $09, $0D, $0A - byte $96, $6E, $46, $46, $46 - byte $0A, $04, $09, $00, $00 - byte $00, $10, $14, $08 - byte $3C, $32, $09, $02 - byte $42, $01, $08, $26, $02, $42, $01, $0F, $26, $02, $42, $08, $03, $14, $04, $42 - byte $10, $03, $14, $04, $42, $18, $03, $14, $04, $42, $20, $03, $14, $04, $40, $01 - byte $05, $26, $02, $40, $01, $0B, $26, $02, $40, $01, $12, $26, $02, $40, $14, $03 - byte $14, $04, $25, $12, $15, $04, $12, $16, $FF - -cave_C byte 3 - byte $00 - byte $0F, $00 - byte $00, $32, $36, $34, $37 - byte $18, $17, $18, $17, $15 - byte $96, $64, $5A, $50, $46 - byte $09, $08, $09, $04, $00 - byte $02, $10, $14, $00 - byte $64, $32, $09, $00 - byte $25, $03, $04, $04, $27, $14, $FF - -cave_D byte 4 - byte $14 - byte $05, $14 - byte $00, $6E, $70, $73, $77 - byte $24, $24, $24, $24, $24 - byte $78, $64, $50, $3C, $32 - byte $04, $08, $09, $00, $00 - byte $10, $00, $00, $00 - byte $14, $00, $00, $00 - byte $25, $01, $03, $04, $26, $16, $81, $08, $0A, $04, $04, $00, $30, $0A, $0B, $81 - byte $10, $0A, $04, $04, $00, $30, $12, $0B, $81, $18, $0A, $04, $04, $00, $30, $1A - byte $0B, $81, $20, $0A, $04, $04, $00, $30, $22, $0B, $FF - -cave_E byte $05, $14, $32, $5A - byte $00, $00, $00, $00, $00 - byte $04, $05, $06, $07, $08 - byte $96, $78, $5A, $3C, $1E - byte $09, $0A, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $25, $01, $03, $04, $27, $16, $80, $08, $0A, $03, $03, $00, $80, $10, $0A, $03 - byte $03, $00, $80, $18, $0A, $03, $03, $00, $80, $20, $0A, $03, $03, $00, $14, $09 - byte $0C, $08, $0A, $0A, $14, $11, $0C, $08, $12, $0A, $14, $19, $0C, $08, $1A, $0A - byte $14, $21, $0C, $08, $22, $0A, $80, $08, $10, $03, $03, $00, $80, $10, $10, $03 - byte $03, $00, $80, $18, $10, $03, $03, $00, $80, $20, $10, $03, $03, $00, $14, $09 - byte $12, $08, $0A, $10, $14, $11, $12, $08, $12, $10, $14, $19, $12, $08, $1A, $10 - byte $14, $21, $12, $08, $22, $10, $FF - -cave_F byte $06, $14, $28, $3C - byte $00, $14, $15, $16, $17 - byte $04, $06, $07, $08, $08 - byte $96, $78, $64, $5A, $50 - byte $0E, $0A, $09, $00, $00 - byte $10, $00, $00, $00 - byte $32, $00, $00, $00 - byte $82, $01, $03, $0A, $04, $00, $82, $01, $06, $0A, $04, $00, $82, $01, $09, $0A - byte $04, $00, $82, $01, $0C, $0A, $04, $00, $41, $0A, $03, $0D, $04, $14, $03, $05 - byte $08, $04, $05, $14, $03, $08, $08, $04, $08, $14, $03, $0B, $08, $04, $0B, $14 - byte $03, $0E, $08, $04, $0E, $82, $1D, $03, $0A, $04, $00, $82, $1D, $06, $0A, $04 - byte $00, $82, $1D, $09, $0A, $04, $00, $82, $1D, $0C, $0A, $04, $00, $41, $1D, $03 - byte $0D, $04, $14, $24, $05, $08, $23, $05, $14, $24, $08, $08, $23, $08, $14, $24 - byte $0B, $08, $23, $0B, $14, $24, $0E, $08, $23, $0E, $25, $03, $14, $04, $26, $14 - byte $FF - -cave_G byte $07, $4B, $0A, $14 - byte $02, $07, $08, $0A, $09 - byte $0F, $14, $19, $19, $19 - byte $78, $78, $78, $78, $78 - byte $09, $0A, $0D, $00, $00 - byte $00, $10, $08, $00 - byte $64, $28, $02, $00 - byte $42, $01, $07, $0C, $02, $42, $1C, $05, $0B, $02, $7A, $13, $15, $02, $02, $14 - byte $04, $06, $14, $04, $0E, $14, $04, $16, $14, $22, $04, $14, $22, $0C, $14, $22 - byte $16, $25, $14, $03, $04, $27, $07, $FF - -cave_H byte $08, $14, $0A, $14 - byte $01, $03, $04, $05, $06 - byte $0A, $0F, $14, $14, $14 - byte $78, $6E, $64, $5A, $50 - byte $02, $0E, $09, $00, $00 - byte $00, $10, $08, $00 - byte $5A, $32, $02, $00 - byte $14, $04, $06, $14, $22, $04, $14, $22, $0C, $04, $00, $05, $25, $14, $03, $42 - byte $01, $07, $0C, $02, $42, $01, $0F, $0C, $02, $42, $1C, $05, $0B, $02, $42, $1C - byte $0D, $0B, $02, $43, $0E, $11, $08, $02, $14, $0C, $10, $00, $0E, $12, $14, $13 - byte $12, $41, $0E, $0F, $08, $02, $FF - -cave_I byte $09, $14, $05, $0A - byte $64, $89, $8C, $FB, $33 - byte $4B, $4B, $50, $55, $5A - byte $96, $96, $82, $82, $78 - byte $08, $04, $09, $00, $00 - byte $10, $14, $00, $00 - byte $F0, $78, $00, $00 - byte $82, $05, $0A, $0D, $0D, $00, $01, $0C, $0A, $82, $19, $0A, $0D, $0D, $00, $01 - byte $1F, $0A, $42, $11, $12, $09, $02, $40, $11, $13, $09, $02, $25, $07, $0C, $04 - byte $08, $0C, $FF - -cave_J byte $0A, $14, $19, $3C - byte $00, $00, $00, $00, $00 - byte $0C, $0C, $0C, $0C, $0C - byte $96, $82, $78, $6E, $64 - byte $06, $08, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $25, $0D, $03, $04, $27, $16, $54, $05, $04, $11, $03, $54, $15, $04, $11, $05 - byte $80, $05, $0B, $11, $03, $08, $C2, $01, $04, $15, $11, $00, $0D, $04, $C2, $07 - byte $06, $0D, $0D, $00, $0D, $06, $C2, $09, $08, $09, $09, $00, $0D, $08, $C2, $0B - byte $0A, $05, $05, $00, $0D, $0A, $82, $03, $06, $03, $0F, $08, $00, $04, $06, $54 - byte $04, $10, $04, $04, $FF - -cave_K byte $0B, $14, $32, $00 - byte $00, $04, $66, $97, $64 - byte $06, $06, $06, $06, $06 - byte $78, $78, $96, $96, $F0 - byte $0B, $08, $09, $00, $00 - byte $00, $10, $08, $00 - byte $64, $50, $02, $00 - byte $42, $0A, $03, $09, $04, $42, $14, $03, $09, $04, $42, $1E, $03, $09, $04, $42 - byte $09, $16, $09, $00, $42, $0C, $0F, $11, $02, $42, $05, $0B, $09, $02, $42, $0F - byte $0B, $09, $02, $42, $19, $0B, $09, $02, $42, $1C, $13, $0B, $01, $14, $04, $03 - byte $14, $0E, $03, $14, $18, $03, $14, $22, $03, $14, $04, $16, $14, $23, $15, $25 - byte $14, $14, $04, $26, $11, $FF - -cave_L byte $0C, $14, $14, $00 - byte $00, $3C, $02, $3B, $66 - byte $13, $13, $0E, $10, $15 - byte $B4, $AA, $A0, $A0, $A0 - byte $0C, $0A, $09, $00, $00 - byte $00, $10, $14, $00 - byte $3C, $32, $09, $00 - byte $42, $0A, $05, $12, $04, $42, $0E, $05, $12, $04, $42, $12, $05, $12, $04, $42 - byte $16, $05, $12, $04, $42, $02, $06, $0B, $02, $42, $02, $0A, $0B, $02, $42, $02 - byte $0E, $0F, $02, $42, $02, $12, $0B, $02, $81, $1E, $04, $04, $04, $00, $08, $20 - byte $05, $81, $1E, $09, $04, $04, $00, $08, $20, $0A, $81, $1E, $0E, $04, $04, $00 - byte $08, $20, $0F, $25, $03, $14, $04, $27, $16, $FF - -cave_M byte $0D, $8C, $05, $08 - byte $00, $01, $02, $03, $04 - byte $32, $37, $3C, $46, $50 - byte $A0, $9B, $96, $91, $8C - byte $06, $08, $0D, $00, $00 - byte $10, $00, $00, $00 - byte $28, $00, $00, $00 - byte $25, $12, $03, $04, $0A, $03, $3A, $14, $03, $42, $05, $12, $1E, $02, $70, $05 - byte $13, $1E, $02, $50, $05, $14, $1E, $02, $C1, $05, $15, $1E, $02, $FF - -cave_N byte $0E, $14, $0A, $14 - byte $00, $00, $00, $00, $00 - byte $1E, $23, $28, $2A, $2D - byte $96, $91, $8C, $87, $82 - byte $0C, $08, $09, $00, $00 - byte $10, $00, $00, $00 - byte $00, $00, $00, $00 - byte $81, $0A, $0A, $0D, $0D, $00, $70, $0B, $0B, $0C, $03, $C1, $0C, $0A, $03, $0D - byte $C1, $10, $0A, $03, $0D, $C1, $14, $0A, $03, $0D, $50, $16, $08, $0C, $02, $48 - byte $16, $07, $0C, $02, $C1, $17, $06, $03, $04, $C1, $1B, $06, $03, $04, $C1, $1F - byte $06, $03, $04, $25, $03, $03, $04, $27, $14, $FF - -cave_O byte $0F, $08, $0A, $14 - byte $01, $1D, $1E, $1F, $20 - byte $0F, $14, $14, $19, $1E - byte $78, $78, $78, $78, $8C - byte $08, $0E, $09, $00, $00 - byte $00, $10, $08, $00 - byte $64, $50, $02, $00 - byte $42, $02, $04, $0A, $03, $42, $0F, $0D, $0A, $01, $41, $0C, $0E, $03, $02, $43 - byte $0C, $0F, $03, $02, $04, $14, $16, $25, $14, $03, $FF - -cave_P byte $10, $14, $0A, $14 - byte $01, $78, $81, $7E, $7B - byte $0C, $0F, $0F, $0F, $0C - byte $96, $96, $96, $96, $96 - byte $09, $0A, $09, $00, $00 - byte $10, $00, $00, $00 - byte $32, $00, $00, $00 - byte $25, $01, $03, $04, $27, $04, $81, $08, $13, $04, $04, $00, $08, $0A, $14, $C2 - byte $07, $0A, $06, $08, $43, $07, $0A, $06, $02, $81, $10, $13, $04, $04, $00, $08 - byte $12, $14, $C2, $0F, $0A, $06, $08, $43, $0F, $0A, $06, $02, $81, $18, $13, $04 - byte $04, $00, $08, $1A, $14, $81, $20, $13, $04, $04, $00, $08, $22, $14, $FF - -inter_1 byte $11, $14, $1E, $00 - byte $0A, $0B, $0C, $0D, $0E - byte $06, $06, $06, $06, $06 - byte $0A, $0A, $0A, $0A, $0A - byte $0E, $02, $09, $00, $00 - byte $00, $14, $00, $00 - byte $FF, $09, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $00, $32, $0A, $0C, $10 - byte $0A, $04, $01, $0A, $05, $25, $03, $05, $04, $12, $0C, $FF - -inter_2 byte $12, $14, $0A, $00 - byte $0A, $0B, $0C, $0D, $0E - byte $10, $10, $10, $10, $10 - byte $0F, $0F, $0F, $0F, $0F - byte $06, $0F, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $01, $50, $01, $03, $09 - byte $03, $48, $02, $03, $08, $03, $54, $01, $05, $08, $03, $50, $01, $06, $07, $03 - byte $50, $12, $03, $09, $05, $54, $12, $05, $08, $05, $50, $12, $06, $07, $05, $25 - byte $01, $04, $04, $12, $04, $FF - -inter_3 byte $13, $04, $0A, $00 - byte $0A, $0B, $0C, $0D, $0E - byte $0E, $0E, $0E, $0E, $0E - byte $14, $14, $14, $14, $14 - byte $06, $08, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $00, $54, $01, $0C, $12 - byte $02, $88, $0F, $09, $04, $04, $08, $25, $08, $03, $04, $12, $07, $FF - -inter_4 byte $14, $03, $1E, $00 - byte $00, $00, $00, $00, $00 - byte $06, $06, $06, $06, $06 - byte $14, $14, $14, $14, $14 - byte $06, $08, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $01, $D0, $0B, $03, $03 - byte $02, $80, $0B, $07, $03, $06, $00, $43, $0B, $06, $03, $02, $43, $0B, $0A, $03 - byte $02, $50, $08, $07, $03, $03, $25, $03, $03, $04, $09, $0A, $FF - -dat - -' C64 color table approximation. Not the most accurate one, but gives the desired effect. - -ctable byte $02, $06, $4B, $BC, $2B, $9C, $EB, $7D - byte $4B, $4A, $4B, $04, $04, $9D, $0B, $04 - -pub CreateCave(raw_cave, dest) | i, j, k, cx, cy, ci, co, dir, len - -'' Create cave contents from the description array - - CaveNumber := byte[raw_cave] - - RandSeed1 := 0 - RandSeed2 := byte[raw_cave + 4 + Level] - - ' Set colors - palette.byte[1] := ctable.byte[byte[raw_cave + 20]] - palette.byte[2] := ctable.byte[byte[raw_cave + 19]] - palette.byte[3] := ctable.byte[byte[raw_cave + 21] - 8] - - ' Place random objects - repeat cy from 1 to 21 - repeat cx from 0 to 39 - co := $01 ' dirt - GetRandom - repeat ci from 0 to 3 - if RandSeed1 < byte[raw_cave + 28 + ci] - co := byte[raw_cave + 24 + ci] - byte[dest + cx + cy * 40] := co - - ' Steel bounds - repeat cx from 0 to 39 - byte[dest + cx] := $07 - byte[dest + cx + 21 * 40] := $07 - repeat cy from 0 to 21 - byte[dest + cy * 40] := $07 - byte[dest + 39 + cy * 40] := $07 - - 'Decode raw data - i := raw_cave + 32 - repeat - ci := byte[i++] - cx := byte[i++] - cy := byte[i++] - 2 - if ci == $FF - quit - case ci & $C0 - $00: - byte[dest + cx + cy * 40] := ci & $3F - if (ci & $3F) == $25 - door_x := cx - door_y := cy - $40: - len := byte[i++] - dir := byte[i++] - repeat - byte[dest + cx + cy * 40] := ci & $3F - case dir - 0: --cy - 1: --cy - ++cx - 2: ++cx - 3: ++cy - ++cx - 4: ++cy - 5: ++cy - --cx - 6: --cx - 7: --cy - --cx - while --len > 0 - $80: - len := byte[i++] - 1 'width - dir := byte[i++] - 1 'height - co := byte[i++] - repeat j from 0 to len - byte[dest + cx + j + cy * 40] := ci & $3F - byte[dest + cx + j + (cy + dir) * 40] := ci & $3F - repeat j from 1 to dir - 1 - byte[dest + cx + (cy + j) * 40] := ci & $3F - repeat k from 1 to len - 1 - byte[dest + cx + k + (cy + j) * 40] := co - byte[dest + cx + len + (cy + j) * 40] := ci & $3F - $C0: - len := byte[i++] - 1 'width - dir := byte[i++] - 1 'height - repeat j from 0 to len - byte[dest + cx + j + cy * 40] := ci & $3F - byte[dest + cx + j + (cy + dir) * 40] := ci & $3F - repeat j from 0 to dir - byte[dest + cx + (cy + j) * 40] := ci & $3F - byte[dest + cx + len + (cy + j) * 40] := ci & $3F - - DiamondsNeeded := byte[raw_cave + 9 + Level] - CaveTime := byte[raw_cave + 14 + Level] - MagicWallTime := byte[raw_cave + 1] - if MagicWallTime > CaveTime - AmoebaTime := CaveTime - else - AmoebaTime := CaveTime - MagicWallTime - DiamondValue := byte[raw_cave + 2] - ExtraValue := byte[raw_cave + 3] - DiamondCount := 0 - -pub Cover | n, cell - -'' Ramdomly cover the screen with a scrolling pattern - - n := 0 - repeat while n <> constant(40 * 22) - cell := ||long[random_ptr] // constant(40 * 22) - if byte[cave_addr + cell] <> $3C - byte[cave_addr + cell] := $3C - ++n - sn.cover_sound - waitcnt(clkfreq / 1000 + cnt) - -pub Uncover | n, cell - -'' Ramdomly uncover the screen - - n := 0 - repeat while n <> constant(40 * 22) - cell := ||long[random_ptr] // constant(40 * 22) - if byte[cave_addr + cell] == $3C - byte[cave_addr + cell] := temp_cave[cell] - ++n - sn.cover_sound - waitcnt(clkfreq / 1000 + cnt) - -dat - -reset byte $00, $01, $02, $03, $04, $05, $06, $07 - byte $08, $09, $0A, $0B, $08, $09, $0A, $0B - byte $10, $10, $12, $12, $14, $14, $16, $16 - byte $18, $19, $1A, $1B, $1C, $1D, $1E, $1F - byte $20, $21, $22, $23, $24, $25, $26, $27 - byte $28, $29, $2A, $2B, $2C, $2D, $2E, $2F - byte $30, $31, $32, $33, $30, $31, $32, $33 - byte $38, $38, $3A, $3B, $3C, $3D, $3E, $3F - -dirs long 1, 40, -1, -40 - -pub GameLoop | cx, cy, ca, cn, ob, o1, o2, ready, count, amoebas, enclosed - -'' Main game loop. Everything happens here. - - target := 0 - count := 0 'scans before rockford is born - ready := 0 - - NextLife := ((Score / 500) + 1) * 500 - MagicWallStatus := 0 'dormant - AmoebaStatus := 0 'growing slowly - - ' game loop - repeat - Alive := false - amoebas := 0 - enclosed := true - repeat cy from 1 to 21 - repeat cx from 0 to 39 - ca := cave_addr + cx + cy * 40 'address of current object - - 'large case statements execute rather slowly to the point - 'that the game becomes unplayable, so we have to split the - 'case into sections (too bad there is no indirect function - 'call in Spin) - - ob := byte[ca] - if ob < $10 - case ob - $04: 'out door - if target - byte[ca] := $05 - $08: 'firefly facing left - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca + 40] == $00 - byte[ca + 40] := $0F - byte[ca] := $00 - elseif byte[ca - 1] == $00 - byte[ca - 1] := $0C - byte[ca] := $00 - else - byte[ca] := $0D - $09: 'firefly facing up - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca - 1] == $00 - byte[ca - 1] := $0C - byte[ca] := $00 - elseif byte[ca - 40] == $00 - byte[ca - 40] := $0D - byte[ca] := $00 - else - byte[ca] := $0E - $0A: 'firefly facing right - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca - 40] == $00 - byte[ca - 40] := $0D - byte[ca] := $00 - elseif byte[ca + 1] == $00 - byte[ca + 1] := $0E - byte[ca] := $00 - else - byte[ca] := $0F - $0B: 'firefly facing down - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca + 1] == $00 - byte[ca + 1] := $0E - byte[ca] := $00 - elseif byte[ca + 40] == $00 - byte[ca + 40] := $0F - byte[ca] := $00 - else - byte[ca] := $0C - - elseif ob < $20 - case ob - $10: 'boulder - case byte[ca + 40] 'check object below - $00: - 'boulder can fall - byte[ca] := $00 - byte[ca + 40] := $13 'falling boulder, scanned - sn.boulder_sound - $02, $10, $14: 'wall, boulder or diamond - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'boulder can roll left - byte[ca] := $00 - byte[ca - 1] := $13 'falling boulder, scanned - sn.boulder_sound - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'boulder can roll right - byte[ca] := $00 - byte[ca + 1] := $13 'falling boulder, scanned - sn.boulder_sound - $12: 'falling boulder - case byte[ca + 40] 'check object below - $00: - 'boulder can continue falling - byte[ca] := $00 - byte[ca + 40] := $13 'falling boulder, scanned - $03: 'magic wall - byte[ca] := $00 - if MagicWallStatus < 2 'dormant or milling - if MagicWallStatus == 0 - MagicWallStatus := 1 - cn := st.get_time #> MagicWallTime - MagicWallTime := cn - MagicWallTime - sc.milling_on - sn.magic_wall_sound_on - if byte[ca + constant(40 * 2)] == $00 - byte[ca + constant(40 * 2)] := $17 'falling diamond, scanned - sn.diamond_sound - $02, $10, $14: 'wall, boulder or diamond - 'we hit something - sn.boulder_sound - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'boulder can roll left - byte[ca] := $00 - byte[ca - 1] := $13 'falling boulder, scanned - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'boulder can roll right - byte[ca] := $00 - byte[ca + 1] := $13 'falling boulder, scanned - else - 'boulder came to a stop - byte[ca] := $11 'stationary boulder, scanned - $38: 'rockford? - 'explode - ExplodeBelow(ca, $1B) - $08, $09, $0A, $0B: 'firefly? - ExplodeBelow(ca, $1B) - $30, $31, $32, $33: 'butterfly? - ExplodeBelow(ca, $20) - other: - 'boulder came to a stop - byte[ca] := $11 'stationary boulder, scanned - sn.boulder_sound - $14: 'diamond - case byte[ca + 40] 'check object below - $00: - 'diamond can fall - byte[ca] := $00 - byte[ca + 40] := $17 'falling diamond, scanned - sn.diamond_sound - $02, $10, $14: 'wall, boulder or diamond - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'diamond can roll left - byte[ca] := $00 - byte[ca - 1] := $17 'falling diamond, scanned - sn.diamond_sound - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'diamond can roll right - byte[ca] := $00 - byte[ca + 1] := $17 'falling diamond, scanned - sn.diamond_sound - $16: 'falling diamond - case byte[ca + 40] 'check object below - $00: - 'diamond can continue falling - byte[ca] := $00 - byte[ca + 40] := $17 'falling diamond, scanned - $03: 'magic wall - byte[ca] := $00 - if MagicWallStatus < 2 'dormant or milling - if MagicWallStatus == 0 - MagicWallStatus := 1 - cn := st.get_time #> MagicWallTime - MagicWallTime := cn - MagicWallTime - sc.milling_on - sn.magic_wall_sound_on - if byte[ca + constant(40 * 2)] == $00 - byte[ca + constant(40 * 2)] := $13 'falling boulder, scanned - sn.boulder_sound - $02, $10, $14: 'wall, boulder or diamond - 'we hit something - sn.diamond_sound - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'diamond can roll left - byte[ca] := $00 - byte[ca - 1] := $17 'falling diamond, scanned - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'diamond can roll right - byte[ca] := $00 - byte[ca + 1] := $17 'falling diamond, scanned - else - 'diamond came to a stop - byte[ca] := $15 'stationary diamond, scanned - $38: 'rockford? - 'explode - ExplodeBelow(ca, $1B) - $08, $09, $0A, $0B: 'firefly - ExplodeBelow(ca, $1B) - $30, $31, $32, $33: 'butterfly - ExplodeBelow(ca, $20) - other: - 'diamond came to a stop - byte[ca] := $15 'stationary diamond, scanned - sn.diamond_sound - $1B, $1C, $1D, $1E: 'explosion stages - byte[ca]++ - $1F: 'explosion to space, final stage - byte[ca] := $00 - - elseif ob < $30 - case ob - $20, $21, $22, $23: 'explosion stages - byte[ca]++ - $24: 'explosion to diamonds, final stage - byte[ca] := $15 - $25: 'inbox - Alive := true - if count++ == 20 - byte[ca] := $26 - sn.crack_sound - $26, $27: - Alive := true - byte[ca]++ - $28: - Alive := true - byte[ca] := $38 'rockford is born - sc.rockford_reset - st.set_time(CaveTime) - st.set_mode(st#STATUS_GAME) - ready := 1 - - elseif ob < $40 - case ob - $30: 'butterfly facing down - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca - 1] == $00 - byte[ca - 1] := $35 - byte[ca] := $00 - elseif byte[ca + 40] == $00 - byte[ca + 40] := $34 - byte[ca] := $00 - else - byte[ca] := $37 - $31: 'butterfly facing left - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca - 40] == $00 - byte[ca - 40] := $36 - byte[ca] := $00 - elseif byte[ca - 1] == $00 - byte[ca - 1] := $35 - byte[ca] := $00 - else - byte[ca] := $34 - $32: 'butterfly facing up - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca + 1] == $00 - byte[ca + 1] := $37 - byte[ca] := $00 - elseif byte[ca - 40] == $00 - byte[ca - 40] := $36 - byte[ca] := $00 - else - byte[ca] := $35 - $33: 'butterfly facing right - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca + 40] == $00 - byte[ca + 40] := $34 - byte[ca] := $00 - elseif byte[ca + 1] == $00 - byte[ca + 1] := $37 - byte[ca] := $00 - else - byte[ca] := $36 - - $38: 'rockford - Alive := true - nes := read_input - cn := 0 - if nes - if nes & GP_RIGHT - last_dir := 1 - sc.rockford_go(last_dir) - cn := ca + 1 - elseif nes & GP_LEFT - last_dir := -1 - sc.rockford_go(last_dir) - cn := ca - 1 - elseif nes & GP_UP - sc.rockford_go(last_dir) - cn := ca - 40 - elseif nes & GP_DOWN - sc.rockford_go(last_dir) - cn := ca + 40 - - if cn - if nes & GP_SELECT - o1 := $39 - o2 := $00 - else - o1 := $00 - o2 := $39 - case byte[cn] - $00, $01: 'empty or dirt - sn.moving_sound(byte[cn]) - byte[ca] := o1 - byte[cn] := o2 - $05: 'out door - sn.magic_wall_sound_off - sn.amoeba_sound_off - byte[ca] := o1 - byte[cn] := o2 - AddBonusPoints - waitcnt(clkfreq + cnt) '1 second delay - return true 'means cave succesfully completed - $10, $11: 'boulder, stationary - if (nes & GP_RIGHT) and (byte[cn + 1] == $00) and ((long[random_ptr] & $03) == 0) - 'boulder can be pushed - byte[cn + 1] := byte[cn] - byte[ca] := o1 - byte[cn] := o2 - sn.boulder_sound - elseif (nes & GP_LEFT) and (byte[cn - 1] == $00) and ((long[random_ptr] & $03) == 0) - 'boulder can be pushed - byte[cn - 1] := byte[cn] - byte[ca] := o1 - byte[cn] := o2 - sn.boulder_sound - $14, $15, $16, $17: 'diamond - byte[ca] := o1 - byte[cn] := o2 - sn.pick_sound - st.set_diamond_count(++DiamondCount) - IncrementScore(DiamondValue) - if DiamondCount == DiamondsNeeded and not target - 'flash screen when target is reached - sc.flash - sn.crack_sound - DiamondValue := ExtraValue - st.set_diamond_value(DiamondValue) - target := 1 - - else - sc.rockford_go(0) - - 'screen may need scrolling - if CaveNumber > 16 - 'do not scroll intermission caves - sx := 0 - sy := 0 - else - if cx - sx > constant(20 - 6) - sx += constant(10 - 5) - sx <#= constant(40 - 20) - elseif cx - sx < 5 - sx -= constant(10 - 5) - sx #>= 0 - if cy - sy > screen_height - 4 - sy += screen_height / 2 - 3 - sy <#= 22 - screen_height - elseif cy - sy < 3 - sy -= screen_height / 2 - 3 - sy #>= 0 - sc.scroll_to(sx * 8, sy * 16) - - $3A: 'amoeba - if ready - sn.amoeba_sound_on - if AmoebaStatus == 2 - 'turn into stone - byte[ca] := $10 'stationary boulder - elseif AmoebaStatus == 3 - 'turn into diamond - byte[ca] := $14 'stationary diamond - else - ++amoebas - if enclosed - enclosed := CheckEnclosed(ca) - cn := long[random_ptr] - if AmoebaStatus == 0 - cn &= $7F - else - cn &= $0F - if cn =< 3 - cn := ca + dirs[cn & $03] - ob := byte[cn] - if ob == $00 or ob == $01 - byte[cn] := $3A - - 'reset scanned flag - cn := ca - constant(40 + 1) - byte[cn] := reset.byte[byte[cn]] - - if MagicWallStatus == 1 - if st.get_time < MagicWallTime - MagicWallStatus := 2 'expired - sc.milling_off - sn.magic_wall_sound_off - - if AmoebaStatus == 0 - if st.get_time < AmoebaTime - AmoebaStatus := 1 'growing fast - if amoebas > 200 - AmoebaStatus := 2 'grew too big, turn into stones - elseif enclosed - AmoebaStatus := 3 'fully enclosed, turn into diamonds - if amoebas == 0 - sn.amoeba_sound_off - - if demo_ptr - nes := 0 - else - nes := read_input - if nes & GP_A - st.set_time(0) 'stop the time - sn.magic_wall_sound_off - sn.amoeba_sound_off - return false 'not completed, restart the same level - - elseif nes & GP_B - 'pause game - st.set_mode(st#STATUS_PAUSE) - repeat while nes & GP_B - nes := read_input - repeat while (nes & GP_B) == 0 - nes := read_input - if ready - st.set_mode(st#STATUS_GAME) - else - st.set_mode(st#STATUS_PRE) - repeat while nes & GP_B - nes := read_input - - elseif (nes & GP_SELECT) and (nes & GP_START) - st.set_time(0) - sn.magic_wall_sound_off - sn.amoeba_sound_off - return true '*cheat* go to the next level - - cn := st.get_time - if cn < 10 - sn.time_ending_sound(cn) - - if ready and (cn == 0) - 'out of time - sn.magic_wall_sound_off - sn.amoeba_sound_off - st.set_mode(st#STATUS_OUT_OF_TIME) - count := 60 * 60 'approx 1 minute - repeat while count > 0 - repeat while vsync == 0 - repeat while vsync <> 0 - --count - nes := read_input - if nes & GP_A - return false 'not completed, restart the same level - elseif (nes & GP_SELECT) and (nes & GP_START) - return true '*cheat* go to the next level - return false - - if Level < 2 - waitcnt(clkfreq / 50 + cnt) - -pub ExplodeBelow(cell, towhat) - if byte[cell - 1] <> $07 - byte[cell - 1] := towhat + 1 - if byte[cell] <> $07 - byte[cell] := towhat + 1 - if byte[cell + 1] <> $07 - byte[cell + 1] := towhat - if byte[cell + constant(40 - 1)] <> $07 - byte[cell + constant(40 - 1)] := towhat - if byte[cell + 40] <> $07 - byte[cell + 40] := towhat - if byte[cell + constant(40 + 1)] <> $07 - byte[cell + constant(40 + 1)] := towhat - if byte[cell + constant(40 * 2 - 1)] <> $07 - byte[cell + constant(40 * 2 - 1)] := towhat - if byte[cell + constant(40 * 2)] <> $07 - byte[cell + constant(40 * 2)] := towhat - if byte[cell + constant(40 * 2 + 1)] <> $07 - byte[cell + constant(40 * 2 + 1)] := towhat - sn.explosion_sound - -pub ExplodeCenter(cell, towhat) - if byte[cell - constant(40 + 1)] <> $07 - byte[cell - constant(40 + 1)] := towhat + 1 - if byte[cell - 40] <> $07 - byte[cell - 40] := towhat + 1 - if byte[cell - constant(40 - 1)] <> $07 - byte[cell - constant(40 - 1)] := towhat + 1 - if byte[cell - 1] <> $07 - byte[cell - 1] := towhat + 1 - if byte[cell] <> $07 - byte[cell] := towhat + 1 - if byte[cell + 1] <> $07 - byte[cell + 1] := towhat - if byte[cell + constant(40 - 1)] <> $07 - byte[cell + constant(40 - 1)] := towhat - if byte[cell + 40] <> $07 - byte[cell + 40] := towhat - if byte[cell + constant(40 + 1)] <> $07 - byte[cell + constant(40 + 1)] := towhat - sn.explosion_sound - -pub CheckAround(cell) | ob - ob := byte[cell - 40] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - ob := byte[cell - 1] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - ob := byte[cell + 1] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - ob := byte[cell + 40] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - return false - -pub CheckEnclosed(cell) | ob, i - repeat i from 0 to 3 - ob := byte[cell + dirs[i]] - if ob == $00 or ob == $01 - return false - return true - -pub IncrementScore(amount) - Score += amount - st.set_score(Score) - if Score => NextLife and Men < 9 - ++Men - sc.new_life - NextLife += 500 - -pub AddBonusPoints | i, j - - i := j := st.get_time - repeat while i > 0 - st.set_time(--i) - IncrementScore(Level + 1) - if i < 10 - sn.time_ending_sound(i) - waitcnt(clkfreq / 32 + cnt) - else - sn.bonus_point_sound(j - i) - -dat - - long 0 'align - - ' screen array -screen byte $00[40*28] - -' color index 3 1 2 0 -palette long $06_6B_04_02 - -' -x- -y- -scroll long $0000_0000 - -status long 1 'set this to 1 to show the status line at the top - - ' status line - byte $90[20] - - ' foreground color for status line characters - byte $06[20] - - ' tiles -tiles word %%0_0_0_0_0_0_0_0 ' $00 space - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_1_0_0_1_0_1 ' $01 dirt - word %%1_1_0_0_1_0_0_1 - word %%0_1_2_1_0_1_2_0 - word %%1_1_0_1_1_1_0_1 - word %%1_0_1_1_1_0_1_1 - word %%0_2_1_0_1_2_1_0 - word %%2_1_1_2_2_0_1_1 - word %%1_0_1_1_1_1_2_0 - word %%0_1_1_1_2_1_1_1 - word %%1_2_0_1_1_1_2_0 - word %%1_2_1_0_2_1_0_1 - word %%0_2_1_1_0_1_2_1 - word %%1_0_1_0_1_0_1_0 - word %%1_1_0_0_1_1_0_1 - word %%1_0_1_2_0_1_0_0 - word %%0_1_0_0_1_0_1_0 - - word %%0_3_3_3_0_3_3_3 ' $02 brick wall - word %%0_2_3_3_0_2_3_3 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_2 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - word %%0_3_3_3_0_3_3_3 - word %%0_2_3_3_0_2_3_3 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_2 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - - word %%0_3_3_3_0_3_3_3 ' $03 magic wall - word %%0_2_3_3_0_2_2_2 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_3 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - word %%0_3_3_3_0_3_3_3 - word %%0_2_3_3_0_2_3_3 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_2 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $04 out door (invisible) - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $05 out door (flashing) - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $06 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $07 steel wall - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $08 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $09 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0B - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0C - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $10 boulder stationary - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $11 boulder stationary, scanned this frame - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $12 boulder falling - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $13 boulder falling, scanned this frame - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $14 diamond stationary - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $15 diamond stationary, scanned - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $16 diamond falling - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $17 diamond falling, scanned - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $18 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $19 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1B explode to space frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1C explode to space frame 2 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_0_3_0_1_0_0 - word %%0_3_1_0_0_0_3_0 - word %%0_1_0_0_1_3_1_0 - word %%0_3_0_1_0_0_1_0 - word %%0_0_0_0_1_3_0_0 - word %%0_3_1_0_1_0_0_0 - word %%0_1_0_1_0_1_0_0 - word %%0_0_3_1_1_0_3_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1D explode to space frame 3 - word %%0_0_0_0_0_0_0_0 - word %%0_3_0_0_3_0_3_0 - word %%0_0_0_3_0_2_0_0 - word %%0_3_0_1_0_1_3_0 - word %%0_1_2_0_0_0_1_0 - word %%0_2_0_0_2_1_2_0 - word %%3_1_0_2_0_0_2_0 - word %%0_0_0_0_1_1_0_0 - word %%3_1_2_0_1_0_3_0 - word %%0_2_0_2_0_1_0_0 - word %%0_0_1_2_1_0_1_0 - word %%3_0_1_0_1_0_3_0 - word %%0_0_0_3_3_0_0_0 - word %%0_3_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1E explode to space frame 4, same as frame 2 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_0_3_0_1_0_0 - word %%0_3_1_0_0_0_3_0 - word %%0_1_0_0_1_3_1_0 - word %%0_3_0_1_0_0_1_0 - word %%0_0_0_0_1_3_0_0 - word %%0_3_1_0_1_0_0_0 - word %%0_1_0_1_0_1_0_0 - word %%0_0_3_1_1_0_3_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1F explode to space frame 5, same as frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $20 explode to diamond frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_3_0_0_0 ' $21 explode to diamond frame 2 - word %%3_0_3_0_0_0_3_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_3_0_3_0_3_0 - word %%0_3_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%3_0_0_0_0_0_0_3 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%3_0_0_0_0_0_3_0 - word %%0_0_0_0_0_0_0_0 - word %%0_3_0_0_3_0_0_3 - word %%0_0_0_3_0_0_0_0 - word %%3_0_0_0_0_0_3_0 - word %%0_0_3_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_1_1_0_0_0 ' $22 explode to diamond frame 3 - word %%0_3_0_3_0_0_0_0 - word %%0_0_1_0_0_1_0_3 - word %%0_0_3_0_2_3_0_0 - word %%0_0_0_2_0_0_1_0 - word %%0_0_0_0_0_0_3_0 - word %%1_0_2_0_0_2_0_1 - word %%3_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%3_0_2_0_0_0_0_3 - word %%0_0_0_0_0_2_2_0 - word %%0_3_0_2_0_0_3_0 - word %%0_0_1_0_1_2_0_0 - word %%0_0_3_0_0_0_0_3 - word %%0_3_0_1_2_0_0_0 - word %%0_0_0_3_3_0_0_0 - - word %%0_0_0_1_1_0_0_0 ' $23 explode to diamond frame 4 - word %%0_0_0_3_3_0_0_0 - word %%0_0_1_0_0_1_0_0 - word %%0_0_3_0_2_3_0_0 - word %%0_1_0_2_0_0_1_0 - word %%0_3_0_0_3_0_3_0 - word %%1_0_2_3_1_2_0_1 - word %%3_1_0_2_2_0_2_3 - word %%1_0_0_3_0_1_1_2 - word %%3_0_2_0_2_0_0_3 - word %%0_1_1_0_0_3_2_0 - word %%0_3_0_2_2_0_3_0 - word %%0_0_1_3_0_2_0_0 - word %%0_0_3_0_1_3_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_3_3_0_0_0 - - word %%0_0_0_1_1_0_0_0 ' $24 explode to diamond frame 5 - word %%0_0_0_3_3_0_0_0 - word %%0_0_1_2_1_1_0_0 - word %%0_0_3_2_2_3_0_0 - word %%0_1_1_3_3_2_1_0 - word %%0_3_2_3_2_2_3_0 - word %%1_2_3_1_1_3_3_1 - word %%3_3_2_3_3_2_1_3 - word %%1_2_2_3_2_3_1_2 - word %%3_2_3_1_3_1_1_3 - word %%0_1_2_3_1_3_2_0 - word %%0_3_2_1_2_1_3_0 - word %%0_0_1_3_3_2_0_0 - word %%0_0_3_2_1_3_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_3_3_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $25 inbox, flashing - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $26 inbox morphing into rockford, same as explode to space frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $27 inbox morphing into rockford, same as explode to space frame 2 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_0_3_0_1_0_0 - word %%0_3_1_0_0_0_3_0 - word %%0_1_0_0_1_3_1_0 - word %%0_3_0_1_0_0_1_0 - word %%0_0_0_0_1_3_0_0 - word %%0_3_1_0_1_0_0_0 - word %%0_1_0_1_0_1_0_0 - word %%0_0_3_1_1_0_3_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $28 inbox morphing into rockford, same as explode to space frame 3 - word %%0_0_0_0_0_0_0_0 - word %%0_3_0_0_3_0_3_0 - word %%0_0_0_3_0_2_0_0 - word %%0_3_0_1_0_1_3_0 - word %%0_1_2_0_0_0_1_0 - word %%0_2_0_0_2_1_2_0 - word %%3_1_0_2_0_0_2_0 - word %%0_0_0_0_1_1_0_0 - word %%3_1_2_0_1_0_3_0 - word %%0_2_0_2_0_1_0_0 - word %%0_0_1_2_1_0_1_0 - word %%3_0_1_0_1_0_3_0 - word %%0_0_0_3_3_0_0_0 - word %%0_3_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $29 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2B - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2C - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $30 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $31 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $32 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $33 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $34 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $35 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $36 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $37 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $38 rockford - word %%0_0_2_0_0_2_0_0 - word %%0_0_2_2_2_2_0_0 - word %%0_2_0_2_2_0_2_0 - word %%0_2_0_2_2_0_2_0 - word %%0_0_2_2_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_2_2_0_0 - word %%0_2_0_3_3_0_2_0 - word %%0_0_3_2_2_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_1_3_3_1_0_0 - word %%0_0_1_0_0_1_0_0 - word %%0_0_1_0_0_1_0_0 - word %%0_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $39 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3B - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $3C - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $3D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - -' chargen - - word %%0_0_0_0_0_0_0_0 ' $80 '0' - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $81 '1' - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $82 '2' - word %%0_3_3_3_3_3_0_0 - word %%3_3_0_0_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $83 - word %%0_3_3_3_3_3_3_0 - word %%0_0_0_0_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $84 - word %%3_3_0_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_0 - word %%3_3_3_3_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_0_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $85 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%0_0_0_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $86 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $87 - word %%3_3_3_3_3_3_3_0 - word %%3_0_0_0_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $88 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $89 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%0_3_3_3_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8A ':' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8B ';' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8C '/' - word %%0_0_0_0_0_0_3_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - word %%0_3_3_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $90 space - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $91 'A' - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $92 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $93 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $94 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $95 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $96 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $97 - word %%0_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $98 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $99 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $9A - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%0_3_3_3_3_3_3_0 - word %%0_0_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $9B - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9C - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9D - word %%3_3_0_0_0_3_3_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_0_3_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9E - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9F - word %%0_3_3_3_3_3_0_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A1 - word %%0_0_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_3_3_0_0 - word %%0_3_3_3_3_3_3_0 - word %%0_0_3_3_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A2 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A3 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A4 - word %%3_3_3_3_3_3_3_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A5 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A6 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A7 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_3_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_0_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A8 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%0_0_3_3_3_3_0_0 - word %%0_0_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A9 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AA - word %%3_3_3_3_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $AB '(' - word %%0_0_0_0_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AC diamond - word %%0_0_0_3_0_0_0_0 - word %%0_0_3_0_3_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%3_0_0_0_0_0_3_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AD ')' - word %%0_0_3_3_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AE - word %%0_0_3_0_0_3_0_0 - word %%0_0_3_3_3_3_0_0 - word %%0_3_0_3_3_0_3_0 - word %%0_3_0_3_3_0_3_0 - word %%0_0_3_3_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AF ',' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - - word %%1_3_2_2_1_3_2_2 ' $B0 scrolling bgnd of the title screen - word %%1_2_2_2_1_2_2_2 - word %%0_1_2_2_0_1_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_1_3_2_2_1_3 - word %%2_2_1_2_2_2_1_2 - word %%2_2_0_1_2_2_0_1 - word %%2_2_2_2_2_2_2_2 - - word %%3_3_3_3_3_3_3_3 ' $B1 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - - word %%1_2_3_3_3_3_3_3 ' $B2 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - - word %%3_3_3_3_0_0_0_0 ' $B3 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - - word %%3_3_3_3_3_3_3_3 ' $B4 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $B5 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%0_0_0_0_3_3_3_3 ' $B6 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - - word %%0_0_0_0_0_0_0_0 ' $B7 - word %%3_0_0_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $B8 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_0_0_0_0_0_0_0 - - word %%1_2_3_3_0_0_0_0 ' $B9 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - - word %%0_0_0_0_1_2_3_3 ' $BA - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - - word %%0_0_0_0_1_2_3_3 ' $BB - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_3 - - word %%3_3_3_3_3_3_3_3 ' $BC - word %%2_3_2_3_3_3_2_3 - word %%2_3_2_2_3_2_2_3 - word %%3_3_2_2_2_2_2_3 - word %%3_3_2_3_2_3_2_3 - word %%3_3_2_3_3_3_2_3 - word %%3_3_2_3_3_3_2_3 - word %%3_3_3_3_3_3_3_3 - - word %%3_3_3_3_0_0_0_0 ' $BD - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - - word %%3_3_3_3_3_3_3_3 ' $BE - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $BF - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%0_0_0_0_3_3_3_3 ' $C0 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - - word %%0_0_0_0_0_0_0_0 ' $C1 - word %%3_0_0_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $C2 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_0_0_0_0_0_0_0 - - word %%1_2_3_3_0_0_0_0 ' $C3 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - - word %%0_0_0_0_1_2_3_3 ' $C4 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - - word %%0_0_0_0_1_2_3_3 ' $C5 - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_3 - - word %%0_0_0_0_0_0_0_0 ' $C6 unused... padding for second chargen (see below) - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $C7 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $C8 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $C9 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CA - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CB - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CC - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CD - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CE - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CF - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - -' this is basically the same character generator, but using -' a different color (I need this for the title screen). Either -' this, or separate color attributes for each cell of the -' screen. We have still some space here, so... - - word %%0_0_0_0_0_0_0_0 ' $D0 '0' - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D1 '1' - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $D2 '2' - word %%0_2_2_2_2_2_0_0 - word %%2_2_0_0_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $D3 - word %%0_2_2_2_2_2_2_0 - word %%0_0_0_0_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D4 - word %%2_2_0_0_0_0_0_0 - word %%2_2_0_0_0_0_0_0 - word %%2_2_0_2_2_2_0_0 - word %%2_2_2_2_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_0_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D5 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%0_0_0_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D6 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D7 - word %%2_2_2_2_2_2_2_0 - word %%2_0_0_0_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D8 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D9 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DA ':' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DB ';' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DC '/' - word %%0_0_0_0_0_0_2_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - word %%0_2_2_0_0_0_0_0 - word %%2_2_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DD - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DE - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DF - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E0 space - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E1 'A' - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E2 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E3 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E4 - word %%2_2_2_2_2_0_0_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E5 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E6 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E7 - word %%0_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E8 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E9 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $EA - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $EB - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_2_2_0_0_0 - word %%2_2_2_2_2_0_0_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $EC - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $ED - word %%2_2_0_0_0_2_2_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_0_2_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $EE - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $EF - word %%0_2_2_2_2_2_0_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F1 - word %%0_0_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_2_2_0_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_2_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F2 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F3 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F4 - word %%2_2_2_2_2_2_2_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F5 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F6 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F7 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_2_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_0_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F8 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%0_0_2_2_2_2_0_0 - word %%0_0_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F9 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FA - word %%2_2_2_2_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $FB '(' - word %%0_0_0_0_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FC diamond - word %%0_0_0_2_0_0_0_0 - word %%0_0_2_0_2_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%2_0_0_0_0_0_2_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_0_2_0_0_0 - word %%0_0_0_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FD ')' - word %%0_0_2_2_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FE - word %%0_0_2_0_0_2_0_0 - word %%0_0_2_2_2_2_0_0 - word %%0_2_0_2_2_0_2_0 - word %%0_2_0_2_2_0_2_0 - word %%0_0_2_2_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FF ',' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_Tile_TV.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_Tile_TV.spin deleted file mode 100644 index a7a35dd..0000000 Binary files a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_Tile_TV.spin and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Game_controller.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Game_controller.spin deleted file mode 100644 index dc4ed28..0000000 --- a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Game_controller.spin +++ /dev/null @@ -1 +0,0 @@ -con GP_RIGHT = %00000001 GP_LEFT = %00000010 GP_DOWN = %00000100 GP_UP = %00001000 GP_START = %00010000 GP_SELECT = %00100000 GP_B = %01000000 GP_A = %10000000 var long stack[6] long nes_bits pub start nes_bits := 0 'cognew(process, @stack) pub read 'return nes_bits return process pub process | i, bits ' set I/O ports to proper direction ' P3 = JOY_CLK (4) ' P4 = JOY_SH/LDn (5) ' P5 = JOY_DATAOUT0 (6) ' P6 = JOY_DATAOUT1 (7) ' NES Bit Encoding ' step 1: set I/Os DIRA[3] := 1 ' output DIRA[4] := 1 ' output DIRA[5] := 0 ' input DIRA[6] := 0 ' input repeat ' step 2: set clock and latch to 0 OUTA[3] := 0 ' JOY_CLK = 0 OUTA[4] := 0 ' JOY_SH/LDn = 0 'Delay(1) ' step 3: set latch to 1 OUTA[4] := 1 ' JOY_SH/LDn = 1 'Delay(1) ' step 4: set latch to 0 OUTA[4] := 0 ' JOY_SH/LDn = 0 ' step 5: read first bit of each game pad ' data is now ready to shift out ' first bit is ready ' left controller bits := INA[5] | (INA[6] << 8) ' step 7: read next 7 bits repeat i from 0 to 6 OUTA[3] := 1 ' JOY_CLK = 1 'Delay(1) OUTA[3] := 0 ' JOY_CLK = 0 bits := (bits << 1) bits := bits | INA[5] | (INA[6] << 8) 'Delay(1) ' invert bits to make positive logic and store result nes_bits := (!bits & $FFFF) return nes_bits \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Keyboard.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Keyboard.spin deleted file mode 100644 index 8eabe22..0000000 Binary files a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Keyboard.spin and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/RealRandom.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/RealRandom.spin deleted file mode 100644 index 53dd07f..0000000 Binary files a/zubehör/game boulderdash/sourcen/Bellatrix-Code/RealRandom.spin and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/SIDemu.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/SIDemu.spin deleted file mode 100644 index a7811be..0000000 Binary files a/zubehör/game boulderdash/sourcen/Bellatrix-Code/SIDemu.spin and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Scroller.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Scroller.spin deleted file mode 100644 index b67cdf8..0000000 --- a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Scroller.spin +++ /dev/null @@ -1 +0,0 @@ -' This cog takes care of the smooth scrolling and animates animated objects. ' Also: ' - flashes the screen when the game target is reached ' - signals about new life with random background pattern var long x, y, nx, ny long scroll_addr long tile_addr long palette_addr long stack[12] long rockford_dir long random_addr long vsync_addr byte flash_cnt byte new_life_cnt byte tapping byte blinking byte wall_milling pub start(video_params, rnd_addr) x := 0 y := 0 vsync_addr := long[video_params + constant(6 * 4)] random_addr := rnd_addr palette_addr := long[video_params + constant(5 * 4)] + constant(40 * 28) scroll_addr := palette_addr + 4 tile_addr := scroll_addr + constant(4 + 4 + 20 * 2) rockford_dir := 0 flash_cnt := 0 new_life_cnt := 0 blinking := 0 tapping := 0 wall_milling := 0 cognew(process, @stack) pub scroll_to(sx, sy) nx := sx ny := sy pub rockford_reset blinking := 0 tapping := 0 pub rockford_go(dir) rockford_dir := dir if rockford_dir <> 0 blinking := 0 tapping := 0 pub flash flash_cnt := 6 pub new_life new_life_cnt := 400 pub milling_on wall_milling := 1 pub milling_off wall_milling := 0 pub process | i, n, cp, temp n := 0 i := 0 repeat 'wait for vsync repeat while byte[vsync_addr] == 0 repeat while byte[vsync_addr] <> 0 if x <> nx or y <> ny if x > nx x := x - 1 elseif x < nx x := x + 1 if y > ny y := y - 2 elseif y < ny y := y + 2 long[scroll_addr] := (x << 16) + y if i == 0 'rockford if rockford_dir > 0 cp := @rockford_right + n elseif rockford_dir < 0 cp := @rockford_left + n else cp := @rockford if n == 0 if (byte[random_addr] & $03) == 0 blinking := 1 else blinking := 0 if (byte[random_addr] & $0F) == 0 tapping ^= 1 ifnot blinking or tapping wordmove(tile_addr + constant(32 * $38), cp, 16) wordmove(tile_addr + constant(32 * $39), cp, 16) else if blinking cp := @rockford_bored + n wordmove(tile_addr + constant(32 * $38), cp, 8) ' top part only wordmove(tile_addr + constant(32 * $39), cp, 8) if tapping cp := @rockford_bored + 16 + n wordmove(tile_addr + constant(32 * $38 + 16), cp, 8) ' bottom part only wordmove(tile_addr + constant(32 * $39 + 16), cp, 8) ' diamonds cp := @diamonds + n wordmove(tile_addr + constant(32 * $14), cp, 16) ' update all 4 variants wordmove(tile_addr + constant(32 * $15), cp, 16) wordmove(tile_addr + constant(32 * $16), cp, 16) wordmove(tile_addr + constant(32 * $17), cp, 16) ' fireflies cp := @firefly + n wordmove(tile_addr + constant(32 * $08), cp, 16) ' update all 8 variants wordmove(tile_addr + constant(32 * $09), cp, 16) wordmove(tile_addr + constant(32 * $0A), cp, 16) wordmove(tile_addr + constant(32 * $0B), cp, 16) wordmove(tile_addr + constant(32 * $0C), cp, 16) wordmove(tile_addr + constant(32 * $0D), cp, 16) wordmove(tile_addr + constant(32 * $0E), cp, 16) wordmove(tile_addr + constant(32 * $0F), cp, 16) ' butterflies cp := @butterfly + n wordmove(tile_addr + constant(32 * $30), cp, 16) ' update all 8 variants wordmove(tile_addr + constant(32 * $31), cp, 16) wordmove(tile_addr + constant(32 * $32), cp, 16) wordmove(tile_addr + constant(32 * $33), cp, 16) wordmove(tile_addr + constant(32 * $34), cp, 16) wordmove(tile_addr + constant(32 * $35), cp, 16) wordmove(tile_addr + constant(32 * $36), cp, 16) wordmove(tile_addr + constant(32 * $37), cp, 16) ' amoeba cp := @amoeba + n wordmove(tile_addr + constant(32 * $3A), cp, 16) wordmove(tile_addr + constant(32 * $3B), cp, 16) ' magic wall if wall_milling wordmove(tile_addr + constant(32 * $03), @magic_wall + (n & $60), 16) else wordmove(tile_addr + constant(32 * $03), @wall, 16) ' flashing door if n & 128 wordmove(tile_addr + constant(32 * $05), @door_frame, 16) wordmove(tile_addr + constant(32 * $25), @door_frame, 16) else wordmove(tile_addr + constant(32 * $05), tile_addr + constant(32 * $07), 16) wordmove(tile_addr + constant(32 * $25), tile_addr + constant(32 * $07), 16) n += 32 if n => constant(32 * 8) n := 0 i ^= 1 ' scrolling steel wall cp := tile_addr + constant(32 * $3C) temp := word[cp] wordmove(cp, cp + 2, 15) word[cp + 31] := temp if flash_cnt > 0 if --flash_cnt > 0 byte[palette_addr + 0] := $07 else byte[palette_addr + 0] := $02 if i == 0 and new_life_cnt > 0 if new_life_cnt-- == 1 wordfill(tile_addr, $00, 16) else cp := byte[random_addr] byte[tile_addr] := cp byte[tile_addr + 9] := cp cp := byte[random_addr] byte[tile_addr + 8] := cp byte[tile_addr + 1] := cp cp := byte[random_addr] byte[tile_addr + 16] := cp byte[tile_addr + 25] := cp cp := byte[random_addr] byte[tile_addr + 24] := cp byte[tile_addr + 17] := cp dat ' animated creatures, 8 frames per each ' -- amoeba amoeba word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%0_2_3_3_3_2_2_0 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%0_2_3_3_3_2_2_0 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_2_0_0_0_2_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_2_0_0_0_2_3 word %%3_3_2_0_0_0_2_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_2_0_0_0_2_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_2_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_2_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 ' -- fireflies firefly word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 ' -- diamonds diamonds word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_2_1_1_1_1_3_0 word %%0_1_0_0_0_0_2_0 word %%2_0_0_0_0_0_0_3 word %%1_1_1_1_1_1_1_2 word %%2_2_2_2_2_2_2_3 word %%1_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_0 word %%0_1_2_2_2_2_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_2_0_0_0_0_3_0 word %%0_1_0_0_0_0_2_0 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%2_3_3_3_3_3_3_3 word %%1_3_3_3_3_3_3_2 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_2_0_0_0_0_3_0 word %%0_1_1_1_1_1_2_0 word %%2_2_2_2_2_2_2_3 word %%1_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%1_2_2_2_2_2_2_2 word %%0_2_1_1_1_1_3_0 word %%0_1_0_0_0_0_2_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_2_1_1_1_1_3_0 word %%0_1_2_2_2_2_2_0 word %%2_3_3_3_3_3_3_3 word %%1_3_3_3_3_3_3_2 word %%2_2_2_2_2_2_2_3 word %%1_1_1_1_1_1_1_2 word %%0_2_0_0_0_0_3_0 word %%0_1_0_0_0_0_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_3 word %%1_2_2_2_2_2_2_2 word %%2_1_1_1_1_1_1_3 word %%1_0_0_0_0_0_0_2 word %%0_2_0_0_0_0_3_0 word %%0_1_1_1_1_1_2_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%2_2_2_2_2_2_2_3 word %%1_1_1_1_1_1_1_2 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%0_2_1_1_1_1_3_0 word %%0_1_2_2_2_2_2_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_3_3_3_3_3_0 word %%0_1_2_2_2_2_2_0 word %%2_1_1_1_1_1_1_3 word %%1_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_3 word %%1_1_1_1_1_1_1_2 word %%0_2_2_2_2_2_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 ' -- butterflies butterfly word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 word %%0_3_0_0_0_0_2_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_1_0 word %%0_2_3_0_0_2_2_0 word %%0_1_2_0_0_1_1_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_1_1_3_2_1_1_0 word %%0_2_2_2_1_2_2_0 word %%0_3_3_0_0_2_3_0 word %%0_3_2_0_0_1_3_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_2_0 word %%0_1_0_0_0_0_1_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_0_0_0_0_2_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_1_0 word %%0_2_3_0_0_2_2_0 word %%0_1_2_0_0_1_1_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_1_1_3_2_1_1_0 word %%0_2_2_2_1_2_2_0 word %%0_3_3_0_0_2_3_0 word %%0_3_2_0_0_1_3_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_2_0 word %%0_1_0_0_0_0_1_0 word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 ' rockford ' walking left rockford_left word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_1_0 word %%0_1_0_0_0_0_0_3 word %%0_1_0_0_0_0_0_3 word %%3_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_1_0 word %%0_1_0_0_0_0_0_3 word %%0_1_0_0_0_0_0_3 word %%3_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_1_3 word %%0_0_1_0_0_0_0_3 word %%0_3_3_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_0_0_0 word %%0_0_1_0_1_1_1_0 word %%0_0_1_0_0_1_3_0 word %%0_3_3_0_0_0_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_1_1_3_0_0 word %%0_0_3_3_0_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_0_0_0 word %%0_0_1_0_1_1_1_0 word %%0_0_1_0_0_1_3_0 word %%0_3_3_0_0_0_3_0 ' walking right rockford_right word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_1_1_3_3_1_0_0 word %%3_0_0_0_0_0_1_0 word %%3_0_0_0_0_0_1_0 word %%0_0_0_0_0_0_3_3 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_1_1_3_3_1_0_0 word %%3_0_0_0_0_0_1_0 word %%3_0_0_0_0_0_1_0 word %%0_0_0_0_0_0_3_3 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%3_1_1_1_0_1_0_0 word %%3_0_0_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_1_0_0 word %%0_1_1_1_0_1_0_0 word %%0_3_1_0_0_1_0_0 word %%0_3_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_3_1_1_0_0_0 word %%0_0_3_0_3_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_1_0_0 word %%0_1_1_1_0_1_0_0 word %%0_3_1_0_0_1_0_0 word %%0_3_0_0_0_3_3_0 ' blinking eyes / tapping foot rockford_bored word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 ' rockford, standing rockford word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_3_0_2_2_0_3_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 ' diamond frame word %%0_0_0_1_1_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_3_0_0_3_0_0 word %%0_1_0_0_0_0_1_0 word %%0_3_0_0_0_0_3_0 word %%1_0_0_0_0_0_0_1 word %%3_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%3_0_0_0_0_0_0_3 word %%0_1_0_0_0_0_2_0 word %%0_3_0_0_0_0_3_0 word %%0_0_1_0_0_2_0_0 word %%0_0_3_0_0_3_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_3_3_0_0_0 ' dummy word %%3_3_0_0_0_0_3_3 word %%0_3_3_3_3_3_3_0 word %%3_3_2_3_3_2_3_3 word %%3_3_2_3_3_2_3_3 word %%3_3_3_3_3_3_3_3 word %%0_3_3_0_0_3_3_0 word %%0_0_3_3_0_3_0_0 word %%0_0_2_2_2_2_0_0 word %%1_1_2_2_2_2_1_0 word %%1_0_2_2_2_2_0_1 word %%0_0_2_2_2_2_1_0 word %%0_3_3_3_3_3_3_0 word %%0_3_3_0_0_3_3_0 word %%0_3_0_0_0_0_3_0 word %%3_3_0_0_0_0_3_0 word %%0_0_0_0_0_0_3_3 ' wall wall word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 ' door frame door_frame word %%2_2_2_2_2_2_2_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 ' magic wall magic_wall word %%3_3_3_3_3_3_3_3 word %%3_2_3_3_3_2_3_3 word %%3_2_2_2_3_2_2_2 word %%3_0_0_0_3_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_3_3_3_0_3 word %%2_2_0_3_2_2_0_3 word %%0_0_0_3_0_0_0_3 word %%3_3_3_3_3_3_3_3 word %%3_2_3_3_3_2_3_3 word %%3_2_2_2_3_2_2_2 word %%3_0_0_0_3_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_3_3_3_0_3 word %%2_2_0_3_2_2_0_3 word %%0_0_0_3_0_0_0_3 word %%0_3_3_3_0_3_3_3 word %%0_3_3_3_0_3_3_3 word %%0_3_2_2_0_3_2_2 word %%0_3_0_0_0_3_0_0 word %%3_3_3_3_3_3_3_3 word %%3_3_3_2_3_3_3_2 word %%2_2_3_2_2_2_3_2 word %%0_0_3_0_0_0_3_0 word %%0_3_3_3_0_3_3_3 word %%0_3_3_3_0_3_3_3 word %%0_3_2_2_0_3_2_2 word %%0_3_0_0_0_3_0_0 word %%3_3_3_3_3_3_3_3 word %%3_3_3_2_3_3_3_2 word %%2_2_3_2_2_2_3_2 word %%0_0_3_0_0_0_3_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_3_2_0_2_3_2 word %%0_0_3_0_0_0_3_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_3_0_2_2_3_0_2 word %%0_3_0_0_0_3_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_3_2_0_2_3_2 word %%0_0_3_0_0_0_3_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_3_0_2_2_3_0_2 word %%0_3_0_0_0_3_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_3_0_2_2_3 word %%0_0_0_3_0_0_0_3 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%3_2_0_2_3_2_0_2 word %%3_0_0_0_3_0_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_3_0_2_2_3 word %%0_0_0_3_0_0_0_3 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%3_2_0_2_3_2_0_2 word %%3_0_0_0_3_0_0_0 \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Sounds.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Sounds.spin deleted file mode 100644 index 9d8cdc3..0000000 --- a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Sounds.spin +++ /dev/null @@ -1,168 +0,0 @@ -{ Hive-Soundobjekt für Boulderdash - -} - -'signaldefinitionen bellatrix - -#0, D0,D1,D2,D3,D4,D5,D6,D7 'datenbus -#8, BEL_VGABASE 'vga-signale (8pin) -#16, BEL_KEYBC,BEL_KEYBD 'keyboard-signale -#18, BEL_MOUSEC,BEL_MOUSED 'maus-signale -#20, BEL_VIDBASE 'video-signale(3pin) -#23, BEL_SELECT 'belatrix-auswahlsignal -#24, HBEAT 'front-led - BUSCLK 'bustakt - BUS_WR '/wr - schreibsignal - BUS_HS ' '/hs - quittungssignal - -var - -byte sndfx ' Kommando für Administra -byte fcCog ' Flag ob cCog gestartet -long cStack[32] ' Stack für cCog - - -pub Start: Pass - - Pass := (fcCog := cognew(cCog, @cStack)+1) > 0 - -pub cCog | cmd - - bus_init - repeat - repeat until sndfx > 0 'warte bis fx gesendet werden soll - bus_putchar(sndfx~) 'sndfx-Kommando senden - - -CON -' -' hbeat --------+ -' clk -------+| -' /wr ------+|| -' /hs -----+||| +------------------------- /cs -' |||| | -------- d0..d7 -DB_IN = %00001001_00000000_00000000_00000000 'maske: dbus-eingabe -DB_OUT = %00001001_00000000_00000000_11111111 'maske: dbus-ausgabe - -M1 = %00000010_00000000_00000000_00000000 -M2 = %00000010_10000000_00000000_00000000 'busclk=1? & /cs=0? - -M3 = %00000000_00000000_00000000_00000000 -M4 = %00000010_00000000_00000000_00000000 'busclk=0? - - -PUB bus_putchar(zeichen) 'BUS: Ein Byte über BUS ausgeben -{{ein byte über bus ausgeben Belltrix --> Regnatix}} - waitpeq(M1,M2,0) 'busclk=1? & prop2=0? - dira := db_out 'datenbus auf ausgabe stellen - outa[7..0] := zeichen 'daten ausgeben - outa[bus_hs] := 0 'daten gültig - waitpeq(M3,M4,0) 'busclk=0? - dira := db_in 'bus freigeben - outa[bus_hs] := 1 'daten ungültig - -PUB bus_getchar : zeichen 'BUS: Ein Byte über BUS empfangen -{{ein byte über bus empfangen Regnatix --> Bellatrix}} - waitpeq(M1,M2,0) 'busclk=1? & prop2=0? - zeichen := ina[7..0] 'daten einlesen - outa[bus_hs] := 0 'daten quittieren - outa[bus_hs] := 1 - waitpeq(M3,M4,0) 'busclk=0? - -PUB bus_init -{{initialisierung des bussystems}} - dira := db_in 'datenbus auf eingabe schalten - outa[bus_hs] := 1 'handshake inaktiv - - -dat 'soundadapter - -con - -_music_on = 1 -_music_off = 2 -_moving_sound1 = 3 -_moving_sound2 = 4 -_boulder_sound = 5 -_diamond_sound = 6 -_pick_sound = 7 -_explosion_sound = 8 -_crack_sound = 9 -_magic_wall_sound_on = 10 -_magic_wall_sound_off = 11 -_amoeba_sound_on = 12 -_amoeba_sound_off = 13 -_time_ending_sound = 14 -_bonus_point_sound = 15 -_cover_sound = 16 - -pub music_on - sndfx := _music_on - -pub music_off - sndfx := _music_off - -pub moving_sound(surface) - repeat until sndfx == 0 - if surface == $00 - sndfx := _moving_sound1 - else ' $01 - sndfx := _moving_sound2 - repeat until sndfx == 0 - -pub boulder_sound - sndfx := _boulder_sound - -pub diamond_sound - repeat until sndfx == 0 - sndfx := _diamond_sound - repeat until sndfx == 0 - -pub pick_sound - repeat until sndfx == 0 - sndfx := _pick_sound - repeat until sndfx == 0 - -pub explosion_sound - repeat until sndfx == 0 - sndfx := _explosion_sound - repeat until sndfx == 0 - -pub crack_sound - repeat until sndfx == 0 - sndfx := _crack_sound - repeat until sndfx == 0 - -pub magic_wall_sound_on - repeat until sndfx == 0 - sndfx := _magic_wall_sound_on - repeat until sndfx == 0 - -pub magic_wall_sound_off - repeat until sndfx == 0 - sndfx := _magic_wall_sound_off - repeat until sndfx == 0 - -pub amoeba_sound_on - repeat until sndfx == 0 - sndfx := _amoeba_sound_on - repeat until sndfx == 0 - -pub amoeba_sound_off - 'sndfx := _amoeba_sound_off - -pub time_ending_sound(sec_left) - repeat until sndfx == 0 - sndfx := _time_ending_sound - repeat until sndfx == 0 - -pub bonus_point_sound(pts) - repeat until sndfx == 0 - sndfx := _bonus_point_sound - repeat until sndfx == 0 - -pub cover_sound - sndfx := _cover_sound - - - \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Sounds_old.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Sounds_old.spin deleted file mode 100644 index acd30a8..0000000 --- a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Sounds_old.spin +++ /dev/null @@ -1,358 +0,0 @@ -var - - long vsync_addr - long random_addr - long stack[40] - - byte music - byte mute - byte amoeba - byte magic_wall - byte v1cnt, v1ctl - byte v2cnt, v2ctl - byte v3cnt, v3ctl - -obj - - sd : "SIDemu" - -pub start(video_params, pin, rnd_addr) - - vsync_addr := long[video_params + constant(6 * 4)] - random_addr := rnd_addr - - v1cnt := 0 - v2cnt := 0 - v3cnt := 0 - - mute := false - music := false - amoeba := false - magic_wall := false - - cognew(process, @stack) - - sd.start(pin) - - sd.set_register(23, $07) 'turn main volume half-up - -pub music_on - - v1cnt := 0 - v2cnt := 0 - v3cnt := 0 - - music_init - - music := true - -pub music_off - - sd.set_register(4, sd#CREG_TRIANGLE) 'gate off - sd.set_register(11, sd#CREG_TRIANGLE) 'gate off - - music := false - -pub moving_sound(surface) - - if mute - return - - if surface == $00 - sd.set_register(7, $00) 'freq - sd.set_register(8, $35) - else ' $01 - sd.set_register(7, $00) 'freq - sd.set_register(8, $A5) - sd.set_register(12, $30) 'attack/decay - sd.set_register(13, $C0) 'sustain/release - sd.set_register(11, sd#CREG_NOISE | sd#CREG_GATE) - - v2ctl := sd#CREG_NOISE - v2cnt := 2 - -pub boulder_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, $32) 'freq - sd.set_register(1, $09) - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $F9) 'sustain/release - sd.set_register(4, sd#CREG_NOISE | sd#CREG_GATE) - - v1ctl := sd#CREG_NOISE - v1cnt := 1 - -pub diamond_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, byte[random_addr]) 'freq - sd.set_register(1, $86 + byte[random_addr] & $07) - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $F0) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v1ctl := sd#CREG_TRIANGLE - v1cnt := 2 - -pub pick_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, $78) 'freq - sd.set_register(1, $14) - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $F9) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v1ctl := sd#CREG_TRIANGLE - v1cnt := 1 - -pub explosion_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, $32) 'freq - sd.set_register(1, $14) - sd.set_register(5, $19) '$1D 'attack/decay - sd.set_register(6, $00) 'sustain/release - sd.set_register(4, sd#CREG_NOISE | sd#CREG_GATE) - - v1ctl := sd#CREG_NOISE - v1cnt := 200 - -pub crack_sound - - if mute - return - - if v3cnt - return - - sd.set_register(19, $19) 'attack/decay - sd.set_register(20, $01) 'sustain/release - sd.set_register(14, $32) 'freq - sd.set_register(15, $2F) - sd.set_register(18, sd#CREG_NOISE | sd#CREG_GATE) - - v3ctl := sd#CREG_NOISE - v3cnt := 80 - -pub magic_wall_sound_on - - if not magic_wall - magic_wall := true - sd.set_register(18, sd#CREG_TRIANGLE) - -pub magic_wall_sound_off - - if magic_wall - magic_wall := false - v3ctl := sd#CREG_TRIANGLE - v3cnt := 1 - -pub amoeba_sound_on - - if not amoeba - amoeba := true - sd.set_register(18, sd#CREG_TRIANGLE) - -pub amoeba_sound_off - - if amoeba - amoeba := false - v3ctl := sd#CREG_TRIANGLE - v3cnt := 1 - -var - - byte last_val - -pub time_ending_sound(sec_left) - - mute := true - - if sec_left == last_val - return - - last_val := sec_left - - if sec_left == 0 - mute := false - - sd.set_register(4, sd#CREG_TRIANGLE) - waitcnt(clkfreq / 1000 + cnt) - - sd.set_register(0, $00) - sd.set_register(1, $27 - sec_left) - sd.set_register(5, $0A) 'attack/decay - sd.set_register(6, $00) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v1cnt := 0 - -pub bonus_point_sound(pts) | i - - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $A0) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - repeat i from 2 to 30 step 2 - sd.set_register(0, $00) - sd.set_register(1, $B0 - pts + i) - waitcnt(clkfreq / 500 + cnt) - sd.set_register(4, sd#CREG_TRIANGLE) - -pub cover_sound - - if v2cnt - return - - sd.set_register(12, $05) 'attack/decay - sd.set_register(13, $00) 'sustain/release - sd.set_register(7, $00) - sd.set_register(8, $64 + byte[random_addr] & $7F) 'freq - sd.set_register(11, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v2ctl := sd#CREG_TRIANGLE - v2cnt := 1 - -pub process | r - - repeat - - 'wait for vsync - repeat while byte[vsync_addr] == 0 - repeat while byte[vsync_addr] <> 0 - - if music - play_note - - if v1cnt - if --v1cnt == 0 - sd.set_register(4, v1ctl) - - if v2cnt - if --v2cnt == 0 - sd.set_register(11, v2ctl) - - if v3cnt - if --v3cnt == 0 - sd.set_register(18, v3ctl) - - if amoeba - if mute - sd.set_register(18, sd#CREG_TRIANGLE) - else - sd.set_register(19, $00) 'attack/decay - sd.set_register(20, $40) 'sustain/release - repeat - r := byte[random_addr] & $1F - while r < $07 - sd.set_register(14, $00) 'freq - sd.set_register(15, r) - sd.set_register(18, sd#CREG_TRIANGLE | sd#CREG_GATE) - v3cnt := 2 - - elseif magic_wall - if mute - sd.set_register(18, sd#CREG_TRIANGLE) - else - sd.set_register(19, $00) 'attack/decay - sd.set_register(20, $A0) 'sustain/release - r := byte[random_addr] & $03 - sd.set_register(14, $00) 'freq - sd.set_register(15, $86 + (r << 3)) - sd.set_register(18, sd#CREG_TRIANGLE | sd#CREG_GATE) - v3cnt := 2 - -dat - -notes - byte $16, $22, $1D, $26, $22, $29, $25, $2E, $14, $24, $1F, $27, $20, $29, $27, $30 - byte $12, $2A, $12, $2C, $1E, $2E, $12, $31, $20, $2C, $33, $37, $21, $2D, $31, $35 - byte $16, $22, $16, $2E, $16, $1D, $16, $24, $14, $20, $14, $30, $14, $24, $14, $20 - byte $16, $22, $16, $2E, $16, $1D, $16, $24, $1E, $2A, $1E, $3A, $1E, $2E, $1E, $2A - byte $14, $20, $14, $2C, $14, $1B, $14, $22, $1C, $28, $1C, $38, $1C, $2C, $1C, $28 - byte $11, $1D, $29, $2D, $11, $1F, $29, $2E, $0F, $27, $0F, $27, $16, $33, $16, $27 - byte $16, $2E, $16, $2E, $16, $2E, $16, $2E, $22, $2E, $22, $2E, $16, $2E, $16, $2E - byte $14, $2E, $14, $2E, $14, $2E, $14, $2E, $20, $2E, $20, $2E, $14, $2E, $14, $2E - byte $16, $2E, $32, $2E, $16, $2E, $33, $2E, $22, $2E, $32, $2E, $16, $2E, $33, $2E - byte $14, $2E, $32, $2E, $14, $2E, $33, $2E, $20, $2C, $30, $2C, $14, $2C, $31, $2C - byte $16, $2E, $16, $3A, $16, $2E, $35, $38, $22, $2E, $22, $37, $16, $2E, $31, $35 - byte $14, $2C, $14, $38, $14, $2C, $14, $38, $20, $2C, $20, $33, $14, $2C, $14, $38 - byte $16, $2E, $32, $2E, $16, $2E, $33, $2E, $22, $2E, $32, $2E, $16, $2E, $33, $2E - byte $14, $2E, $32, $2E, $14, $2E, $33, $2E, $20, $2C, $30, $2C, $14, $2C, $31, $2C - byte $2E, $32, $29, $2E, $26, $29, $22, $26, $2C, $30, $27, $2C, $24, $27, $14, $20 - byte $35, $32, $32, $2E, $2E, $29, $29, $26, $27, $30, $24, $2C, $20, $27, $14, $20 - -freqs - word $02DC, $030A, $033A, $036C, $03A0, $03D2, $0412, $044C - word $0492, $04D6, $0520, $056E, $05B8, $0614, $0674, $06D8 - word $0740, $07A4, $0824, $0898, $0924, $09AC, $0A40, $0ADC - word $0B70, $0C28, $0CE8, $0DB0, $0E80, $0F48, $1048, $1130 - word $1248, $1358, $1480, $15B8, $16E0, $1850, $19D0, $1B60 - word $1D00, $1E90, $2090, $2260, $2490, $26B0, $2900, $2B70 - word $2DC0, $0100, $0200, $0101, $0105, $0100, $0101, $0306 - word $0101, $0102, $0101 - -var - - long note - byte v1sr - -pri music_init - - note := 0 - v1sr := $B0 - - sd.set_register(4, sd#CREG_TRIANGLE) - sd.set_register(5, $4F) - sd.set_register(6, $00) - - sd.set_register(11, sd#CREG_TRIANGLE) - sd.set_register(12, $24) '$78) - sd.set_register(13, $75) '$78) - -pub play_note | n, f - - if v1sr == $B0 - sd.set_register(4, sd#CREG_TRIANGLE) - sd.set_register(11, sd#CREG_TRIANGLE) - n := notes.byte[note++] - f := word[@freqs + 2*n - $14] - sd.set_register(0, f & $FF) - sd.set_register(1, f >> 8) - n := notes.byte[note++] - f := word[@freqs + 2*n - $14] - sd.set_register(7, f & $FF) - sd.set_register(8, f >> 8) - v1sr := $A0 - return - - if note == 256 - note := 0 - sd.set_register(6, v1sr | $01) - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - sd.set_register(11, sd#CREG_TRIANGLE | sd#CREG_GATE) - v1sr -= $10 - if v1sr < $40 - v1sr := $B0 - \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Status.spin b/zubehör/game boulderdash/sourcen/Bellatrix-Code/Status.spin deleted file mode 100644 index dc6d536..0000000 --- a/zubehör/game boulderdash/sourcen/Bellatrix-Code/Status.spin +++ /dev/null @@ -1 +0,0 @@ -' This cog handles the status line. ' Also keeps the real-time counter con STATUS_NONE, STATUS_PRE, STATUS_GAME, STATUS_PAUSE, STATUS_OUT_OF_TIME, STATUS_GAME_OVER var long status_addr long stack[20] long vsync_addr long score byte ticks_per_sec byte tick_count byte time byte diamond_count byte diamond_value byte diamonds_needed byte player byte men byte cave byte level byte status_mode byte update byte status_temp[20*2] byte toggle byte decbuf[6] pub start(video_params) vsync_addr := long[video_params + constant(6 * 4)] status_addr := long[video_params + constant(5 * 4)] + constant(40 * 28 + 4 + 4) time := 0 status_mode := STATUS_NONE update := true toggle := 0 if long[video_params + constant(4 * 4)] == 0 ticks_per_sec := 60 'NTSC else ticks_per_sec := 50 'PAL cognew(process, @stack) pub player_params(p, m, c, l, s) player := p men := m cave := c level := l score := s pub cave_params(dn, dv, t) diamonds_needed := dn diamond_value := dv diamond_count := 0 time := t tick_count := ticks_per_sec pub set_time(t) tick_count := ticks_per_sec time := t update := true pub get_time return time pub set_mode(m) status_mode := m update := true pub set_score(s) score := s update := true pub set_diamond_value(dv) diamond_value := dv update := true pub set_diamond_count(n) diamond_count := n update := true pub process repeat 'wait for vsync repeat while byte[vsync_addr] == 0 repeat while byte[vsync_addr] <> 0 if update update := false if status_mode == STATUS_NONE long[status_addr] &= !1 else long[status_addr] |= 1 if toggle longmove(status_addr, @status_temp, 10) toggle := 0 if status_mode == STATUS_PRE bytefill(status_addr + constant(4 + 20), $06, 20) if cave > 16 text_out(status_addr + 4, @bonus_life, 20) else text_out(status_addr + 4, @pre, 20) byte[status_addr + constant(4 + 8)] := player + $80 byte[status_addr + constant(4 + 11)] := men + $80 byte[status_addr + constant(4 + 17)] := cave + $90 byte[status_addr + constant(4 + 19)] := level + $81 elseif status_mode == STATUS_GAME byte[status_addr + constant(4 + 0)] := $90 if diamond_count => diamonds_needed byte[status_addr + constant(4 + 1)] := $AC byte[status_addr + constant(4 + 2)] := $AC byte[status_addr + constant(4 + 21)] := $06 byte[status_addr + constant(4 + 22)] := $06 else convert_to_dec(diamonds_needed, 2) byte[status_addr + constant(4 + 1)] := decbuf[1] byte[status_addr + constant(4 + 2)] := decbuf[0] byte[status_addr + constant(4 + 21)] := $9D byte[status_addr + constant(4 + 22)] := $9D byte[status_addr + constant(4 + 3)] := $AC convert_to_dec(diamond_value, 2) byte[status_addr + constant(4 + 4)] := decbuf[1] byte[status_addr + constant(4 + 5)] := decbuf[0] byte[status_addr + constant(4 + 6)] := $90 convert_to_dec(diamond_count, 2) byte[status_addr + constant(4 + 7)] := decbuf[1] byte[status_addr + constant(4 + 8)] := decbuf[0] byte[status_addr + constant(4 + 9)] := $90 convert_to_dec(time, 3) byte[status_addr + constant(4 + 10)] := decbuf[2] byte[status_addr + constant(4 + 11)] := decbuf[1] byte[status_addr + constant(4 + 12)] := decbuf[0] byte[status_addr + constant(4 + 13)] := $90 convert_to_dec(score, 6) byte[status_addr + constant(4 + 14)] := decbuf[5] byte[status_addr + constant(4 + 15)] := decbuf[4] byte[status_addr + constant(4 + 16)] := decbuf[3] byte[status_addr + constant(4 + 17)] := decbuf[2] byte[status_addr + constant(4 + 18)] := decbuf[1] byte[status_addr + constant(4 + 19)] := decbuf[0] byte[status_addr + constant(4 + 27)] := $9D byte[status_addr + constant(4 + 28)] := $9D elseif status_mode == STATUS_GAME_OVER bytefill(status_addr + constant(4 + 20), $06, 20) text_out(status_addr + 4, @game_over, 20) if --tick_count == 0 tick_count := ticks_per_sec if status_mode == STATUS_GAME if time > 0 convert_to_dec(--time, 3) byte[status_addr + constant(4 + 10)] := decbuf[2] byte[status_addr + constant(4 + 11)] := decbuf[1] byte[status_addr + constant(4 + 12)] := decbuf[0] elseif status_mode == STATUS_PAUSE if toggle longmove(status_addr, @status_temp, 10) toggle := 0 else longmove(@status_temp, status_addr, 10) bytefill(status_addr + constant(4 + 20), $06, 20) text_out(status_addr + 4, @pause, 20) toggle := 1 elseif status_mode == STATUS_OUT_OF_TIME 'out of time if toggle longmove(status_addr, @status_temp, 10) toggle := 0 else longmove(@status_temp, status_addr, 10) bytefill(status_addr + constant(4 + 20), $06, 20) text_out(status_addr + 4, @out_of_time, 20) toggle := 1 pub convert_to_dec(val, len) | i repeat i from 0 to len-1 decbuf[i] := val // 10 + $80 val /= 10 pub text_out(addr, str, len) | i, c repeat i from 0 to len-1 c := byte[str + i] if c == $20 byte[addr + i] := $90 elseif c == $2C byte[addr + i] := $AF elseif c == $2F byte[addr + i] := $8C else byte[addr + i] := c + $50 dat pre byte " PLAYER , MEN / " out_of_time byte " OUT OF TIME " pause byte " SPACEBAR TO RESUME " bonus_life byte " B O N U S L I F E " game_over byte " G A M E O V E R " \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Bellatrix-Code/_README_.txt b/zubehör/game boulderdash/sourcen/Bellatrix-Code/_README_.txt deleted file mode 100644 index 91191d0..0000000 Binary files a/zubehör/game boulderdash/sourcen/Bellatrix-Code/_README_.txt and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Regnatix-Code/bd.spin b/zubehör/game boulderdash/sourcen/Regnatix-Code/bd.spin deleted file mode 100644 index b85a654..0000000 --- a/zubehör/game boulderdash/sourcen/Regnatix-Code/bd.spin +++ /dev/null @@ -1,304 +0,0 @@ -{{ --------------------------------------------------------------------------------------------------------- - -Hive-Computer-Projekt: Boulder Dash - Hive-Version - - http://hive-project.de - -Basierend auf dem Fanprojekt diverser Propellerköpfe: - - http://forums.parallax.com/forums/default.aspx?f=33&m=263404 - -Besonderer Dank an Pex "Mahoney" Tufvesson für die coole Musik!: - - http://mahoney.c64.org - http://www.livet.se/visa - - -Tasten: - -ESC Stop Button A -Space Pause Button B -LShift Start -LCTRL Select -Cursor - -Anpassungen für den Hive - -09-01-2010 - Entfernung der Hardwareerkennung - - Anpassung Konfiguration an Hive/Bellatrix - - Gamecontr. entfernt - - Auskommentierung Sound -12-01-2010 - Soundadapter optimiert - - Scrolltext im Titelbildschirm eingefügt -19-04-2010 - Anpassung an TriOS: Boulder läuft jetzt auch aus dem Verzeichnis. Bedingt durch das - neue, etwas trägere WAV-Soundsystem, habe ich einige Effekte durch HSS/SFX ersetzt. - -Zur Hive-Version: Das Game an sich - also der ursprüngliche Basiscode aus dem Parallax-Forum - läuft -auf einem einzigen Propellerchip! Was war zu tun um diese Version an den Hive anzupassen: - -1. Der Code kann im wesentlichen fast ausschließlich auf Bellatrix laufen. Dafür müssen die entsprechenden -Belegungen der IO-Pins für Video und Keyboard angepasst werden. -2. Da Bellatrix keinen Sound ausgeben kann, sondern diese Aufgabe im Hive Administra übernimmt, muß die -Soundausgabe angepasst werden. Im Originalcode übernimmt das Objekt "sound.spin" diese Aufgabe - welches -wieder den SIDemu in einer getrennten Cog startet. Hier zeigt sich die Stärke der SPIN-Objekte: Für die -Anpassung brauchte ich einfach nur ein neues Objekt gleicher Struktur definieren, ohne das Hauptprogramm -zu ändern. Dieses neue Soundobjekt startet ebenfalls eine Cog, welche einzig die Aufgabe hat die Kommunikation -zu Regnatix/Administra zu realisieren. -3. Regnatix-Code: Tja, die Königin kann bei der ganzen Sache Däumchen drehen, denn sie hat nur folgend Aufgaben -in einer einzigen Cog zu bewältigen: - - Bellatrix-Code laden - - SFX-Slots in Administra initialisieren - - Warten bis Bellatrix einen Ton von sich geben möchte und Übermittlung dieser - Tonesequenz an Administra - -Damit werden natürlich auf der einen Seite massig Ressourcen in Bellatrix gegenüber dem ursprünglichen Code frei -und es sind durch die Verwendung von HSS/SFX + Waveplayer + SDCard mehr Möglichkeiten gegeben. - -Bellatrix-Code : 20,5 KByte -Regnatix-Code : 3,2 KByte - -Bei diesen Werten ist zu beachten, dass der Regnatix das blanke IOS mit 2,6 KByte eingebunden hat - ohne Optimierung, -denn ein Großteil der IOS-Routinen sind in diesem Fall ungenutzt. - -Zeitaufwand : ca. 3 nette Abende ;) - -drohne235 - - --------------------------------------------------------------------------------------------------------- }} - - -OBJ - ios : "ios" -' debugx : "pterm" 'debug - -CON - -_CLKMODE = XTAL1 + PLL16X -_XINFREQ = 5_000_000 - -CON - -_music_on = 1 -_music_off = 2 -_moving_sound1 = 3 -_moving_sound2 = 4 -_boulder_sound = 5 -_diamond_sound = 6 -_pick_sound = 7 -_explosion_sound = 8 -_crack_sound = 9 -_magic_wall_sound_on = 10 -_magic_wall_sound_off = 11 -_amoeba_sound_on = 12 -_amoeba_sound_off = 13 -_time_ending_sound = 14 -_bonus_point_sound = 15 -_cover_sound = 16 - -VAR - -byte parastr[64] -byte fl_musicon - -PUB main | a,b,c,i,n,stradr - -'initialisierung - ios.start 'ios initialisieren -' ios.startram 'code für test im ram, sollte bei bin-datei auskommentiert werden - -' debugx.start(115200) - - ios.admsetsyssnd(0) 'systemsounds abschalten - ios.sddmact(ios#DM_USER) 'wieder in userverzeichnis wechseln - ios.print(string("Boulder Dash - Loading...")) - -'bellatrix-code laden - ios.parastart - parastr[0] := 0 - ios.paranext(@parastr) - - case parastr[0] - "n": - ios.belload(@beln) 'grafiktreiber ntsc laden - other: - ios.belload(@belp) 'grafiktreiber pal laden - - ios.sddmact(ios#DM_USER) '??? - -'sfx-slots setzen - ios.sfx_setslot(@fx_moving_sound1, 0) - ios.sfx_setslot(@fx_moving_sound2, 1) - ios.sfx_setslot(@fx_boulder_sound,2) - ios.sfx_setslot(@fx_diamond_sound,3) - ios.sfx_setslot(@fx_pick_sound,4) - ios.sfx_setslot(@fx_amoeba_sound,5) - ios.sfx_setslot(@fx_time_sound,6) - ios.sfx_setslot(@fx_cover_sound,7) - ios.sfx_setslot(@fx_bonus,8) - ios.sfx_setslot(@fx_crack,9) - ios.sfx_setslot(@fx_explosion,10) - ios.sfx_setslot(@fx_wall,11) - - -'soundadapter - repeat - case ios.bus_getchar2 - - _music_on: 'titelmusik - ios.admsetsound(ios#SND_HSSOFF) 'hss ausschalten - ios.admsetsound(ios#SND_WAVON) 'wav einschalten - n := ios.wav_play(@wav1) - fl_musicon := 1 - - _music_off: - if fl_musicon - ios.wav_stop - ios.admsetsound(ios#SND_WAVOFF) 'wav ausschalten - ios.admsetsound(ios#SND_HSSON) 'hss anschalten - fl_musicon := 0 - - _moving_sound1: - ios.sfx_fire(0,1) - - _moving_sound2: - ios.sfx_fire(1,1) - - _boulder_sound: - ios.sfx_fire(2,1) - waitcnt(clkfreq / 30 + cnt) - - _diamond_sound: - b? - b := b & $FF - byte[@fx_diamond_sound+2] := b - ios.sfx_setslot(@fx_diamond_sound,3) - ios.sfx_fire(3,1) - waitcnt(clkfreq / 30 + cnt) - - _pick_sound: - ios.sfx_fire(4,2) - waitcnt(clkfreq / 3 + cnt) - - _explosion_sound: 'explosion - ios.sfx_fire(10,1) - waitcnt(clkfreq * 3 + cnt) - - _crack_sound: 'eingang - ios.sfx_fire(9,1) - waitcnt(clkfreq / 3 + cnt) - - _magic_wall_sound_on: - ios.sfx_fire(11,2) - - _magic_wall_sound_off: - - _amoeba_sound_on: - ios.sfx_fire(5,2) - - _amoeba_sound_off: - - _time_ending_sound: - ios.sfx_fire(6,2) - - _bonus_point_sound: 'bonus - ios.sfx_fire(8,2) - waitcnt(clkfreq * 4 + cnt) - - _cover_sound: - b? - b := b & $FF - byte[@fx_cover_sound+2] := b - ios.sfx_setslot(@fx_cover_sound,7) - ios.sfx_fire(7,1) - waitcnt(clkfreq / 30 + cnt) - - - -DAT - -wav1 byte "bd.wav",0 ' titelmusik - -beln byte "bd_ntsc.bel",0 ' bella-code, ntsc-version -belp byte "bd_pal.bel",0 - - 'basisschwingung modulation hüllkurve - 'Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -fx_moving_sound1 byte $06, $02, $01, $08, $00, $00, $00, $00, $FF, $00, $00, $D0 -fx_moving_sound2 byte $06, $02, $01, $0F, $00, $00, $00, $00, $FF, $00, $00, $D0 -fx_boulder_sound byte $06, $01, $FF, $0F, $01, $03, $01, $00, $FF, $00, $00, $80 -fx_diamond_sound byte $01, $01, $E0, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_pick_sound byte $01, $01, $E0, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_explosion_sound byte $01, $01, $E0, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_crack_sound byte $06, $02, $10, $0F, $00, $00, $00, $00, $FF, $00, $00, $D0 -fx_magic_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_amoeba_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_time_sound byte $02, $05, $FF, $0F, $10, $00, $01, $00, $FF, $00, $00, $40 -fx_bonus_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_cover_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 - -fx_bonus -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $03,$03,$FF,$0F,$02,$00,$05,$00,$FF,$01,$50,$11 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - -fx_crack -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $01,$22,$01,$0F,$11,$00,$05,$00,$55,$01,$50,$11 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - -fx_explosion -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $06,$04,$10,$0F,$00,$00,$00,$00,$FF,$01,$50,$11 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - -fx_wall -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $04,$FF,$FF,$0F,$01,$00,$01,$00,$FF,$06,$20,$00 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - - -DAT -{ - -sfx-struktur: - -wav len freq vol grundschwingung -lfo lfw fma ama modulation -att dec sus rel hüllkurve -seq (optional) - -wav wellenform - 0 sinus (0..500hz) - 1 schneller sinus (0..1khz) - 2 dreieck (0..500hz) - 3 rechteck (0..1khz) - 4 schnelles rechteck (0..4khz) - 5 impulse (0..1,333hz) - 6 rauschen -len tonlänge $0..$fe, $ff endlos -freq frequenz $00..$ff -vol lautstärke $00..$0f - -lfo low frequency oscillator $ff..$01 -lfw low frequency waveform - $00 sinus (0..8hz) - $01 fast sine (0..16hz) - $02 ramp up (0..8hz) - $03 ramp down (0..8hz) - $04 square (0..32hz) - $05 random - $ff sequencer data -fma frequency modulation amount - $00 no modulation - $01..$ff -ama amplitude modulation amount - $00 no modulation - $01..$ff -att attack $00..$ff -dec decay $00..$ff -sus sustain $00..$ff -rel release $00..$ff - - - -} \ No newline at end of file diff --git a/zubehör/game boulderdash/sourcen/Regnatix-Code/ios.spin b/zubehör/game boulderdash/sourcen/Regnatix-Code/ios.spin deleted file mode 100644 index 68781f5..0000000 Binary files a/zubehör/game boulderdash/sourcen/Regnatix-Code/ios.spin and /dev/null differ diff --git a/zubehör/game boulderdash/sourcen/Regnatix-Code/pterm.spin b/zubehör/game boulderdash/sourcen/Regnatix-Code/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/zubehör/game boulderdash/sourcen/Regnatix-Code/pterm.spin and /dev/null differ diff --git a/zubehör/startracker/bin/stint.bel b/zubehör/startracker/bin/stint.bel deleted file mode 100644 index e056b11..0000000 Binary files a/zubehör/startracker/bin/stint.bel and /dev/null differ diff --git a/zubehör/startracker/bin/stplay.bin b/zubehör/startracker/bin/stplay.bin deleted file mode 100644 index bdbe4a5..0000000 Binary files a/zubehör/startracker/bin/stplay.bin and /dev/null differ diff --git a/zubehör/startracker/notiz.rtf b/zubehör/startracker/notiz.rtf deleted file mode 100644 index 942455e..0000000 Binary files a/zubehör/startracker/notiz.rtf and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/Corner_BottomLeft.dat b/zubehör/startracker/source/bellatrix-code/Corner_BottomLeft.dat deleted file mode 100644 index 5941fa4..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/Corner_BottomLeft.dat and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/Corner_topleft.dat b/zubehör/startracker/source/bellatrix-code/Corner_topleft.dat deleted file mode 100644 index 0fdf59f..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/Corner_topleft.dat and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/Corner_topright.dat b/zubehör/startracker/source/bellatrix-code/Corner_topright.dat deleted file mode 100644 index cb56785..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/Corner_topright.dat and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/HV_Break.dat b/zubehör/startracker/source/bellatrix-code/HV_Break.dat deleted file mode 100644 index ccdfe3b..0000000 --- a/zubehör/startracker/source/bellatrix-code/HV_Break.dat +++ /dev/null @@ -1,2 +0,0 @@ -ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ªªª -ªªª diff --git a/zubehör/startracker/source/bellatrix-code/HV_Break2.dat b/zubehör/startracker/source/bellatrix-code/HV_Break2.dat deleted file mode 100644 index 53f8c70..0000000 --- a/zubehör/startracker/source/bellatrix-code/HV_Break2.dat +++ /dev/null @@ -1,3 +0,0 @@ -ªªª -ªªª -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUU \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/endcap_Med_left.dat b/zubehör/startracker/source/bellatrix-code/endcap_Med_left.dat deleted file mode 100644 index 524d651..0000000 --- a/zubehör/startracker/source/bellatrix-code/endcap_Med_left.dat +++ /dev/null @@ -1 +0,0 @@ -UUÕÿUUýÿUÕÿÿUõÿÿUÿÿÿÔÿÿÿÔÿÿÿôÿÿÿøÿÿÿèÿÿÿèÿÿÿªÿÿÿªúÿÿªêÿÿªªþÿªªêÿ \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/endcap_Med_right.dat b/zubehör/startracker/source/bellatrix-code/endcap_Med_right.dat deleted file mode 100644 index 81b7eaa..0000000 --- a/zubehör/startracker/source/bellatrix-code/endcap_Med_right.dat +++ /dev/null @@ -1 +0,0 @@ -ÿWUUÿUUÿÿWUÿÿ_UÿÿÿUÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿ+ÿÿÿ+ÿÿÿªÿÿ¯ªÿÿ«ªÿ¿ªªÿ«ªª \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/endcap_Small_left.dat b/zubehör/startracker/source/bellatrix-code/endcap_Small_left.dat deleted file mode 100644 index 7c14573..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/endcap_Small_left.dat and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/endcap_Small_right.dat b/zubehör/startracker/source/bellatrix-code/endcap_Small_right.dat deleted file mode 100644 index 66db08d..0000000 --- a/zubehör/startracker/source/bellatrix-code/endcap_Small_right.dat +++ /dev/null @@ -1,4 +0,0 @@ -UUÿ_UÿÿUÿÿWÿÿ_ÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¯ -ÿÿ« -ÿÿª -ÿ¯ª*¿ªª*ªªª*ªªª* \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/filled_space.dat b/zubehör/startracker/source/bellatrix-code/filled_space.dat deleted file mode 100644 index 85f2b75..0000000 --- a/zubehör/startracker/source/bellatrix-code/filled_space.dat +++ /dev/null @@ -1 +0,0 @@ -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/font_29p5.dat b/zubehör/startracker/source/bellatrix-code/font_29p5.dat deleted file mode 100644 index 13c2f85..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/font_29p5.dat and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/stint.spin b/zubehör/startracker/source/bellatrix-code/stint.spin deleted file mode 100644 index 673c2b3..0000000 --- a/zubehör/startracker/source/bellatrix-code/stint.spin +++ /dev/null @@ -1,670 +0,0 @@ -''LCARS tryout in XGA * -'Trying to emulate look of this page: http://www.lcarscom.net/databank.htm -'Copyright 2008 Raymond Allen - -{{ --------------------------------------------------------------------------------------------------------- - -Hive-Computer-Projekt - -Name : StarTracker -Chip : Bellatrix-Code (soundplayer) -Version : 0.1 -Dateien : stint.spin - -Beschreibung : Grafiktreiber für StarTracker - -Eigenschaften : - -Logbuch : - -Kommandoliste: - -0 1 Tastaturstatus abfragen -0 2 Tastaturzeichen holen -0 3 n Screensteuerzeichen -0 3 0 CLS -0 3 1 Home -0 3 2 Backspace -0 3 3 TAB -0 3 4 n SETCUR Cursorzeichen auf n setzen -0 3 5 POS1 -0 3 6 x SETX -0 3 7 y SETY -0 3 8 (x) GETX -0 3 9 (y) GETY -0 3 10 c SETCOL -0 3 11 n SLINE -0 3 13 SCREENINIT -0 3 14 CURON -0 3 15 CUROFF -0 99 Reboot und neuen Treiber laden -0 100 testfunktion - -1..255 Zeichenausgabe - - - --------------------------------------------------------------------------------------------------------- }} - - -CON - - _clkmode = xtal1 + pll16x - _xinfreq = 5_000_000 - - 'number of custom 16x16 characters - nuchars = (6*3+1*7+47+23*2+20*5) '!!!!! you must have the correct # here for alignment later - -'signaldefinitionen regnatix - -#0, D0,D1,D2,D3,D4,D5,D6,D7 'datenbus -#8, BEL_VGABASE 'vga-signale (8pin) -#16, BEL_KEYBC,BEL_KEYBD 'keyboard-signale -#18, BEL_MOUSEC,BEL_MOUSED 'maus-signale -#20, BEL_VIDBASE 'video-signale(3pin) -#23, BEL_SELECT 'belatrix-auswahlsignal -#24, HBEAT 'front-led - BUSCLK 'bustakt - BUS_WR '/wr - schreibsignal - BUS_HS ' '/hs - quittungssignal - -COLS = 64 -ROWS = 48 -TILES = cols * rows - -TAB1 = 16 -TAB2 = 32 -TAB3 = 48 -SPACETILE = $8000 + $20 << 6 - -VGA_BASPORT = 8 'vga startport -VGA_RESX = COLS * 16 'vga anzahl pixel x -VGA_RESY = ROWS * 16 'vga anzahl pixel y -KEYB_DPORT = BEL_KEYBD 'tastatur datenport -KEYB_CPORT = BEL_KEYBC 'tastatur taktport -MOUSE_DPORT = BEL_MOUSED -MOUSE_CPORT = BEL_MOUSEC -CURSORCHAR = $0E 'cursorzeichen - -DB_WAIT = %00000001_00000000_00000000_00000000 'dira-wert f?r wait-status am bus -DB_IN = %00001001_00000000_00000000_00000000 'dira-wert f?r datenbuseingabe -DB_OUT = %00001001_00000000_00000000_11111111 'dira-wert f?r datenbusausgabe -CNT_HBEAT = 5_000_0000 'blinkgeschw. front-led - - -VAR - - 'variables for display - long col, row, color, flag - long array[tiles/2] - long stackhb[9] 'stack f?r hbeat-cog - byte cursor 'cursorzeichen - byte curstat 'cursorstatus 1 = ein - byte sline 'startzeile des scrollfensters - byte eline 'endzeile des scrollfensters - - 'for custom characters - word user_charbase - - 'for drawing buttons - word ptr - byte boxcolor - byte sBuffer[32] 'stingpuffer - - -OBJ - - vga : "stvga" - keyb : "stkeyb" - - -PUB main | zeichen -{{interpreter f?r hostdialog}} - - init_subsysteme 'bus/vga/keyboard/maus initialisieren - repeat - zeichen := bus_getchar '1. zeichen empfangen - if zeichen > 0 - print_char(zeichen) - else - zeichen := bus_getchar '2. zeichen kommando empfange - case zeichen - 1: bus_putchar(keyb.gotkey) '1: Tastaturstatus senden - 2: bus_putchar(keyb.key) '2: Tastaturzeichen senden - 3: zeichen := bus_getchar '3: Sonderzeichen von $100 bis $1FF ausgeben - print_char(zeichen + $100) - - 10: cmd_bitmap1 - 11: cmd_fillbox - 12: cmd_drawtxt - 99: reboot '99: bellatrix neu starten - 100: gfx1 - -PUB gfx1 - -PUB cmd_bitmap1 | nBitmap,pBitmap,xPos,yPos,xSize,ySize,clr -'Bitmap1Bit(@endcap_med_left,1,1,1,2,1) -'Bitmap1Bit(pBitmap, xPos, yPos, xSize, ySize, clr) - nBitmap := bus_getchar - xPos := bus_getchar - yPos := bus_getchar - xSize := bus_getchar - ySize := bus_getchar - clr := bus_getchar - case nBitmap - 0: pBitmap := @title - 1: pBitmap := @footer - 2: pBitmap := @button1 - 3: pBitmap := @button2 - 4: pBitmap := @button3 - 5: pBitmap := @button4 - 6: pBitmap := @button5 - 7: pBitmap := @button6 - 8: pBitmap := @button7 - 9: pBitmap := @button8 - 10: pBitmap := @button9 - 11: pBitmap := @corner_topleft - 12: pBitmap := @corner_topright - 13: pBitmap := @corner_bottomLeft - 14: pBitmap := @endcap_med_left - 15: pBitmap := @endcap_med_right - 16: pBitmap := @endcap_small_left - 17: pBitmap := @endcap_small_right - Bitmap1Bit(pBitmap, xPos, yPos, xSize, ySize, clr) - - -PUB cmd_fillbox | left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight -'FillBlock(3,1,35,2,3,false,false,false) -'FillBlock(left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight) - left := bus_getchar - top := bus_getchar - width := bus_getchar - height := bus_getchar - clr := bus_getchar - bBottomBreak := bus_getchar - bRightBreak := bus_getchar - bTrimRight := bus_getchar - FillBlock(left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight) - -PUB cmd_drawtxt | nButton,pButton,nLen,c,i -'DrawText(@button,@string,bInvert) - nButton := bus_getchar - nLen := bus_getchar - repeat i from 0 to nLen - 1 - c := bus_getchar - sBuffer[i] := c - sBuffer[i+1] := 0 - case nButton - 0: pButton := @title - 1: pButton := @footer - 2: pButton := @button1 - 3: pButton := @button2 - 4: pButton := @button3 - 5: pButton := @button4 - 6: pButton := @button5 - 7: pButton := @button6 - 8: pButton := @button7 - 9: pButton := @button8 - 10: pButton := @button9 - DrawText(pButton, @sBuffer,false) - -PUB init_subsysteme -{{initialisierung des belatrix-chips}} - cognew(led_hbeat, @stackhb) 'heartbeat aktivieren - bus_init 'bussignale initialisieren - - '64 byte align the user characters - user_charbase := @uchar & $FFC0 'destination - 'user_charbase_offset := user_charbase-@uchar - longmove(user_charbase,@uchar,16*nuchars) - - keyb.start(keyb_dport, keyb_cport) 'tastaturport starten - vga.start(vga_basport, @array, @vgacolors, 0,0,0) 'vga-treiber starten - - print_char($100) 'bildschirm l?schen - cursor := CURSORCHAR 'cursorzeichen setzen - curstat := 1 'cursor anschalten - sline := 2 - eline := rows - -PUB bus_init -{{initialisierung des bussystems}} - dira := db_in 'datenbus auf eingabe schalten - outa[bus_hs] := 1 'handshake inaktiv - -PUB bus_putchar(zeichen) -{{ein byte ?ber bus ausgeben}} - waitpeq(%00000010_00000000_00000000_00000000,%00000010_10000000_00000000_00000000,0) 'busclk=1? & prop2=0? - dira := db_out 'datenbus auf ausgabe stellen - outa[7..0] := zeichen 'daten ausgeben - outa[bus_hs] := 0 'daten g?ltig - waitpeq(%00000000_00000000_00000000_00000000,%00000010_00000000_00000000_00000000,0) 'busclk=0? - 'waitcnt(1_000 + cnt) 'zeit f?r master - outa[bus_hs] := 1 'daten ung?ltig - dira := db_in 'bus freigeben - -PUB bus_getchar : zeichen -{{ein byte ?ber bus empfangen}} - waitpeq(%00000010_00000000_00000000_00000000,%00000010_10000000_00000000_00000000,0) 'busclk=1? & prop2=0? - zeichen := ina[7..0] 'daten einlesen - outa[bus_hs] := 0 'daten quittieren - outa[bus_hs] := 1 - waitpeq(%00000000_00000000_00000000_00000000,%00000010_00000000_00000000_00000000,0) 'busclk=0? - -PUB led_hbeat -{{led_hbeat - herzschlag f?r front-led}} - dira := db_in - repeat - !outa[hbeat] - waitcnt(cnt_hbeat + cnt) - -PUB print_str(strptr) -{{zeichenkette auf bildschirm ausgeben}} - repeat while byte[strptr] - print_char(byte[strptr++]) - - -PUB print_char(c) | code,n -{{zeichen auf bildschirm ausgeben}} -'' Print a character -'' -'' $0D = new line -'' $20..$FF = character -'' $100 = clear screen -'' $101 = home -'' $108 = backspace -''$110..$11F = select color - - case c - - $00..$0C: - pchar(c) - if curstat == 1 - schar(cursor) - - $0D: 'return? - if curstat == 1 - schar($20) - newline - if curstat == 1 - schar(cursor) - - $0E..$FF: 'character? - pchar(c) - if curstat == 1 - schar(cursor) - - $100: 'clear screen? - if curstat == 1 - schar($20) - n := sline * cols * 2 - wordfill(@array + n, spacetile, tiles - n) - row := sline - col := 0 - if curstat == 1 - schar(cursor) - - $101: 'home? - row := sline - col := 0 - - $102: 'backspace? - if col - if curstat == 1 - schar($20) - col-- - if curstat == 1 - schar(cursor) - - $103: 'tab - if col < TAB1 - if curstat == 1 - schar($20) - col := TAB1 - if curstat == 1 - schar(cursor) - return - if col < TAB2 - if curstat == 1 - schar($20) - col := TAB2 - if curstat == 1 - schar(cursor) - return - if col < TAB3 - if curstat == 1 - schar($20) - col := TAB3 - if curstat == 1 - schar(cursor) - return - $104: 'setcur - code := bus_getchar - cursor := code - if curstat == 1 - schar(code) - - $105: 'pos1 - if curstat == 1 - schar($20) - col := 0 - if curstat == 1 - schar(cursor) - - $106: 'setx - if curstat == 1 - schar($20) - col := bus_getchar - if curstat == 1 - schar(cursor) - - $107: 'sety - if curstat == 1 - schar($20) - row := bus_getchar * 2 + sline '2 tiles pro zeichen! - if curstat == 1 - schar(cursor) - - $108: 'getx - bus_putchar(col) - - $109: 'gety - bus_putchar(row / 2) - - $110: 'setcolor - color := bus_getchar - - $111: 'sline - sline := bus_getchar * 2 - - $112: 'eline - eline := bus_getchar * 2 - - $113: 'screeninit - wordfill(@array, spacetile, tiles) - row := 0 - col := 0 - sline := 0 - - $114: 'curon - curstat := 1 - schar(cursor) - - $115: 'curoff - if curstat == 1 - schar($20) - curstat := 0 - - $116: 'scrollup - scrollup - - $130..$13F: 'select color? - color := c & $F - -PRI schar(c)| i,k -'schreibt zeichen an aktuelle position ohne cursorposition zu ver?ndern - k := color << 1 + c & 1 - i := $8000 + (c & $FE) << 6 + k - array.word[row * cols + col] := i 'oberes tile setzen - array.word[(row + 1) * cols + col] := i | $40 'unteres tile setzen - -PRI pchar(c) -'schreibt zeichen an aktuelle position z?hlt position weiter - schar(c) - if ++col == cols - newline - -PUB newline | i - - col := 0 - if (row += 2) == rows - row -= 2 - 'scroll lines - repeat i from sline to rows-3 - - wordmove(@array.word[i*cols], @array.word[(i+2)*cols], cols) 'wordmove(dest,src,cnt) - 'clear new line - wordfill(@array.word[(rows-2)*cols], spacetile, cols<<1) - -PUB scrollup | i 'scrollt den screen nach oben - 'scroll lines - repeat i from sline to rows-3 - wordmove(@array.word[i*cols], @array.word[(i+2)*cols], cols) 'wordmove(dest,src,cnt) - 'clear new line - wordfill(@array.word[(rows-2)*cols], spacetile, cols<<1) - -PRI DrawText(pBmp,str,bInvert)|x1,x2,i,j,b,k,c,s -'draw prop font into bitmap - k:=0 'current column - repeat s from 0 to strsize(str)-1 - c:=byte[str][s] - if (c=>32) and (c=<(95+2)) 'note: char 96=dot, 97=degree - x1:=word[@FontTable][c-32] - x2:=word[@FontTable][c-32+1] - repeat i from x1 to x2-1 - DrawFontColumn(i,j,pBmp,k,b) - 'repeat j from 0 to 31 - ' b:=getFontPixel(i,j) - ' setFontPixel(pBmp,k,j,b) - k++ - -PRI DrawFontColumn(x,y,pdest,k,b)|dtile,stile,doffset,soffset,psrc,d,pixel,j - stile:=x/16 - soffset:=(x//16)*2 - psrc:=@font+4*16*stile+user_charbase-@uchar - dtile:=k/16 - doffset:=(k//16)*2 - pdest+=4*16*dtile+user_charbase-@uchar - repeat j from 0 to 31 - y:=j - if y=>16 - y-=16 - if j==16 - soffset++ - doffset++ - pixel:=long[psrc][y//16] - pixel>>=soffset - pixel&=$1 - 'draw - if pixel - long[pdest][y//16]|=|16 - offset++ - y-=16 - p:=@font+4*16*tile - d:=long[p+user_charbase-@uchar][y//16] - d>>=offset - return (d&$1)>0 - -PRI setFontPixel(p,x,y,b)|tile,offset,d -'set (b=true) or clear (b=false) pixel in bmp @p at coordinates (x,y) - tile:=x/16 - offset:=(x//16)*2 - if y=>16 - offset++ - y-=16 - p+=4*16*tile+user_charbase-@uchar - 'd:=long[p][y//16] - if b - long[p][y//16]|=|>6 + c & $FE - -PRI uPrintBottom(c,ncol,nrow)|i,k - 'print bottom part of a character - k := color << 1 + c & 1 - i := user_charbase + (c & $FE) << 6 + k - array.word[nrow * cols + ncol] := i+$40'user_charbase + (c<<6) + color+$40'(color << 1 + c & 1) << 10 + user_charbase>>6 + c & $FE +1 - -PRI Bitmap2Bit(pBitmap, xPos, yPos, xSize, ySize, clr)|c,i,j,BmpAddress - row:=yPos - col:=xPos - c:=0 - BmpAddress:=pBitmap+user_charbase-@uchar - repeat j from 0 to (ySize-1) - repeat i from 0 to (xSize-1) - array.word[row * cols + col] := BmpAddress + (c<<6) + clr - 'Print2Bit(c,clr,pBitmap) - c++ - col++ - row++ - col:=xPos - - -PRI Bitmap1Bit(pBitmap, xPos, yPos, xSize, ySize, clr)|c,i,j,BmpAddress - row:=yPos - col:=xPos - c:=0 - BmpAddress:=pBitmap+user_charbase-@uchar - repeat j from 0 to (ySize-1) step 2 - repeat i from 0 to (xSize-1) - array.word[row * cols + col] := (clr<<1+1) + BmpAddress +c<<6 - if ySize<>1 - array.word[(row+1) * cols + col] := (clr<<1) + BmpAddress +c<<6 - c++ - col++ - row+=2 - col:=xPos - - -PRI Bitmap1BitTile(pBitmap,x,y,clr,bLower)|BmpAddress -'print just the upper or lower tile of a 2-tile bitmap - BmpAddress:=pBitmap+user_charbase-@uchar - clr:=clr<<1+1 - if bLower - clr-=1 - - array.word[y * cols + x] := clr + BmpAddress - - -DAT - vgacolors long - -'0..1: text color 0: - long $90009000 'orange on black - long $90900000 -'2..3: text color 1: - long $5c005c00 'blue on black - long $5c5c0000 -'4..5: text color 2: - long $94009400 'light red on black - long $94940000 -'6..7: text color 3: - long $98009800 'purple on black - long $98980000 -'8..9: text color 4: - long $f800f800 'yellow on black - long $f8f80000 -'10..11: text color 5: - long $84008400 'dark red on black - long $84840000 - - -'12: graphics 2: 'card edge colors - long $100000FC ''green,black,black,white -'13: graphics 3: 'red face card colors - long $F0C000FC ' yellow,red,black,white -'14: graphics 4: 'black face card colors - long $F000C0FC ''yellow,black,red,white -'15: graphics 5: button colors - long $FC54A8A8 'lt grey, dk.gray, gray, gray - - -FontTable word - word 8, 16,21,32,60,72,92,107,114,121,129,138,150,156,164,170,184,195,203,214,225,239,250,261,273,284,295,300,306,316,333,343,354,378,392 'to B - word 403,414,425,435,445,456,467,472,483,496,506,523,537,548,559,570,582,593,605,616,630,649,663,676,686,695,706,720,733,743,751 'note last two chars are dot and degree - -padding LONG 7[16] 'alignment padding for the following user defined characters - -uchar long - -corner_topleft long - file "corner_topleft.dat" '6x2 - -corner_topright long - file "corner_topright.dat" '6x2 - -corner_bottomLeft long - file "corner_bottomLeft.dat" '6x2 - -hv_break long - file "hv_break.dat" '1x2 - -hv_break2 long - file "hv_break2.dat" '1x2 - -endcap_med_left long - file "endcap_med_left.dat" '1x2 - -endcap_med_right long - file "endcap_med_right.dat" '1x2 - -endcap_small_left long - file "endcap_small_left.dat" '1x2 - -endcap_small_right long - file "endcap_small_right.dat" '1x2 - -filled_space long - file "filled_space.dat" '1x2 - -font long - file "font_29p5.dat" '47x2 - -title long 0[16*23] 'space for title 23x2 -footer long 0[16*23] 'space for footer 23x2 - -button1 long 0[16*20] 'space for button text 10x2 -button2 long 0[16*20] 'space for button text -button3 long 0[16*20] 'space for button text -button4 long 0[16*20] 'space for button text -button5 long 0[16*20] 'space for button text -button6 long 0[16*20] 'space for button text 10x2 -button7 long 0[16*20] 'space for button text -button8 long 0[16*20] 'space for button text -button9 long 0[16*20] 'space for button text \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/stkeyb.spin b/zubehör/startracker/source/bellatrix-code/stkeyb.spin deleted file mode 100644 index dad7275..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/stkeyb.spin and /dev/null differ diff --git a/zubehör/startracker/source/bellatrix-code/stmouse.spin b/zubehör/startracker/source/bellatrix-code/stmouse.spin deleted file mode 100644 index a5518dc..0000000 --- a/zubehör/startracker/source/bellatrix-code/stmouse.spin +++ /dev/null @@ -1,470 +0,0 @@ -''***************************** -''* PS/2 Mouse Driver v1.1 * -''* (C) 2006 Parallax, Inc. * -''***************************** - -' v1.0 - 01 May 2006 - original version -' v1.1 - 01 Jun 2006 - bound coordinates added to simplify upper objects - - -VAR - - long cog - - long oldx, oldy, oldz 'must be followed by parameters (10 contiguous longs) - - long par_x 'absolute x read-only (7 contiguous longs) - long par_y 'absolute y read-only - long par_z 'absolute z read-only - long par_buttons 'button states read-only - long par_present 'mouse present read-only - long par_dpin 'data pin write-only - long par_cpin 'clock pin write-only - - long bx_min, by_min, bz_min 'min/max must be contiguous - long bx_max, by_max, bz_max - long bx_div, by_div, bz_div - long bx_acc, by_acc, bz_acc - - -PUB start(dpin, cpin) : okay - -'' Start mouse driver - starts a cog -'' returns false if no cog available -'' -'' dpin = data signal on PS/2 jack -'' cpin = clock signal on PS/2 jack -'' -'' use 100-ohm resistors between pins and jack -'' use 10K-ohm resistors to pull jack-side signals to VDD -'' connect jack-power to 5V, jack-gnd to VSS - - stop - par_dpin := dpin - par_cpin := cpin - okay := cog := cognew(@entry, @par_x) + 1 - - -PUB stop - -'' Stop mouse driver - frees a cog - - if cog - cogstop(cog~ - 1) - longfill(@oldx, 0, 10) - - -PUB present : type - -'' Check if mouse present - valid ~2s after start -'' returns mouse type: -'' -'' 3 = five-button scrollwheel mouse -'' 2 = three-button scrollwheel mouse -'' 1 = two-button or three-button mouse -'' 0 = no mouse connected - - type := par_present - - -PUB button(b) : state - -'' Get the state of a particular button -'' returns t|f - - state := -(par_buttons >> b & 1) - - -PUB buttons : states - -'' Get the states of all buttons -'' returns buttons: -'' -'' bit4 = right-side button -'' bit3 = left-side button -'' bit2 = center/scrollwheel button -'' bit1 = right button -'' bit0 = left button - - states := par_buttons - - -PUB abs_x : x - -'' Get absolute-x - - x := par_x - - -PUB abs_y : y - -'' Get absolute-y - - y := par_y - - -PUB abs_z : z - -'' Get absolute-z (scrollwheel) - - z := par_z - - -PUB delta_reset - -'' Reset deltas - - oldx := par_x - oldy := par_y - oldz := par_z - - -PUB delta_x : x | newx - -'' Get delta-x - - newx := par_x - x := newx - oldx - oldx := newx - - -PUB delta_y : y | newy - -'' Get delta-y - - newy := par_y - y := newy - oldy - oldy := newy - - -PUB delta_z : z | newz - -'' Get delta-z (scrollwheel) - - newz := par_z - z := newz - oldz - oldz := newz - - -PUB bound_limits(xmin, ymin, zmin, xmax, ymax, zmax) | i - -'' Set bounding limits - - longmove(@bx_min, @xmin, 6) - - -PUB bound_scales(x_scale, y_scale, z_scale) - -'' Set bounding scales (usually +/-1's, bigger values divide) - - longmove(@bx_div, @x_scale, 3) - - -PUB bound_preset(x, y, z) | i, d - -'' Preset bound coordinates - - repeat i from 0 to 2 - d := ||bx_div[i] - bx_acc[i] := (x[i] - bx_min[i]) * d + d >> 1 - - -PUB bound_x : x - -'' Get bound-x - - x := bound(0, delta_x) - - -PUB bound_y : y - -'' Get bound-y - - y := bound(1, delta_y) - - -PUB bound_z : z - -'' Get bound-z - - z := bound(2, delta_z) - - -PRI bound(i, delta) : b | d - - d := bx_div[i] - b := bx_min[i] + (bx_acc[i] := bx_acc[i] + delta * (d < 0) | 1 #> 0 <# (bx_max[i] - bx_min[i] + 1) * ||d - 1) / ||d - - -DAT - -'*************************************** -'* Assembly language PS/2 mouse driver * -'*************************************** - - org -' -' -' Entry -' -entry mov p,par 'load input parameters: - add p,#5*4 '_dpin/_cpin - rdlong _dpin,p - add p,#4 - rdlong _cpin,p - - mov dmask,#1 'set pin masks - shl dmask,_dpin - mov cmask,#1 - shl cmask,_cpin - - test _dpin,#$20 wc 'modify port registers within code - muxc _d1,dlsb - muxc _d2,dlsb - muxc _d3,#1 - muxc _d4,#1 - test _cpin,#$20 wc - muxc _c1,dlsb - muxc _c2,dlsb - muxc _c3,#1 - - movd :par,#_x 'reset output parameters: - mov p,#5 '_x/_y/_z/_buttons/_present -:par mov 0,#0 - add :par,dlsb - djnz p,#:par -' -' -' Reset mouse -' -reset mov dira,#0 'reset directions - mov dirb,#0 - - mov stat,#1 'set reset flag -' -' -' Update parameters -' -update movd :par,#_x 'update output parameters: - mov p,par '_x/_y/_z/_buttons/_present - mov q,#5 -:par wrlong 0,p - add :par,dlsb - add p,#4 - djnz q,#:par - - test stat,#1 wc 'if reset flag, transmit reset command - if_c mov data,#$FF - if_c call #transmit -' -' -' Get data packet -' - mov stat,#0 'reset state - - call #receive 'receive first byte - - cmp data,#$AA wz 'powerup/reset? - if_z jmp #init - - mov _buttons,data 'data packet, save buttons - - call #receive 'receive second byte - - test _buttons,#$10 wc 'adjust _x - muxc data,signext - add _x,data - - call #receive 'receive third byte - - test _buttons,#$20 wc 'adjust _y - muxc data,signext - add _y,data - - and _buttons,#%111 'trim buttons - - cmp _present,#2 wc 'if not scrollwheel mouse, update parameters - if_c jmp #update - - - call #receive 'scrollwheel mouse, receive fourth byte - - cmp _present,#3 wz 'if 5-button mouse, handle two extra buttons - if_z test data,#$10 wc - if_z_and_c or _buttons,#%01000 - if_z test data,#$20 wc - if_z_and_c or _buttons,#%10000 - - shl data,#28 'adjust _z - sar data,#28 - sub _z,data - - jmp #update 'update parameters -' -' -' Initialize mouse -' -init call #receive '$AA received, receive id - - movs crate,#100 'try to enable 3-button scrollwheel type - call #checktype - movs crate,#200 'try to enable 5-button scrollwheel type - call #checktype - shr data,#1 'if neither, 3-button type - add data,#1 - mov _present,data - - movs srate,#200 'set 200 samples per second - call #setrate - - mov data,#$F4 'enable data reporting - call #transmit - - jmp #update -' -' -' Check mouse type -' -checktype movs srate,#200 'perform "knock" sequence to enable - call #setrate '..scrollwheel and extra buttons - -crate movs srate,#200/100 - call #setrate - - movs srate,#80 - call #setrate - - mov data,#$F2 'read type - call #transmit - call #receive - -checktype_ret ret -' -' -' Set sample rate -' -setrate mov data,#$F3 - call #transmit -srate mov data,#0 - call #transmit - -setrate_ret ret -' -' -' Transmit byte to mouse -' -transmit -_c1 or dira,cmask 'pull clock low - movs napshr,#13 'hold clock for ~128us (must be >100us) - call #nap -_d1 or dira,dmask 'pull data low - movs napshr,#18 'hold data for ~4us - call #nap -_c2 xor dira,cmask 'release clock - - test data,#$0FF wc 'append parity and stop bits to byte - muxnc data,#$100 - or data,dlsb - - mov p,#10 'ready 10 bits -transmit_bit call #wait_c0 'wait until clock low - shr data,#1 wc 'output data bit -_d2 muxnc dira,dmask - mov wcond,c1 'wait until clock high - call #wait - djnz p,#transmit_bit 'another bit? - - mov wcond,c0d0 'wait until clock and data low - call #wait - mov wcond,c1d1 'wait until clock and data high - call #wait - - call #receive_ack 'receive ack byte with timed wait - cmp data,#$FA wz 'if ack error, reset mouse - if_nz jmp #reset - -transmit_ret ret -' -' -' Receive byte from mouse -' -receive test _cpin,#$20 wc 'wait indefinitely for initial clock low - waitpne cmask,cmask -receive_ack - mov p,#11 'ready 11 bits -receive_bit call #wait_c0 'wait until clock low - movs napshr,#16 'pause ~16us - call #nap -_d3 test dmask,ina wc 'input data bit - rcr data,#1 - mov wcond,c1 'wait until clock high - call #wait - djnz p,#receive_bit 'another bit? - - shr data,#22 'align byte - test data,#$1FF wc 'if parity error, reset mouse - if_nc jmp #reset - and data,#$FF 'isolate byte - -receive_ack_ret -receive_ret ret -' -' -' Wait for clock/data to be in required state(s) -' -wait_c0 mov wcond,c0 '(wait until clock low) - -wait mov q,tenms 'set timeout to 10ms - -wloop movs napshr,#18 'nap ~4us - call #nap -_c3 test cmask,ina wc 'check required state(s) -_d4 test dmask,ina wz 'loop until got state(s) or timeout -wcond if_never djnz q,#wloop '(replaced with c0/c1/c0d0/c1d1) - - tjz q,#reset 'if timeout, reset mouse -wait_ret -wait_c0_ret ret - - -c0 if_c djnz q,#wloop '(if_never replacements) -c1 if_nc djnz q,#wloop -c0d0 if_c_or_nz djnz q,#wloop -c1d1 if_nc_or_z djnz q,#wloop -' -' -' Nap -' -nap rdlong t,#0 'get clkfreq -napshr shr t,#18/16/13 'shr scales time - min t,#3 'ensure waitcnt won't snag - add t,cnt 'add cnt to time - waitcnt t,#0 'wait until time elapses (nap) - -nap_ret ret -' -' -' Initialized data -' -dlsb long 1 << 9 -tenms long 10_000 / 4 -signext long $FFFFFF00 -' -' -' Uninitialized data -' -dmask res 1 -cmask res 1 -stat res 1 -data res 1 -p res 1 -q res 1 -t res 1 - -_x res 1 'write-only -_y res 1 'write-only -_z res 1 'write-only -_buttons res 1 'write-only -_present res 1 'write-only -_dpin res 1 'read-only -_cpin res 1 'read-only \ No newline at end of file diff --git a/zubehör/startracker/source/bellatrix-code/stvga.spin b/zubehör/startracker/source/bellatrix-code/stvga.spin deleted file mode 100644 index 9acf513..0000000 Binary files a/zubehör/startracker/source/bellatrix-code/stvga.spin and /dev/null differ diff --git a/zubehör/startracker/source/regnatix-code/ios.spin b/zubehör/startracker/source/regnatix-code/ios.spin deleted file mode 100644 index 3373d3f..0000000 Binary files a/zubehör/startracker/source/regnatix-code/ios.spin and /dev/null differ diff --git a/zubehör/startracker/source/regnatix-code/stplay.spin b/zubehör/startracker/source/regnatix-code/stplay.spin deleted file mode 100644 index a3abe7b..0000000 Binary files a/zubehör/startracker/source/regnatix-code/stplay.spin and /dev/null differ