diff --git a/.DS_Store b/.DS_Store index a2b992c..7edd7c7 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/cogito/About.gif b/cogito/About.gif new file mode 100644 index 0000000..c4dcb3a Binary files /dev/null and b/cogito/About.gif differ diff --git a/cogito/Cogito.Bout.s b/cogito/Cogito.Bout.s new file mode 100644 index 0000000..9d8ff51 --- /dev/null +++ b/cogito/Cogito.Bout.s @@ -0,0 +1,3076 @@ + + LST OFF + +*********** CREATION DE L'ECRAN D'INTRODUCTION ******** + +CADPRES LDA #$0008 ; SPRITE HAUTEUR-1 + STA CADSPR4+1 + LDA #$0640 ; NB DE LIGNE A SAUTER POUR LE MASK + STA CADSPR7+1 + LDA #$3160 ; ADRESSE SPRITE + LDX #$0012 ; LARGEUR (*4) + LDY #$75A5 ; ADRESSE ECRAN + JSR CADSPR ; AFFICHE LE TEXTE : NO COLOR + LDA #$0001 + JSR nowWait ; WAIT 1 sec + LDA #$0007 + STA CADSPR4+1 + LDA #$05A0 + STA CADSPR7+1 + LDA #$3225 + LDX #$0010 + LDY #$766A + JSR CADSPR ; AFFICHE LE TEXTE : NO MUSIC + LDA #$0001 + JSR nowWait ; WAIT 1 sec + LDA #$000A + STA CADSPR4+1 + LDA #$06E0 + STA CADSPR7+1 + LDA #$3607 + LDX #$0027 + LDY #$75EE + JSR CADSPR ; AFFICHE LE TEXTE : NO YOU NEEDN'T + LDA #$0001 + JSR nowWait ; WAIT 1 sec + LDA #$000A + STA CADSPR4+1 + LDA #$06E0 + STA CADSPR7+1 + LDA #$5E60 + LDX #$0048 + LDY #$7DC8 + JSR CADSPR ; AFFICHE LE TEXTE : IT'S ONLY A FIGHT + LDA #$0003 + JSR nowWait ; WAIT 3 sec + LDA #$000C + STA CADSPR4+1 + LDA #$0820 + STA CADSPR7+1 + LDA #$1947 + LDX #$001B + LDY #$2676 + JSR CADSPR ; AFFICHE LE TEXTE : JEROME CRETAUX + LDA #$0001 + JSR nowWait ; WAIT 1 sec + LDA #$000C + STA CADSPR4+1 + LDA #$0820 + STA CADSPR7+1 + LDA #$1981 + LDX #$000E + LDY #$2E02 + JSR CADSPR ; AFFICHE LE TEXTE : PRESENT + LDA #$0001 + JSR nowWait ; WAIT 1 sec + LDA #$0007 + STA CADSPR4+1 + LDA #$0640 + STA CADSPR7+1 + LDA #$2A26 + LDX #$002C + LDY #$6624 + JSR CADSPR ; AFFICHE LE TEXTE : THE NEURONAL CHALLENGE + LDA #$0002 + JSR nowWait ; WAIT 2 sec + LDA #$000C + STA CADSPR4+1 + LDA #$0820 + STA CADSPR7+1 + LDA #$6CC0 + LDX #$004B + LDY #$9305 + JSR CADSPR ; AFFICHE LE TEXTE : c ATREID CONCEPT + LDA #$0004 + JSR nowWait ; WAIT 4 sec + RTS + +* pha ; Need to be frequently done +* _NTUpdateSound +* pla + +*********** CREATION ECRAN EASTER EGGS ************** + +CADEAEG JSR CADRE ; CREATION DU CADRE + LDA #CADRE9 ; BOUTON OK C + JSR CADRC + JSR CASOMB0 + LDA #$CCCC ; PATCH BOUTON OK + STAL $E195D9 + LDA #$0D0D ; TEXTE OK + LDX #$0004 + LDY #$8EEC + JSR CADTXT + RTS + +*********** CREATION ECRAN CONTROL PANEL ************** + +CADCTPN LDA #CADRE1 ; CREATION DES BOUTONS + JSR CASOMB + LDA #$000F ; SPRITE COGITO HAUTEUR + STA CADSPR4+1 + LDA #$0C80 + STA CADSPR7+1 + LDA #$1900 + LDX #$001F + LDY #$2851 + JSR CADSPR + LDA #CADRE2 ; BOUTON2 C + JSR CADRC + JSR CASOMB0 + LDA #$0C80 ; TEXTE 2 : GAME + LDX #$0009 + LDY #$39B3 + JSR CADTXT + LDA #CADRE8 ; BOUTON 8 C + JSR CADRC + JSR CASOMB0 + LDA #$0CFC ; TEXTE 8 : QUIT + LDX #$0008 + LDY #$80F4 + JSR CADTXT + LDA #CADRE3 ; BOUTON 3 C + JSR CADRC + JSR CASOMB0 + LDA #$0C93 ; TEXTE 3 : MUSIC + LDX #$000A + LDY #$4592 + JSR CADTXT + LDA #CADRE7 ; BOUTON 7 C + JSR CADRC + JSR CASOMB0 + LDA #$0CE5 ; TEXTE 7 : ABOUT + LDX #$000B + LDY #$7511 + JSR CADTXT + LDA #CADRE4 ; BOUTON 4 C + JSR CADRC + JSR CASOMB0 + LDA #$0CA8 ; TEXTE 4 : GROUND + LDX #$000D + LDY #$516F + JSR CADTXT + LDA #CADRE6 ; BOUTON 6 C + JSR CADRC + JSR CASOMB0 + LDA #$0CD8 ; TEXTE 6 : DOC + LDX #$0006 + LDY #$6936 + JSR CADTXT + LDA #CADRE5 ; BOUTON 5 C + JSR CADRC + JSR CASOMB0 + LDA #$0CC3 ; TEXTE 5 : LEVEL + LDX #$000A + LDY #$5D52 + JSR CADTXT + LDA #CADRE9 ; BOUTON OK C + JSR CADRC + JSR CASOMB0 + LDA #$CCCC ; PATCH BOUTON OK + STAL $E195D9 + LDA #$0D0D ; TEXTE OK + LDX #$0004 + LDY #$8EEC + JSR CADTXT + RTS + +************ BOUTONS CONTROL PANEL ********** + +CADGAMC LDA #CADREC2 ; BOUTON2 C + JSR CADRC + LDA #$0C80 ; TEXTE 2 : GAME + LDX #$0009 + LDY #$39B3 + JSR CADTXT + RTS +CADGAMF LDA #CADREF2 ; BOUTON2 F + JSR CADRC + LDA #$0000 ; TEXTE 2 : GAME + LDX #$0009 + LDY #$39B3 + JSR CADTXT + RTS + +CADQUIC LDA #CADREC8 ; BOUTON 8 C + JSR CADRC + LDA #$0CFC ; TEXTE 8 : QUIT + LDX #$0008 + LDY #$80F4 + JSR CADTXT + RTS +CADQUIF LDA #CADREF8 ; BOUTON 8 F + JSR CADRC + LDA #$007C ; TEXTE 8 : QUIT + LDX #$0008 + LDY #$80F4 + JSR CADTXT + RTS + +CADMUSC LDA #CADREC3 ; BOUTON 3 C + JSR CADRC + LDA #$0C93 ; TEXTE 3 : MUSIC + LDX #$000A + LDY #$4592 + JSR CADTXT + RTS +CADMUSF LDA #CADREF3 ; BOUTON 3 F + JSR CADRC + LDA #$0013 ; TEXTE 3 : MUSIC + LDX #$000A + LDY #$4592 + JSR CADTXT + RTS + +CADABOC LDA #CADREC7 ; BOUTON 7 C + JSR CADRC + LDA #$0CE5 ; TEXTE 7 : ABOUT + LDX #$000B + LDY #$7511 + JSR CADTXT + RTS +CADABOF LDA #CADREF7 ; BOUTON 7 F + JSR CADRC + LDA #$0065 ; TEXTE 7 : ABOUT + LDX #$000B + LDY #$7511 + JSR CADTXT + RTS + +CADGROC LDA #CADREC4 ; BOUTON 4 C + JSR CADRC + LDA #$0CA8 ; TEXTE 4 : GROUND + LDX #$000D + LDY #$516F + JSR CADTXT + RTS +CADGROF LDA #CADREF4 ; BOUTON 4 F + JSR CADRC + LDA #$0028 ; TEXTE 4 : GROUND + LDX #$000D + LDY #$516F + JSR CADTXT + RTS + +CADDOCC LDA #CADREC6 ; BOUTON 6 C + JSR CADRC + LDA #$0CD8 ; TEXTE 6 : DOC + LDX #$0006 + LDY #$6936 + JSR CADTXT + RTS +CADDOCF LDA #CADREF6 ; BOUTON 6 F + JSR CADRC + LDA #$0058 ; TEXTE 6 : DOC + LDX #$0006 + LDY #$6936 + JSR CADTXT + RTS + +CADLEVC LDA #CADREC5 ; BOUTON 5 C + JSR CADRC + LDA #$0CC3 ; TEXTE 5 : LEVEL + LDX #$000A + LDY #$5D52 + JSR CADTXT + RTS +CADLEVF LDA #CADREF5 ; BOUTON 5 F + JSR CADRC + LDA #$0043 ; TEXTE 5 : LEVEL + LDX #$000A + LDY #$5D52 + JSR CADTXT + RTS + +CADOKC LDA #CADREC9 ; BOUTON OK C + JSR CADRC + LDA #$CCCC ; PATCH BOUTON OK + STAL $E195D9 + LDA #$0D0D ; TEXTE OK + LDX #$0004 + LDY #$8EEC + JSR CADTXT + RTS +CADOKF LDA #CADREF9 ; BOUTON OK F + JSR CADRC + LDA #$FFFF ; PATCH BOUTON OK + STAL $E195D9 + LDA #$008D ; TEXTE OK + LDX #$0004 + LDY #$8EEC + JSR CADTXT + RTS + +CADRE1 HEX 5D00,0900,E200,2000,00CC,C000,0000 ; COGITO + +CADRE2 HEX 1800,2500,5600,3400,00CC,C000,0100 ; GAME +CADREC2 HEX 1800,2500,5600,3400,00CC,C000,0000 +CADREF2 HEX 1800,2500,5600,3400,00FF,F000,0000 + +CADRE3 HEX 1800,3800,5600,4700,00CC,C000,0100 ; MUSIC +CADREC3 HEX 1800,3800,5600,4700,00CC,C000,0000 +CADREF3 HEX 1800,3800,5600,4700,00FF,F000,0000 + +CADRE4 HEX 1800,4B00,5600,5A00,00CC,C000,0100 ; GROUND +CADREC4 HEX 1800,4B00,5600,5A00,00CC,C000,0000 +CADREF4 HEX 1800,4B00,5600,5A00,00FF,F000,0000 + +CADRE5 HEX 1800,5E00,5600,6D00,00CC,C000,0100 ; LEVEL +CADREC5 HEX 1800,5E00,5600,6D00,00CC,C000,0000 +CADREF5 HEX 1800,5E00,5600,6D00,00FF,F000,0000 + +CADRE6 HEX 1800,7100,5600,8000,00CC,C000,0100 ; DOC +CADREC6 HEX 1800,7100,5600,8000,00CC,C000,0000 +CADREF6 HEX 1800,7100,5600,8000,00FF,F000,0000 + +CADRE7 HEX 1800,8400,5600,9300,00CC,C000,0100 ; ABOUT +CADREC7 HEX 1800,8400,5600,9300,00CC,C000,0000 +CADREF7 HEX 1800,8400,5600,9300,00FF,F000,0000 + +CADRE8 HEX 1800,9700,5600,A600,00CC,C000,0100 ; QUIT +CADREC8 HEX 1800,9700,5600,A600,00CC,C000,0000 +CADREF8 HEX 1800,9700,5600,A600,00FF,F000,0000 + +CADRE9 HEX 8800,AD00,B600,BC00,00CC,C000,0100 ; OK +CADREC9 HEX 8800,AD00,B600,BC00,00CC,C000,0000 +CADREF9 HEX 8800,AD00,B600,BC00,00FF,F000,0000 + + asc 'The one who finishes this game is not normal!',8d + asc 'Contact your local dealer for a brain update',8d + +*************** CREATION DE L'ECRAN LOAD/SAVE *********** + +CADGAME LDA #CADRGAME + JSR CASOMB + LDA #$0000 ; GAME + LDX #$0009 + LDY #$3BEB + JSR CADTXT + LDA #CADRGA1 ; LOAD + JSR CADRC + JSR CASOMB0 + JSR CADGLOC + LDA #CADRGA3 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADGOKC + LDA #CADRGA2 ; SAVE + JSR CADRC + JSR CASOMB0 + JSR CADGSAC + RTS + +*************** BOUTONS LOAD/SAVE GAME ***************** + +CADGLOC LDA #CADRGAC1 ; BOUTON 1 C + JSR CADRC ; TEXTE 1 : LOAD + LDA #$467C ; ADRESSE SPRITE + LDX #$0012 ; LARGEUR + LDY #$51C2 ; ADRESSE ECRAN + JSR CADTXT + RTS +CADGLOF LDA #CADRGAF1 ; BOUTON 1 F + JSR CADRC + LDA #$3DE0 ; TEXTE 1 : LOAD + LDX #$0012 + LDY #$51C2 + JSR CADTXT + RTS + +CADGSAC LDA #CADRGAC2 ; BOUTON 2 C + JSR CADRC + LDA #$525C ; TEXTE 2 : SAVE + LDX #$0012 + LDY #$5DA2 + JSR CADTXT + RTS +CADGSAF LDA #CADRGAF2 ; BOUTON 2 F + JSR CADRC + LDA #$49C0 ; TEXTE 2 : SAVE + LDX #$0012 + LDY #$5DA2 + JSR CADTXT + RTS + +CADGOKC LDA #CADRGAC3 ; BOUTON 3 C + JSR CADRC + LDA #$0D0D ; TEXTE 3 : OK + LDX #$0004 + LDY #$6FD0 + JSR CADTXT + RTS +CADGOKF LDA #CADRGAF3 ; BOUTON 3 F + JSR CADRC + LDA #$008D ; TEXTE 3 : OK + LDX #$0004 + LDY #$6FD0 + JSR CADTXT + RTS + +CADRGAME HEX CE00,2800,FE00,3700,0000,0000,0000 ; GAME + +CADRGA1 HEX BC00,4B00,1201,5A00,00CC,C000,0100 ; LOAD +CADRGAC1 HEX BC00,4B00,1201,5A00,00CC,C000,0000 +CADRGAF1 HEX BC00,4B00,1201,5A00,00FF,F000,0000 + +CADRGA2 HEX BC00,5E00,1201,6D00,00CC,C000,0100 ; SAVE +CADRGAC2 HEX BC00,5E00,1201,6D00,00CC,C000,0000 +CADRGAF2 HEX BC00,5E00,1201,6D00,00FF,F000,0000 + +CADRGA3 HEX D000,7B00,FE00,8A00,00CC,C000,0100 ; OK +CADRGAC3 HEX D000,7B00,FE00,8A00,00CC,C000,0000 +CADRGAF3 HEX D000,7B00,FE00,8A00,00FF,F000,0000 + +************* CREATION DE L'ECRAN MUSIC ************* + +CADMUSI LDA #CADRMUSI + JSR CASOMB + LDA #$0013 ; MUSIC TITRE + LDX #$000A + LDY #$3BEA + JSR CADTXT + LDA MUSIFLAG ; MUSIC + BEQ CADMUSI1 + LDA #CADRMU1 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADMMUC + BRA CADMUSI2 +CADMUSI1 LDA #CADRMU1+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADMMUF +CADMUSI2 LDA #CADRMU3 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADMOKC + LDA MUSIFLAG ; SOUND + BNE CADMUSI3 + LDA #CADRMU2 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADMSNC + RTS +CADMUSI3 LDA #CADRMU2+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADMSNF + RTS + +******************* MUSIC ******************** + +CADMMUC LDA #CADRMUC1 ; BOUTON 1 C + JSR CADRC ; TEXTE 1 : MUSIC + LDA #$0C93 ; ADRESSE SPRITE + LDX #$000A ; LARGEUR + LDY #$51CA ; ADRESSE ECRAN + JSR CADTXT + RTS +CADMMUF LDA #CADRMUF1 ; BOUTON 1 F + JSR CADRC + LDA #$0013 ; TEXTE 1 : MUSIC + LDX #$000A + LDY #$51CA + JSR CADTXT + RTS + +CADMSNC LDA #CADRMUC2 ; BOUTON 2 C + JSR CADRC + LDA #$5245 ; TEXTE 2 : SOUND + LDX #$000B + LDY #$5DA9 + JSR CADTXT + RTS +CADMSNF LDA #CADRMUF2 ; BOUTON 2 F + JSR CADRC + LDA #$45C5 ; TEXTE 2 : SOUND + LDX #$000B + LDY #$5DA9 + JSR CADTXT + RTS + +CADMOKC LDA #CADRMUC3 ; BOUTON 3 C + JSR CADRC + LDA #$0D0D ; TEXTE 3 : OK + LDX #$0004 + LDY #$6FD0 + JSR CADTXT + RTS +CADMOKF LDA #CADRMUF3 ; BOUTON 3 F + JSR CADRC + LDA #$008D ; TEXTE 3 : OK + LDX #$0004 + LDY #$6FD0 + JSR CADTXT + RTS + +CADRMUSI HEX CC00,2800,0001,3700,0000,0000,0000 ; MUSIC CADRE SOMBRE + +CADRMU1 HEX C800,4B00,0601,5A00,00CC,C000,0100 ; MUSIC + HEX C800,4B00,0601,5A00,00FF,F000,0100 +CADRMUC1 HEX C800,4B00,0601,5A00,00CC,C000,0000 +CADRMUF1 HEX C800,4B00,0601,5A00,00FF,F000,0000 + +CADRMU2 HEX C800,5E00,0601,6D00,00CC,C000,0100 ; SOUND + HEX C800,5E00,0601,6D00,00FF,F000,0100 +CADRMUC2 HEX C800,5E00,0601,6D00,00CC,C000,0000 +CADRMUF2 HEX C800,5E00,0601,6D00,00FF,F000,0000 + +CADRMU3 HEX D000,7B00,FE00,8A00,00CC,C000,0100 ; OK +CADRMUC3 HEX D000,7B00,FE00,8A00,00CC,C000,0000 +CADRMUF3 HEX D000,7B00,FE00,8A00,00FF,F000,0000 + +************* CREATION DE L'ECRAN GROUND ************* + +CADGROU LDA #CADRGROU + JSR CASOMB + LDA #$0028 ; GROUND TITRE + LDX #$000D + LDY #$3BE8 + JSR CADTXT + LDA #CADRGR6 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADGROKC + LDA GROUFLAG ; RANDOM + CMP #$0004 + BNE CADGROU1 + LDA #CADRGR5+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADGRRAF + BRA CADGROU2 +CADGROU1 LDA #CADRGR5 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADGRRAC +CADGROU2 LDA GROUFLAG ; LUDY + CMP #$0001 + BNE CADGROU3 + LDA #CADRGR2+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADGRLUF + BRA CADGROU4 +CADGROU3 LDA #CADRGR2 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADGRLUC +CADGROU4 LDA GROUFLAG ; HAPPY + CMP #$0000 + BNE CADGROU5 + LDA #CADRGR1+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADGRHAF + BRA CADGROU6 +CADGROU5 LDA #CADRGR1 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADGRHAC +CADGROU6 LDA GROUFLAG ; XENO + CMP #$0003 + BNE CADGROU7 + LDA #CADRGR4+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADGRXEF + BRA CADGROU8 +CADGROU7 LDA #CADRGR4 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADGRXEC +CADGROU8 LDA GROUFLAG ; PLANET + CMP #$0002 + BNE CADGROU9 + LDA #CADRGR3+14 ; CLAIR + JSR CADRC + JSR CASOMB0 + JSR CADGRPLF + RTS +CADGROU9 LDA #CADRGR3 ; FONCE + JSR CADRC + JSR CASOMB0 + JSR CADGRPLC + RTS + +******************* GROUND ******************** + +CADGRHAC LDA #CADRGRC1 ; BOUTON 1 C + JSR CADRC ; TEXTE 1 : HAPPY + LDA #$0CAE ; ADRESSE SPRITE + LDX #$000B ; LARGEUR + LDY #$4B78 ; ADRESSE ECRAN + JSR CADTXT2 + RTS +CADGRHAF LDA #CADRGRF1 ; BOUTON 1 F + JSR CADRC + LDA #$002E ; TEXTE 1 : HAPPY + LDX #$000B + LDY #$4B78 + JSR CADTXT2 + RTS + +CADGRLUC LDA #CADRGRC2 ; BOUTON 2 C + JSR CADRC + LDA #$0CC4 ; TEXTE 2 : LUDY + LDX #$0009 + LDY #$4B9F + JSR CADTXT2 + RTS +CADGRLUF LDA #CADRGRF2 ; BOUTON 2 F + JSR CADRC + LDA #$0044 ; TEXTE 2 : LUDY + LDX #$0009 + LDY #$4B9F + JSR CADTXT2 + RTS + +CADGRPLC LDA #CADRGRC3 ; BOUTON 3 C + JSR CADRC + LDA #$0CD6 ; TEXTE 3 : PLANET + LDX #$000D + LDY #$5755 + JSR CADTXT2 + RTS +CADGRPLF LDA #CADRGRF3 ; BOUTON 3 F + JSR CADRC + LDA #$0056 ; TEXTE 3 : PLANET + LDX #$000D + LDY #$5755 + JSR CADTXT2 + RTS + +CADGRXEC LDA #CADRGRC4 ; BOUTON 4 C + JSR CADRC + LDA #$0CF2 ; TEXTE 4 : XENO + LDX #$0009 + LDY #$577F + JSR CADTXT2 + RTS +CADGRXEF LDA #CADRGRF4 ; BOUTON 4 F + JSR CADRC + LDA #$0072 ; TEXTE 4 : XENO + LDX #$0009 + LDY #$577F + JSR CADTXT2 + RTS + +CADGRRAC LDA #CADRGRC5 ; BOUTON 5 C + JSR CADRC + LDA #$0D04 ; TEXTE 5 : RANDOM + LDX #$000D + LDY #$6668 + JSR CADTXT2 + RTS +CADGRRAF LDA #CADRGRF5 ; BOUTON 5 F + JSR CADRC + LDA #$0084 ; TEXTE 5 : RANDOM + LDX #$000D + LDY #$6668 + JSR CADTXT2 + RTS + +CADGROKC LDA #CADRGRC6 ; BOUTON 6 C + JSR CADRC + LDA #$0D0D ; TEXTE 6 : OK + LDX #$0004 + LDY #$7891 + JSR CADTXT + RTS +CADGROKF LDA #CADRGRF6 ; BOUTON 6 F + JSR CADRC + LDA #$008D ; TEXTE 6 : OK + LDX #$0004 + LDY #$7891 + JSR CADTXT + RTS + +CADRGROU HEX C800,2800,0A01,3700,0000,0000,0000 ; GROUND CADRE SOMBRE + +CADRGR1 HEX A200,4100,E600,5000,00CC,C000,0100 ; HAPPY + HEX A200,4100,E600,5000,00FF,F000,0100 +CADRGRC1 HEX A200,4100,E600,5000,00CC,C000,0000 +CADRGRF1 HEX A200,4100,E600,5000,00FF,F000,0000 + +CADRGR2 HEX EC00,4100,3001,5000,00CC,C000,0100 ; LUDY + HEX EC00,4100,3001,5000,00FF,F000,0100 +CADRGRC2 HEX EC00,4100,3001,5000,00CC,C000,0000 +CADRGRF2 HEX EC00,4100,3001,5000,00FF,F000,0000 + +CADRGR3 HEX A200,5400,E600,6300,00CC,C000,0100 ; PLANET + HEX A200,5400,E600,6300,00FF,F000,0100 +CADRGRC3 HEX A200,5400,E600,6300,00CC,C000,0000 +CADRGRF3 HEX A200,5400,E600,6300,00FF,F000,0000 + +CADRGR4 HEX EC00,5400,3001,6300,00CC,C000,0100 ; XENO + HEX EC00,5400,3001,6300,00FF,F000,0100 +CADRGRC4 HEX EC00,5400,3001,6300,00CC,C000,0000 +CADRGRF4 HEX EC00,5400,3001,6300,00FF,F000,0000 + +CADRGR5 HEX C800,6C00,0A01,7B00,00CC,C000,0100 ; RANDOM + HEX C800,6C00,0A01,7B00,00FF,F000,0100 +CADRGRC5 HEX C800,6C00,0A01,7B00,00CC,C000,0000 +CADRGRF5 HEX C800,6C00,0A01,7B00,00FF,F000,0000 + +CADRGR6 HEX D200,8900,0001,9800,00CC,C000,0100 ; OK +CADRGRC6 HEX D200,8900,0001,9800,00CC,C000,0000 +CADRGRF6 HEX D200,8900,0001,9800,00FF,F000,0000 + +************* CREATION DE L'ECRAN LEVEL ************* + +CADLEVE LDA #CADRLEVE + JSR CASOMB + LDA #$0043 ; LEVEL TITRE + LDX #$000A + LDY #$3BEB + JSR CADTXT + LDA #CADRLE5 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADLOKC + LDA #CADRLE4 ; >> + JSR CADRC + JSR CASOMB0 + JSR CADLPDC + LDA #CADRLE3 ; > + JSR CADRC + JSR CASOMB0 + JSR CADLPUC + LDA #CADRLE2 ; < + JSR CADRC + JSR CASOMB0 + JSR CADLMUC + LDA #CADRLE1 ; << + JSR CADRC + JSR CASOMB0 + JSR CADLMDC + RTS + + asc 'Nice place in San Francisco: O FARREL STREET THEATRE... :-)',8d + +******************* LEVEL ******************** + +CADLMDC LDA #CADRLEC1 ; BOUTON 1 C + JSR CADRC ; TEXTE 1 : << + LDA #$5197 ; ADRESSE SPRITE + LDX #$0003 ; LARGEUR + LDY #$633D ; ADRESSE ECRAN + JSR CADTXT9 + RTS +CADLMDF LDA #CADRLEF1 ; BOUTON 1 F + JSR CADRC + LDA #$4517 ; TEXTE 1 : << + LDX #$0003 + LDY #$633D + JSR CADTXT9 + RTS + +CADLMUC LDA #CADRLEC2 ; BOUTON 2 C + JSR CADRC + LDA #$6B77 ; TEXTE 2 : < + LDX #$0002 + LDY #$634B + JSR CADTXT9 + RTS +CADLMUF LDA #CADRLEF2 ; BOUTON 2 F + JSR CADRC + LDA #$5EF7 ; TEXTE 2 : < + LDX #$0002 + LDY #$634B + JSR CADTXT9 + RTS + +CADLPUC LDA #CADRLEC3 ; BOUTON 3 C + JSR CADRC + LDA #$6B7C ; TEXTE 3 : > + LDX #$0002 + LDY #$6359 + JSR CADTXT9 + RTS +CADLPUF LDA #CADRLEF3 ; BOUTON 3 F + JSR CADRC + LDA #$5EFC ; TEXTE 3 : > + LDX #$0002 + LDY #$6359 + JSR CADTXT9 + RTS + +CADLPDC LDA #CADRLEC4 ; BOUTON 4 C + JSR CADRC + LDA #$519E ; TEXTE 4 : >> + LDX #$0003 + LDY #$6365 + JSR CADTXT9 + RTS +CADLPDF LDA #CADRLEF4 ; BOUTON 4 F + JSR CADRC + LDA #$451E ; TEXTE 4 : >> + LDX #$0003 + LDY #$6365 + JSR CADTXT9 + RTS + +CADLOKC LDA #CADRLEC5 ; BOUTON 5 C + JSR CADRC + LDA #$0D0D ; TEXTE 5 : OK + LDX #$0004 + LDY #$7570 + JSR CADTXT + RTS +CADLOKF LDA #CADRLEF5 ; BOUTON 5 F + JSR CADRC + LDA #$008D ; TEXTE 5 : OK + LDX #$0004 + LDY #$7570 + JSR CADTXT + RTS + +CADRLEVE HEX CE00,2800,0401,3700,0000,0000,0000 ; LEVEL CADRE SOMBRE + +CADRLE1 HEX B400,6800,CA00,7600,00CC,C000,0100 ; << +CADRLEC1 HEX B400,6800,CA00,7600,00CC,C000,0000 +CADRLEF1 HEX B400,6800,CA00,7600,00FF,F000,0000 + +CADRLE2 HEX CE00,6800,E400,7600,00CC,C000,0100 ; < +CADRLEC2 HEX CE00,6800,E400,7600,00CC,C000,0000 +CADRLEF2 HEX CE00,6800,E400,7600,00FF,F000,0000 + +CADRLE3 HEX EA00,6800,0001,7600,00CC,C000,0100 ; > +CADRLEC3 HEX EA00,6800,0001,7600,00CC,C000,0000 +CADRLEF3 HEX EA00,6800,0001,7600,00FF,F000,0000 + +CADRLE4 HEX 0401,6800,1A01,7600,00CC,C000,0100 ; >> +CADRLEC4 HEX 0401,6800,1A01,7600,00CC,C000,0000 +CADRLEF4 HEX 0401,6800,1A01,7600,00FF,F000,0000 + +CADRLE5 HEX D000,8400,FE00,9300,00CC,C000,0100 ; OK +CADRLEC5 HEX D000,8400,FE00,9300,00CC,C000,0000 +CADRLEF5 HEX D000,8400,FE00,9300,00FF,F000,0000 + +************* CREATION DE L'ECRAN DOC ************* + +CADDOCU LDA #CADRDOCU + JSR CASOMB + LDA #$0058 ; DOC TITRE + LDX #$0006 + LDY #$359F + JSR CADTXT + LDA #CADRDO3 ; > + JSR CADRC + JSR CASOMB0 + JSR CADDPUC + LDA #CADRDO2 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADDOKC + LDA #CADRDO1 ; < + JSR CADRC + JSR CASOMB0 + JSR CADDMUC + RTS + +****************** CREATION DE ABOUT ************** + +CADABOU LDA #CADRABOU + JSR CASOMB + LDA #$0065 ; ABOUT TITRE + LDX #$000B + LDY #$359B + JSR CADTXT + LDA #CADRDO3 ; > + JSR CADRC + JSR CASOMB0 + JSR CADDPUC + LDA #CADRDO2 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADDOKC + LDA #CADRDO1 ; < + JSR CADRC + JSR CASOMB0 + JSR CADDMUC + RTS + +******************* DOC/ABOUT ******************** + +CADDMUC LDA #CADRDOC1 ; BOUTON 1 C + JSR CADRC ; TEXTE 1 : < + LDA #$6B77 ; ADRESSE SPRITE + LDX #$0002 ; LARGEUR + LDY #$81CF ; ADRESSE ECRAN + JSR CADTXT9 + RTS +CADDMUF LDA #CADRDOF1 ; BOUTON 1 F + JSR CADRC + LDA #$5EF7 ; TEXTE 1 : < + LDX #$0002 + LDY #$81CF + JSR CADTXT9 + RTS + +CADDOKC LDA #CADRDOC2 ; BOUTON 2 C + JSR CADRC + LDA #$0D0D ; TEXTE 2 : OK + LDX #$0004 + LDY #$8281 + JSR CADTXT + RTS +CADDOKF LDA #CADRDOF2 ; BOUTON 2 F + JSR CADRC + LDA #$008D ; TEXTE 2 : OK + LDX #$0004 + LDY #$8281 + JSR CADTXT + RTS + +CADDPUC LDA #CADRDOC3 ; BOUTON 3 C + JSR CADRC + LDA #$6B7C ; TEXTE 3 : > + LDX #$0002 + LDY #$81F7 + JSR CADTXT9 + RTS +CADDPUF LDA #CADRDOF3 ; BOUTON 3 F + JSR CADRC + LDA #$5EFC ; TEXTE 3 : > + LDX #$0002 + LDY #$81F7 + JSR CADTXT9 + RTS + +CADRDOCU HEX B600,1E00,DC00,2D00,0000,0000,0000 ; DOCU CADRE SOMBRE +CADRABOU HEX B000,1E00,E600,2D00,0000,0000,0000 ; ABOUT CADRE SOMBRE + +CADRDO1 HEX 9600,9900,AC00,A700,00CC,C000,0100 ; < +CADRDOC1 HEX 9600,9900,AC00,A700,00CC,C000,0000 +CADRDOF1 HEX 9600,9900,AC00,A700,00FF,F000,0000 + +CADRDO2 HEX B200,9900,E000,A800,00CC,C000,0100 ; OK +CADRDOC2 HEX B200,9900,E000,A800,00CC,C000,0000 +CADRDOF2 HEX B200,9900,E000,A800,00FF,F000,0000 + +CADRDO3 HEX E600,9900,FC00,A700,00CC,C000,0100 ; > +CADRDOC3 HEX E600,9900,FC00,A700,00CC,C000,0000 +CADRDOF3 HEX E600,9900,FC00,A700,00FF,F000,0000 + +************* CREATION DE L'ECRAN QUIT ************* + +CADQUIT LDA #CADRQUIT + JSR CASOMB + LDA #$007C ; QUIT + LDX #$0008 + LDY #$3BEC + JSR CADTXT + LDA #CADRQU2 ; OK + JSR CADRC + JSR CASOMB0 + JSR CADQOKC + LDA #CADRQU1 ; QUIT + JSR CADRC + JSR CASOMB0 + JSR CADQQUC + RTS + +******************* QUIT ******************** + +CADQQUC LDA #CADRQUC1 ; BOUTON 1 C + JSR CADRC ; TEXTE 1 : QUIT + LDA #$5214 ; ADRESSE SPRITE + LDX #$0011 ; LARGEUR + LDY #$58A2 ; ADRESSE ECRAN + JSR CADTXT + RTS +CADQQUF LDA #CADRQUF1 ; BOUTON 1 F + JSR CADRC + LDA #$4594 ; TEXTE 1 : QUIT + LDX #$0011 + LDY #$58A2 + JSR CADTXT + RTS + +CADQOKC LDA #CADRQUC2 ; BOUTON 2 C + JSR CADRC + LDA #$0D0D ; TEXTE 2 : OK + LDX #$0004 + LDY #$710F + JSR CADTXT + RTS +CADQOKF LDA #CADRQUF2 ; BOUTON 2 F + JSR CADRC + LDA #$008D ; TEXTE 2 : OK + LDX #$0004 + LDY #$710F + JSR CADTXT + RTS + +CADRQUIT HEX D200,2800,FC00,3700,0000,0000,0000 ; QUIT CADRE SOMBRE + +CADRQU1 HEX BC00,5600,1001,6500,00CC,C000,0100 ; QUIT +CADRQUC1 HEX BC00,5600,1001,6500,00CC,C000,0000 +CADRQUF1 HEX BC00,5600,1001,6500,00FF,F000,0000 + +CADRQU2 HEX CE00,7D00,FC00,8C00,00CC,C000,0100 ; OK +CADRQUC2 HEX CE00,7D00,FC00,8C00,00CC,C000,0000 +CADRQUF2 HEX CE00,7D00,FC00,8C00,00FF,F000,0000 + +************ GESTION DU NIVEAU EN DECIMAL *********************** + +NUMPLUU LDA NUMUNI ; LEVEL + 1 + CMP #$0009 + BEQ NUMPLUU1 + INC + STA NUMUNI + RTS +NUMPLUU1 LDA NUMDIZ + CMP #$0009 + BEQ NUMPLUU2 + INC + STA NUMDIZ + STZ NUMUNI + RTS +NUMPLUU2 LDA NUMCEN + INC + STA NUMCEN + STZ NUMDIZ + STZ NUMUNI + RTS + +NUMPLUD LDA NUMDIZ ; LEVEL + 10 + CMP #$0009 + BEQ NUMPLUD1 + INC + STA NUMDIZ + RTS +NUMPLUD1 LDA NUMCEN + INC + STA NUMCEN + STZ NUMDIZ + RTS + +NUMMOIU LDA NUMUNI ; LEVEL - 1 + BEQ NUMMOIU1 + DEC + STA NUMUNI + RTS +NUMMOIU1 LDA NUMDIZ + BEQ NUMMOIU2 + DEC + STA NUMDIZ + LDA #$0009 + STA NUMUNI + RTS +NUMMOIU2 LDA NUMCEN + BEQ NUMMOIU3 + DEC + STA NUMCEN + LDA #$0009 + STA NUMDIZ + STA NUMUNI +NUMMOIU3 RTS + +NUMMOID LDA NUMDIZ ; LEVEL - 10 + BEQ NUMMOID1 + DEC + STA NUMDIZ + RTS +NUMMOID1 LDA NUMCEN + BEQ NUMMOID2 + DEC + STA NUMCEN + LDA #$0009 + STA NUMDIZ + RTS +NUMMOID2 STZ NUMUNI + RTS + +NUMVERIF LDA NUMUNI ; VERIFICATION DE LA COHERENCE DU LEVEL + BNE NUMVERI1 + LDA NUMDIZ + BNE NUMVERI1 + LDA NUMCEN + BNE NUMVERI1 + LDA #$0001 + STA NUMUNI ; 000 -> 001 + JSR NUMCONV ; CONVERSION + RTS +NUMVERI1 LDA NUMCEN + BEQ NUMVERI2 + LDA NUMDIZ + CMP #$0002 + BMI NUMVERI2 + LDA #$0002 + STA NUMDIZ + STZ NUMUNI +NUMVERI2 JSR NUMCONV ; CONVERSION + RTS + +NUMCONV LDA NUMCEN ; TRANSFORMATION LEVEL DECIMAL -> LEVEL HEXA + ASL + TAX + LDA NUMTABC,X + CLC + ADC NUMUNI + STA NUMHEX + LDA NUMDIZ + ASL + TAX + LDA NUMTABD,X + CLC + ADC NUMHEX + STA NUMHEX + RTS + +NUMVNOC LDA Niveau ; TRANSFORMATION Niveau (HEXA) -> DECIMAL + STA NUMHEX + CMP #$0064 ; 100 + BPL NUMVNOC1 + STZ NUMCEN ; CENTAINE A ZERO + BRA NUMVNOC2 +NUMVNOC1 LDA #$0001 + STA NUMCEN ; CENTAINE A UN + LDA Niveau + SEC + SBC #$0064 +NUMVNOC2 ASL + TAX + LDA NUMTABV,X ; + AND #$FF00 + XBA + STA NUMDIZ ; DIZAINE + LDA NUMTABV,X + AND #$00FF + STA NUMUNI + RTS + +NUMAFFI LDA #$00D8 ; NETTOYAGE ZONE + STA CADRX0 + LDA #$004F + STA CADRY0 + LDA #$00F6 + STA CADRX1 + LDA #$005C + STA CADRY1 + JSR CARETAB + LDA NUMCEN ; CHIFFRE CENTAINE + ASL + TAX + LDA NUMTAB,X ; *44 + TAY + LDX #$326D + LDA #$394D + STA NUMAF11+1 + JSR NUMAF10 + LDA NUMDIZ ; CHIFFRE DIZAINE + ASL + TAX + LDA NUMTAB,X ; *44 + TAY + LDX #$3272 + LDA #$3952 + STA NUMAF11+1 + JSR NUMAF10 + LDA NUMUNI ; CHIFFRE UNITE + ASL + TAX + LDA NUMTAB,X ; *44 + TAY + LDX #$3277 + LDA #$3957 + STA NUMAF11+1 + JSR NUMAF10 + RTS + +NUMAF10 LDAL $E12000,X + ORA NUMEZE,Y + STAL $E12000,X + INX + INX + INY + INY + LDAL $E12000,X + ORA NUMEZE,Y + STAL $E12000,X + INY + INY + TXA + CLC + ADC #$009E ; LIGNE SUIVANTE + TAX +NUMAF11 CMP #$AAAA + BNE NUMAF10 + RTS + +NUMHEX HEX 0000 ; LEVEL EN HEXA + +NUMCEN HEX 0000 ; LEVEL : 1-120 +NUMDIZ HEX 0000 +NUMUNI HEX 0100 + +NUMTAB HEX 0000,2C00,5800,8400,B000,DC00,0801,3401,6001,8C01 + +NUMTABD HEX 0000,0A00,1400,1E00,2800,3200,3C00,4600,5000,5A00 +NUMTABC HEX 0000,6400,C800,2C01,9001,F401,5802,BC02,2003,8403 + +NUMEZE HEX 0FFFFF00FF000FF0FF000FF0FF000FF0FF000FF0FF000FF0FF000FF0FF000FF0FF000FF0FF000FF00FFFFF00 + HEX 000FF00000FFF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000 + HEX 0FFFFF00F0000FF000000FF000000FF00000FF00000FF00000FF00000FF00000FF000000FF000000FFFFFFF0 + HEX FFFFFFF000000FF00000FF00000FF00000FFFF0000000FF000000FF000000FF000000FF0F0000FF00FFFFF00 + HEX 00000FF00000FFF0000F0FF000F00FF00F000FF0F0000FF0FFFFFFFF00000FF000000FF000000FF000000FF0 + HEX FFFFFFF0FF000000FF000000FF000000FFFFFF0000000FF000000FF000000FF000000FF0F0000FF00FFFFF00 + HEX 000FFF0000F000000F000000FF000000FFFFFF00FF000FF0FF000FF0FF000FF0FF000FF0FF000FF00FFFFF00 + HEX FFFFFFF000000FF000000FF000000FF00000FFF0000FFF00000FF000000FF000000FF000000FF000000FF000 + HEX 0FFFFF00FF000FF0FF000FF0FF000FF0FF000FF00FFFFF00FF000FF0FF000FF0FF000FF0FF000FF00FFFFF00 + HEX 0FFFFF00FF000FF0FF000FF0FF000FF0FF000FF0FF000FF00FFFFFF000000FF00000FF00000FF0000FFF0000 + +NUMTABV HEX 0000,0100,0200,0300,0400,0500,0600,0700,0800,0900 + HEX 0001,0101,0201,0301,0401,0501,0601,0701,0801,0901 + HEX 0002,0102,0202,0302,0402,0502,0602,0702,0802,0902 + HEX 0003,0103,0203,0303,0403,0503,0603,0703,0803,0903 + HEX 0004,0104,0204,0304,0404,0504,0604,0704,0804,0904 + HEX 0005,0105,0205,0305,0405,0505,0605,0705,0805,0905 + HEX 0006,0106,0206,0306,0406,0506,0606,0706,0806,0906 + HEX 0007,0107,0207,0307,0407,0507,0607,0707,0807,0907 + HEX 0008,0108,0208,0308,0408,0508,0608,0708,0808,0908 + HEX 0009,0109,0209,0309,0409,0509,0609,0709,0809,0909 + + asc 'We had a problem with Tinies, we couldn t play after level 87',8d + asc 'Strange, isn t it?',8d + +****************** AFFICHAGE EASTER EGGS ********************** + +EAEGSPR ASL ; ROUTINE AFFICHAGE SPRITE SANS MASQUE + ASL + ASL + TAX + LDA EAEGTAB2,X ; ADRESSE ECRAN + STA EAEGSP2+1 + STA EAEGSP5+1 + STA EAEGSP7+1 + INX + INX + LDA EAEGTAB2,X ; ADRESSE SPRITE + STA EAEGSP1+1 + STA EAEGSP3+1 + STA EAEGSP4+1 + STA EAEGSP6+1 + INX + INX + LDA EAEGTAB2,X ; LONGUEUR + ASL + STA EAEGSP8+1 + INX + INX + LDA EAEGTAB2,X ; HAUTEUR + STA EAEGSP9+1 + + LDY #$0000 +EAEGSP00 PHY + LDX #$0000 +EAEGSP0 PHX +EAEGSP1 LDAL $AAAAAA,X ; 4 POINTS + AND #$00FF + TAY +EAEGSP2 LDAL $E12000,X ; ECRAN + AND EAEGTAB3,Y +EAEGSP3 ORAL $AAAAAA,X ; SPRITE + STA EAEGTAB1 + INX +EAEGSP4 LDAL $AAAAAA,X ; SPRITE + AND #$00FF + TAY +EAEGSP5 LDAL $E12000,X ; ECRAN + AND EAEGTAB3,Y +EAEGSP6 ORAL $AAAAAA,X ; SPRITE + STA EAEGTAB1+1 + DEX + LDA EAEGTAB1 +EAEGSP7 STAL $E12000,X ; ECRAN + PLX + INX + INX +EAEGSP8 CPX #$AAAA + BNE EAEGSP0 + LDA EAEGSP2+1 ; ECRAN LIGNE SUIVANTE + CLC + ADC #$00A0 + STA EAEGSP2+1 + STA EAEGSP5+1 + STA EAEGSP7+1 + LDA EAEGSP1+1 ; SPRITE LIGNE SUIVANTE + CLC + ADC #$00A0 + STA EAEGSP1+1 + STA EAEGSP3+1 + STA EAEGSP4+1 + STA EAEGSP6+1 + PLY + INY +EAEGSP9 CPY #$AAAA + BNE EAEGSP00 + RTS + +EAEGTAB1 HEX 000000 + +EAEGTAB2 HEX BC31,E101,1500,4400 ; WOOD ADR ECRAN,ADR SPRITE,LONG/4,HAUTEUR + HEX 9B65,E562,1600,2300 ; WOOD TEXT + HEX 1A31,6D1A,1600,4E00 ; BRUTAL + HEX 3B6B,E553,1500,1400 ; BRUTAL TEXT + HEX D62F,9B1A,1A00,5600 ; B&W + HEX 4F6E,5369,2100,1900 ; B&W TEXT + HEX BF36,A150,1100,4000 ; FUTUR + HEX AB68,C1E2,2500,1800 ; FUTUR TEXT + HEX 7E44,812F,1300,3000 ; WIN + HEX 5A6E,7358,1600,1700 ; WIN TEXT + +EAEGTAB3 HEX FF,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + HEX 0F,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + +****************************************************************************** +*************** ROUTINES GRAPHIQUE CADRES ETC...***************************** +****************************************************************************** + +************* AFFICHAGE DU TEXT DANS LE CADRE ************** + +CADTXT STY CADTXT3+1 ; ADRESSE ECRAN + STY CADTXT4+1 + LDY ptrSUPERMAN+1 +CADTXT7 STY CADTXT5+2 + STY CADTXT6+2 + STA CADTXT6+1 ; ADRESSE SPRITE + CLC + ADC #$0640 ; 10 LIGNES + STA CADTXT5+1 + TXA ; LARGEUR + DEC + ASL + STA CADTXT1+1 +CADTXT0 LDY #$0007 ; TEXTE = 8 LIGNE +CADTXT1 LDX #$0000 +CADTXT4 LDAL $E12000,X ; FOND +CADTXT5 ANDL $E12000,X ; MASK +CADTXT6 ORAL $E12000,X ; SPRITE +CADTXT3 STAL $E12000,X ; ECRAN + DEX + DEX + BPL CADTXT4 + LDA CADTXT4+1 + CLC + ADC #$00A0 + STA CADTXT4+1 + LDA CADTXT3+1 + CLC + ADC #$00A0 + STA CADTXT3+1 + LDA CADTXT5+1 + CLC + ADC #$00A0 + STA CADTXT5+1 + LDA CADTXT6+1 + CLC + ADC #$00A0 + STA CADTXT6+1 + DEY + BPL CADTXT1 + RTS + +CADTXT9 PHA ; AFFICHAGE SUR 9 LIGNES : >... + LDA #$0008 + STA CADTXT0+1 + PLA + JSR CADTXT + LDA #$0007 + STA CADTXT0+1 + RTS + +CADTXT2 STY CADTXT3+1 ; AFFICHAGE DES SPRITES DE LA 2eme PLANCHE + STY CADTXT4+1 + LDY ptrMESSAGE+1 + JMP CADTXT7 + +************* AFFICHAGE DU SPRITE DANS LE CADRE ************** + +CADSPR STY CADSPR2+1 ; ADRESSE ECRAN + STY CADSPR3+1 + LDY ptrSUPERMAN+1 + STY CADSPR5+2 ; MASK + STY CADSPR6+2 ; SPRITE + STA CADSPR6+1 ; ADRESSE SPRITE + CLC +CADSPR7 ADC #$0000 ; DISTANCE SPRITE/MASK + STA CADSPR5+1 + TXA ; LARGEUR + DEC + ASL + STA CADSPR1+1 +CADSPR4 LDY #$0007 ; SPRITE = x LIGNES +CADSPR1 LDX #$0000 +CADSPR2 LDAL $E12000,X ; FOND +CADSPR5 ANDL $E12000,X ; MASK +CADSPR6 ORAL $E12000,X ; SPRITE +CADSPR3 STAL $E12000,X ; ECRAN + DEX + DEX + BPL CADSPR2 + LDA CADSPR2+1 + CLC + ADC #$00A0 + STA CADSPR2+1 + LDA CADSPR3+1 + CLC + ADC #$00A0 + STA CADSPR3+1 + LDA CADSPR5+1 + CLC + ADC #$00A0 + STA CADSPR5+1 + LDA CADSPR6+1 + CLC + ADC #$00A0 + STA CADSPR6+1 + DEY + BPL CADSPR1 + RTS + +************** CREATION VERT ET CADRE ****************** + +CADRE LDA #$0001 ; ON TRACE LA LIGNE + STA CADRFLAG + LDX #$001E + LDA #$00F0 ; PALETTE 1 GREEN TONE +:2 STAL $E19E20,X + SEC + SBC #$0010 + DEX + DEX + BPL :2 + + LDX #$001E ; PALETTE 2 FULL GREEN + LDA #$00F0 +:3 STAL $E19E40,X + DEX + DEX + BPL :3 + + LDY #$000F ; FADE OUT LIGNE 100 +:4 LDA #$0064 + JSR FADELINE1 + JSR WAIT1 ; WAIT + DEY + BPL :4 + + LDAL $E19D64 ; SBC LIGNE 100 (PALETTE 1) + AND #$FF00 + ORA #$0001 + STAL $E19D64 + + LDX #$000E ; FADE IN POINT VERT + LDA #$0000 +:8 CLC + ADC #$0011 + STAL $E15ED0 + JSR WAIT1 ; WAIT + DEX + BPL :8 + + LDX #$004E ; TRACE HORIZONTAL + LDY #$004E + LDA #$FFFF +:9 STAL $E15E81,X ; <- + PHX + TYX + STAL $E15E82,X ; -> + PLX + JSR WAIT1 ; WAIT + INY + DEX + BPL :9 + STAL $E15E80 + + LDX #$009E +:7 LDAL $015E80,X ; REMET LA LIGNE 100 + STAL $E15E80,X + DEX + DEX + BPL :7 + + LDX #$0063 ; DEPLOIEMENT VERTICAL + LDY #$0064 +:10 LDA #$0102 ; MONTE + STAL $E19D00,X + PHX + TYX + LDA #$0201 ; DESCEND + STAL $E19D00,X + PLX + TXA + INC + JSR FADELINE8 + TYA + CMP #$0064 + BEQ :11 + JSR FADELINE8 +:11 JSR WAIT1 ; WAIT + INY + DEX + BPL :10 + LDA #$0101 + STAL $E19D00 + LDA #$0000 + JSR FADELINE8 + + LDX #$3F6E ; DEUX TRANSVERSALES + LDY #$3F70 +:12 TXA + SEC + SBC #$009E + TAX + LDA #$FFBB ; -> + STAL $E12000,X + PHX + TYA + SEC + SBC #$00A2 + TAY + TYX + LDA #$BBFF ; <- + STAL $E12000,X + PLX + JSR WAIT1 ; WAIT + LDA #$BBBB + STAL $E12000,X + PHX + TYX + STAL $E12000,X + PLX + CPY #$26C2 + BNE :12 + + JSR WAIT2 ; WAIT + + LDX #$3F70 ; NETTOYAGE TRANSVERSALE GAUCHE +:22 TXA + SEC + SBC #$00A2 + TAX + LDAL $012000,X ; <- + AND #$00FF + TAY + LDA TABLE2,Y + AND #$00FF + STA :220+1 + LDAL $E12000,X + AND #$FF00 +:220 ORA #$0000 + STAL $E12000,X + LDAL $012000,X ; <- + AND #$FF00 + XBA + TAY + LDA TABLE2,Y + AND #$00FF + XBA + STA :221+1 + LDAL $E12000,X + AND #$00FF +:221 ORA #$0000 + STAL $E12000,X + CPX #$26C2 + BNE :22 + + LDX #$3F6E ; NETTOYAGE TRANSVERSALE DROITE +:223 TXA + SEC + SBC #$009E + TAX + LDAL $012000,X ; <- + AND #$00FF + TAY + LDA TABLE2,Y + AND #$00FF + STA :224+1 + LDAL $E12000,X + AND #$FF00 +:224 ORA #$0000 + STAL $E12000,X + LDAL $012000,X ; <- + AND #$FF00 + XBA + TAY + LDA TABLE2,Y + AND #$00FF + XBA + STA :225+1 + LDAL $E12000,X + AND #$00FF +:225 ORA #$0000 + STAL $E12000,X + CPX #$275C + BNE :223 + + LDA #$0006 + STA COOR1X + LDA #$0040 + STA COOR1Y + LDA #$0139 + STA COOR2X + LDA #$003D + STA COOR2Y + STZ TRACFLAG + + LDX #$26C2 ; TRACE CADRE 1 + LDY #$275D +:13 LDAL $E12000,X ; MONTE + ORA #$00FF + STAL $E12000,X + TXA + SEC + SBC #$00A0 + TAX + PHX + TYX + LDAL $E12000,X ; DESCEND + ORA #$00FF + STAL $E12000,X + TYA + CLC + ADC #$00A0 + TAY + PLX + JSR TRAC1 + NOP ; WAIT + CPX #$0142 + BNE :13 + + JSR TRACEND + LDA #$0006 + STA COOR1X + LDA #$0005 + STA COOR1Y + STZ TRACFLAG + + LDX #$01E2 ; TRACE CADRE 2 +:14 LDA #$FFFF + STAL $E12000,X + STAL $E120A0,X ; DROITE + INX + PHX + TYX + LDAL $E12000,X ; DESCEND + ORA #$00FF + STAL $E12000,X + TYA + CLC + ADC #$00A0 + TAY + PLX + JSR TRAC2 + NOP ; WAIT + CPY #$7BBD + BNE :14 + + JSR TRACEND + DEC COOR1X + DEC COOR1X + LDA #$0139 + STA COOR2X + LDA #$00C2 + STA COOR2Y + STZ TRACFLAG + + LDY #$7A7C ; TRACE CADRE 3 +:15 LDA #$FFFF + STAL $E12000,X + STAL $E120A0,X ; DROITE + INX + PHX + TYX + LDA #$FFFF + STAL $E12000,X ; GAUCHE + STAL $E120A0,X + DEY + PLX + JSR TRAC3 + NOP ; WAIT + CPX #$027D + BNE :15 + + JSR TRACEND + INC COOR2X + INC COOR2X + LDA #$0139 + STA COOR1X + LDA #$0005 + STA COOR1Y + STZ TRACFLAG + + LDX #$03BD ; TRACE CADRE 4 +:16 LDAL $E12000,X ; DESCEND + ORA #$00FF + STAL $E12000,X + TXA + CLC + ADC #$00A0 + TAX + PHX + TYX + LDA #$FFFF + STAL $E12000,X ; GAUCHE + STAL $E120A0,X + DEY + PLX + JSR TRAC4 + NOP ; WAIT + CPY #$79E1 + BNE :16 + + JSR TRACEND + LDA #$0006 + STA COOR2X + LDA #$00C2 + STA COOR2Y + STZ TRACFLAG + + LDX #$7942 ; TRACE CADRE 5 +:17 LDAL $E12000,X + ORA #$00FF + STAL $E12000,X + TXA + SEC + SBC #$00A0 + TAX + JSR TRAC5 + NOP ; WAIT + CPX #$3202 + BNE :17 + + JSR TRACEND + LDA #$0139 + STA COOR1X + LDA #$00C2 + STA COOR1Y + STZ TRACFLAG + +:18 LDAL $E12000,X ; TRACE CADRE 6 + ORA #$00FF + STAL $E12000,X + TXA + SEC + SBC #$00A0 + TAX + JSR TRAC6 + NOP ; WAIT + CPX #$26C2 + BNE :18 + + JSR TRACEND ; NETTOY LES TRAITS + + RTS + +******************* RETABLI L'IMAGE *********************** + +RESTAUR LDA #$0102 + STAL $E19D00 + LDA #$0201 + STAL $E19DC6 + + LDX #$0000 ; DEPLOIEMENT VERTICAL + LDY #$00C6 +REST0 LDA #$0200 ; DECEND + STAL $E19D00,X + PHX + TYX + LDA #$0002 + STAL $E19D00,X ; MONTE + PLX + PHX + TXA + ASL + TAX + LDA TABLE,X + CLC + ADC #$2000 + STA REST1+1 + STA REST2+1 + LDX #$009E +REST1 LDAL $012000,X ; RECOPIE LA LIGNE +REST2 STAL $012000,X + DEX + DEX + BPL REST1 + TYA + INC + ASL + TAX + LDA TABLE,X + CLC + ADC #$2000 + STA REST3+1 + STA REST4+1 + LDX #$009E +REST3 LDAL $012000,X ; RECOPIE LA LIGNE +REST4 STAL $012000,X + DEX + DEX + BPL REST3 + JSR WAIT3 ; WAIT + PLX + INX + DEY + CPY #$0062 + BNE REST0 + + LDX #$009E + LDA #$FFFF +REST6 STAL $E15DE0,X ; LIGNE BLANCHE + DEX + DEX + BPL REST6 + + LDA #$0001 ; SCB A 1 + STAL $E19D63 + + LDX #$0000 ; TRACE HORIZONTAL + LDY #$009E + LDA #$0000 +REST5 STAL $E15DE0,X ; -> + PHX + TYX + STAL $E15DE0,X ; <- + JSR WAIT3 ; WAIT + PLX + DEY + INX + CPX #$0050 + BNE REST5 + + LDA #$0000 + STAL $E19D63 + + LDX #$009E +REST7 LDAL $015DE0,X + STAL $E15DE0,X ; LIGNE BLANCHE + DEX + DEX + BPL REST7 + + RTS + +****************** ASSOMBRIR UN CADRE ******************* + +CASOMB STA CASOMB2+1 + LDX #$000C +CASOMB2 LDA $AAAA,X + STA CADRX0,X + DEX + DEX + BPL CASOMB2 + +CASOMB0 LDX #$0001 +CASOMB1 JSR CAFAD ; FADE DE DEGRE 3 + DEX + BPL CASOMB1 + RTS + +CAFAD PHX ; FADE OUT DU CADRE (CADRX0,CADRY0...) + PHY + LDA CADRX1 ; LARGEUR + SEC + SBC CADRX0 + LSR + DEC + DEC + STA CAFAD10+1 + LDA CADRY1 + SEC + SBC CADRY0 + DEC + DEC + STA CAFAD11+1 + LDA CADRY0 ; ADRESSE EN HAUT A GAUCHE + INC + ASL + TAX + LDA CADRX0 + LSR + INC + CLC + ADC TABLE,X + CLC + ADC #$2000 + STA CAFAD5+1 + STA CAFAD8+1 + STA CAFAD6+1 + STA CAFAD9+1 +CAFAD11 LDY #$0000 +CAFAD10 LDX #$0000 ; 1 LIGNE +CAFAD5 LDAL $E15E80,X ; FADE 1 POINT + BIT #$00F0 + BEQ CAFAD6 + SEC + SBC #$0010 +CAFAD8 STAL $E15E80,X +CAFAD6 LDAL $E15E80,X + BIT #$000F + BEQ CAFAD7 + SEC + SBC #$0001 +CAFAD9 STAL $E15E80,X +CAFAD7 DEX + BPL CAFAD5 + LDA CAFAD5+1 + CLC + ADC #$00A0 + STA CAFAD5+1 + STA CAFAD8+1 + STA CAFAD6+1 + STA CAFAD9+1 + DEY + BPL CAFAD10 + PLY + PLX + RTS + + asc 'Hi! Olivier is speaking: I have forgotten the following book',8d + asc 'in SF: Le IIgs epluche. You can keep it, Joe...',8d + +******************** RETABLIR UN CADRE ******************** + +CARETAB PHX ; RETABLI LE CADRE (CADRX0,CADRY0...) + PHY + LDA CADRX1 ; LARGEUR + SEC + SBC CADRX0 + LSR + DEC + DEC + STA CARET10+1 + LDA CADRY1 + SEC + SBC CADRY0 + DEC + DEC + STA CARET11+1 + LDA CADRY0 ; ADRESSE EN HAUT A GAUCHE + INC + ASL + TAX + LDA CADRX0 + LSR + INC + CLC + ADC TABLE,X + CLC + ADC #$2000 + STA CARET5+1 + STA CARET8+1 + STA CARET9+1 +CARET11 LDY #$0000 +CARET10 LDX #$0000 ; 1 LIGNE + PHY +CARET5 LDAL $012000,X ; 1 POINT + AND #$00FF + TAY + LDA TABLE2,Y + AND #$00FF + STA CARET6+1 +CARET8 LDAL $E12000,X + AND #$FF00 +CARET6 ORA #$0000 +CARET9 STAL $E12000,X +CARET7 DEX + BPL CARET5 + PLY + LDA CARET5+1 + CLC + ADC #$00A0 + STA CARET5+1 + STA CARET8+1 + STA CARET9+1 + DEY + BPL CARET10 + PLY + PLX + RTS + +CTPNCLNZ LDA #$0058 ; NETTOYAGE CONTROL PANEL + STA CADRX0 + LDA #$0020 + STA CADRY0 + LDA #$0136 + STA CADRX1 + LDA #$00AC + STA CADRY1 + JSR CARETAB + RTS + +CTPNCLNT LDA #$0066 ; NETTOYAGE ZONE TEXTE + STA CADRX0 + LDA #$0031 + STA CADRY0 + LDA #$012C + STA CADRX1 + LDA #$0091 + STA CADRY1 + JSR CARETAB + RTS + +****************** CREATION D'UN CADRE BOUTON ****************** + +CADRC STA FULL1+1 + LDX #$000C +FULL1 LDA $AAAA,X + STA CADRX0,X + DEX + DEX + BPL FULL1 + LDA CADRX0 ; ON DETERMINE LE TYPE DE CADRE A UTILISER + CMP #$00A0 + BMI CADRC1 + LDA CADRY0 + CMP #$0064 + BMI CADRC5 + JMP CACAS9 ; CAS 9 +CADRC5 LDA CADRY1 + CMP #$0064 + BMI CADRC6 + JMP CACAS6 ; CAS 6 +CADRC6 JMP CACAS3 ; CAS 3 +CADRC1 LDA CADRX1 + CMP #$00A0 + BMI CADRC2 + LDA CADRY0 + CMP #$0064 + BMI CADRC7 + JMP CACAS8 ; CAS 8 +CADRC7 LDA CADRY1 + CMP #$0064 + BMI CADRC8 + JMP CACAS5 ; CAS 5 +CADRC8 JMP CACAS2 ; CAS 2 +CADRC2 LDA CADRY0 + CMP #$0064 + BMI CADRC3 + JMP CACAS7 ; CAS 7 +CADRC3 LDA CADRY1 + CMP #$0064 + BMI CADRC4 + JMP CACAS4 ; CAS 4 +CADRC4 JMP CACAS1 ; CAS 1 + +CACAS1 LDA CADRX0 + STA CADRCO3 + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + JSR CALIVBH ; VERT BH + LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY0 + STA CADRCO3 + JSR CALIHGD ; HORI GD + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + LDA CADRX1 + STA CADRCO3 + JSR CALIVHB ; VERT HB + LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY1 + STA CADRCO3 + JSR CALIHDG ; HORI DG + RTS +CACAS2 JMP CACAS1 +CACAS3 LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY0 + STA CADRCO3 + JSR CALIHGD ; HORI GD + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + LDA CADRX1 + STA CADRCO3 + JSR CALIVHB ; VERT HB + LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY1 + STA CADRCO3 + JSR CALIHDG ; HORI DG + LDA CADRX0 + STA CADRCO3 + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + JSR CALIVBH ; VERT BH + RTS +CACAS4 JMP CACAS7 +CACAS5 JMP CACAS1 +CACAS6 JMP CACAS3 +CACAS7 LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY1 + STA CADRCO3 + JSR CALIHDG ; HORI DG + LDA CADRX0 + STA CADRCO3 + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + JSR CALIVBH ; VERT BH + LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY0 + STA CADRCO3 + JSR CALIHGD ; HORI GD + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + LDA CADRX1 + STA CADRCO3 + JSR CALIVHB ; VERT HB + RTS + +CACAS8 LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + LDA CADRX1 + STA CADRCO3 + JSR CALIVHB ; VERT HB + LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY1 + STA CADRCO3 + JSR CALIHDG ; HORI DG + LDA CADRX0 + STA CADRCO3 + LDA CADRY0 + STA CADRCO1 + LDA CADRY1 + STA CADRCO2 + JSR CALIVBH ; VERT BH + LDA CADRX0 + STA CADRCO1 + LDA CADRX1 + STA CADRCO2 + LDA CADRY0 + STA CADRCO3 + JSR CALIHGD ; HORI GD + RTS +CACAS9 JMP CACAS8 + +CALIHGD LDA CADRCO3 ; LIGNE GAUCHE-DROITE + ASL + TAY + LDA TABLE,Y + CLC + ADC #$2000 + STA CALIHG1+1 + STA CALIHG2+1 + LDA CADRCO2 + SEC + SBC CADRCO1 + LSR + DEC + TAY + LDA CADRCO1 + DEC + LSR + TAX +CALIHG1 LDAL $E12000,X + AND #$00FF + ORA CADRCOL1 +CALIHG2 STAL $E12000,X + TXA + INC + ASL + INC + STA CADRLIX + LDA CADRCO3 + INC + CMP #$0065 + BMI CALIHG3 + DEC + DEC +CALIHG3 STA CADRLIY + JSR CADRLINE ; WAIT & LIGNE + INX + DEY + BPL CALIHG1 + JSR CADRCLE + RTS + +CALIHDG LDA CADRCO3 ; LIGNE DROITE-GAUCHE + ASL + TAY + LDA TABLE,Y + CLC + ADC #$2000 + STA CALIHD1+1 + STA CALIHD2+1 + LDA CADRCO2 + SEC + SBC CADRCO1 + LSR + DEC + TAY + LDA CADRCO2 + DEC + LSR + DEC + TAX +CALIHD1 LDAL $E12000,X + AND #$00FF + ORA CADRCOL1 +CALIHD2 STAL $E12000,X + TXA + INC + ASL + STA CADRLIX + LDA CADRCO3 + INC + CMP #$0065 + BMI CALIHD3 + DEC + DEC +CALIHD3 STA CADRLIY + JSR CADRLINE ; WAIT & LIGNE + DEX + DEY + BPL CALIHD1 + JSR CADRCLE + RTS + +CALIVHB LDA CADRCO2 ; LIGNE HAUT-BAS + SEC + SBC CADRCO1 + TAX + LSR CADRCO3 + LDA CADRCO1 + ASL + TAY + LDA TABLE,Y + CLC + ADC #$2000 + CLC + LDY CADRCO1 + INY + ADC CADRCO3 + STA CALIVH1+1 + STA CALIVH2+1 +CALIVH1 LDAL $E12000 + AND #$FF0F + ORA CADRCOL2 +CALIVH2 STAL $E12000 + LDA CALIVH1+1 + CLC + ADC #$00A0 ; LIGNE SUIVANTE + STA CALIVH1+1 + STA CALIVH2+1 + LDA CADRCO3 + ASL + INC + CMP #$00A1 + BMI CALIVH4 + DEC + DEC +CALIVH4 STA CADRLIX + STY CADRLIY + JSR CADRLINE ; WAIT & LIGNE + INY + DEX + BPL CALIVH1 + JSR CADRCLE + RTS + +CALIVBH LDA CADRCO2 ; LIGNE BAS-HAUT + SEC + SBC CADRCO1 + TAX + LSR CADRCO3 + LDA CADRCO2 + ASL + TAY + LDA TABLE,Y + CLC + ADC #$2000 + CLC + ADC CADRCO3 + STA CALIVB1+1 + STA CALIVB2+1 + LDY CADRCO2 + DEY +CALIVB1 LDAL $E12000 + AND #$FF0F + ORA CADRCOL2 +CALIVB2 STAL $E12000 + LDA CALIVB1+1 + SEC + SBC #$00A0 ; LIGNE SUIVANTE + STA CALIVB1+1 + STA CALIVB2+1 + LDA CADRCO3 + ASL + INC + CMP #$00A1 + BMI CALIVB4 + DEC + DEC +CALIVB4 STA CADRLIX + STY CADRLIY + JSR CADRLINE ; WAIT & LIGNE + DEY + DEX + BPL CALIVB1 + JSR CADRCLE + RTS + +CADRLINE PHX + PHY + NOP + LDA CADRFLAG ; DESSINE LA LIGNE DU CENTRE + BEQ CADRLIN2 + JSR CADRCLE ; NETTOYAGE + LDA #$00A0 + STA LIX1 + LDA #$0064 + STA LIY1 + LDA CADRLIX + STA LIX0 + LDA CADRLIY + STA LIY0 + INC LIFLAG + JSR LIGNE ; TRACE + +CADRLIN2 PLY + PLX + RTS + +CADRLIX HEX 0000 ; COORDONNEES +CADRLIY HEX 0000 + +CADRCLE PHX + PHY + STZ LIFLAG + JSR LIGNE ; NETTOYAGE + INC LIFLAG + PLY + PLX + RTS + +CADRCO1 HEX 0000 +CADRCO2 HEX 0000 +CADRCO3 HEX 0000 ; DONNEE COMPL + +CADRX0 HEX 0000 +CADRY0 HEX 0000 +CADRX1 HEX 0000 +CADRY1 HEX 0000 + +CADRCOL1 HEX 00CC ; COULEUR DU TRAIT +CADRCOL2 HEX C000 + +CADRFLAG HEX 0100 ; SERT A SAVOIR SI ON DOIT DESSINER LA LIGNE + + asc 'Here am I again, I have forgotten my french/english dictionary',8d + asc 'at Joe s friends house... The daughter can keep it...',8d + +***************** ROUTINES ****************** + +WAIT1 PHX + PHY + LDY #$0001 +WAI10 LDX #$1000 +WAI11 DEX + BNE WAI11 + DEY + BNE WAI10 + PLY + PLX + RTS + +WAIT2 PHX + PHY + LDY #$0010 + BRA WAI10 + +WAIT3 PHX + PHY + LDY #$0003 + BRA WAI10 + +************************************ LIGNE ************************************* + +LIGNE LDA CADRFLAG + BNE LI6 + RTS +LI6 STZ LIOF + LDA LIX0 + CMP LIX1 + BMI LI2 ; X0 0 + SEC + SBC LIX0 + STA LIDX + +LI3 LDA LIY0 + CMP LIY1 + BMI LI4 ; Y0 0 + SEC + SBC LIY0 + STA LIDY + +LI5 LDA LIDX + CMP LIDY + BPL LIDX0 ; DX>DY + JMP LIDY0 ; DX DY *********** + +LIDX0 LDA LIDY + STA LIPL42+1 + STA LIPL52+1 + STA LIPL45+1 + STA LIPL55+1 + STA LIPL62+1 + STA LIPL72+1 + STA LIPL75+1 + STA LIPL65+1 + + LDA LIDX + SEC + SBC LIDY + STA LIPL43+1 ; DX-DY + STA LIPL53+1 + STA LIPL63+1 + STA LIPL73+1 + +*** SWAP *** + + LDA LIY0 + CMP LIY1 + BPL LIDX1 ; Y0 > Y1 + + LDX LIX0 + LDA LIX1 ; X1 = X0 + STA LIX0 ; X0 = X1 + STX LIX1 + + LDX LIY0 + LDA LIY1 ; Y1 = Y0 + STA LIY0 ; Y0 = Y1 + STX LIY1 + +************ + +LIDX1 LDA LIX0 + LSR + STA LIDX2+1 ; CALCUL DE A0 + LDA LIY0 + ASL + TAX + LDA TABLE,X + CLC +LIDX2 ADC #$0000 + STA LIA0 + + LDA LIX1 + LSR + STA LIDX3+1 ; CALCUL DE A1 + LDA LIY1 + ASL + TAX + LDA TABLE,X + CLC +LIDX3 ADC #$0000 + STA LIA1 + + LDY #$0000 + LDA LIX0 + LSR + BCC LIDX4 + INY + +LIDX4 LDA LIX1 ; X0 PAIR + CMP LIX0 + BMI LIDX5 ; DX<0 + JMP LIDX9 + +LIDX5 TYA + BEQ LIDX6 ; X0 PAIR + JMP LIPL46 +LIDX6 JMP LIPL57 + +***** + +LIDX7 LDA LIX1 + LSR + BCC LIDX77 + LDX LIA1 + JSR LIIMPA + RTS +LIDX77 LDX LIA1 + JSR LIPAIR + RTS + +LIPL41 LDA LIA0 + CMP LIA1 + BEQ LIDX7 ; FIN + + DEC LIA0 + INY + LDA LIOF ; OF +LIPL42 CMP #$0000 ; DY + BPL LIPL44 + + CLC +LIPL43 ADC #$0000 ; DX-DY + STA LIOF + LDA LIA0 + SEC + SBC #$00A0 + STA LIA0 + TYA + LSR + BCC LIPL47 ; PAIR + BRA LIPL46 + +LIPL44 SEC +LIPL45 SBC #$0000 ; DY + STA LIOF + TYA + LSR + BCC LIPL47 + +LIPL46 LDX LIA0 ; IMPAIR + JSR LIIMPA + BRA LIPL51 + +LIPL47 LDX LIA0 ; PAIR + JSR LIPAIR + BRA LIPL41 ; ** + +LIDX8 LDA LIX1 + LSR + BCC LIDX88 + LDX LIA1 + JSR LIIMPA + RTS +LIDX88 LDX LIA1 + JSR LIPAIR + RTS + +LIPL51 TXA ; A0 + CMP LIA1 + BEQ LIDX8 ; FIN + + INY + LDA LIOF ; OF +LIPL52 CMP #$0000 ; DY + BPL LIPL54 + + CLC +LIPL53 ADC #$0000 ; DX-DY + STA LIOF + LDA LIA0 + SEC + SBC #$00A0 + STA LIA0 + TYA + LSR + BCC LIPL57 ; PAIR + BRA LIPL56 + +LIPL54 SEC +LIPL55 SBC #$0000 ; DY + STA LIOF + TYA + LSR + BCC LIPL57 + +LIPL56 LDX LIA0 ; IMPAIR + JSR LIIMPA + JMP LIPL51 + +LIPL57 LDX LIA0 ; PAIR + JSR LIPAIR + JMP LIPL41 ; + +****** + +LIDX9 TYA + BEQ LIDX10 ; X0 PAIR + JMP LIPL66 +LIDX10 JMP LIPL77 + +LIDX11 LDA LIX1 + LSR + BCC LIDX111 + LDX LIA1 + JSR LIIMPA + RTS +LIDX111 LDX LIA1 + JSR LIPAIR + RTS + +LIPL61 LDA LIA0 + CMP LIA1 + BEQ LIDX11 ; FIN + + INC LIA0 + INY + LDA LIOF ; OF +LIPL62 CMP #$0000 ; DY + BPL LIPL64 + + CLC +LIPL63 ADC #$0000 ; DX-DY + STA LIOF + LDA LIA0 + SEC + SBC #$00A0 + STA LIA0 + TYA + LSR + BCC LIPL67 ; PAIR + BRA LIPL66 + +LIPL64 SEC +LIPL65 SBC #$0000 ; DY + STA LIOF + TYA + LSR + BCC LIPL67 + +LIPL66 LDX LIA0 ; IMPAIR + JSR LIIMPA + BRA LIPL61 + +LIPL67 LDX LIA0 ; PAIR + JSR LIPAIR + BRA LIPL71 ; ** + +LIDX12 LDA LIX1 + LSR + BCC LIDX121 + LDX LIA1 + JSR LIIMPA + RTS +LIDX121 LDX LIA1 + JSR LIPAIR + RTS + +LIPL71 TXA ; A0 + CMP LIA1 + BEQ LIDX12 ; FIN + + INY + LDA LIOF ; OF +LIPL72 CMP #$0000 ; DY + BPL LIPL74 + + CLC +LIPL73 ADC #$0000 ; DX-DY + STA LIOF + LDA LIA0 + SEC + SBC #$00A0 + STA LIA0 + TYA + LSR + BCC LIPL77 ; PAIR + BRA LIPL76 + +LIPL74 SEC +LIPL75 SBC #$0000 ; DY + STA LIOF + TYA + LSR + BCC LIPL77 ; PAIR + +LIPL76 LDX LIA0 ; IMPAIR + JSR LIIMPA + JMP LIPL61 ; + +LIPL77 LDX LIA0 ; PAIR + JSR LIPAIR + JMP LIPL71 + +***** DX < DY ********* + +LIDY0 LDA LIDX + STA LIPL2+1 + STA LIPL12+1 + STA LIPL5+1 + STA LIPL15+1 + STA LIPL22+1 + STA LIPL32+1 + STA LIPL25+1 + STA LIPL35+1 + + LDA LIDY + SEC + SBC LIDX + STA LIPL3+1 ; DY-DX + STA LIPL13+1 + STA LIPL23+1 + STA LIPL33+1 + +*** SWAP *** + + LDA LIY1 + CMP LIY0 + BPL LIDY1 ; Y1 > Y0 + + LDX LIX0 + LDA LIX1 ; X1 = X0 + STA LIX0 ; X0 = X1 + STX LIX1 + + LDX LIY0 + LDA LIY1 ; Y1 = Y0 + STA LIY0 ; Y0 = Y1 + STX LIY1 + +************ + +LIDY1 LDA LIX0 + LSR + STA LIDY2+1 ; CALCUL DE A0 + LDA LIY0 + ASL + TAX + LDA TABLE,X + CLC +LIDY2 ADC #$0000 + STA LIA0 + + LDA LIX1 + LSR + STA LIDY3+1 ; CALCUL DE A1 + LDA LIY1 + ASL + TAX + LDA TABLE,X + CLC +LIDY3 ADC #$0000 + STA LIA1 + + LDY #$0000 + LDA LIX0 + LSR + BCC LIDY4 + INY + +LIDY4 LDA LIX1 ; X0 PAIR + CMP LIX0 + BMI LIDY5 ; DX<0 + JMP LIDY9 + +LIDY5 TYA + BEQ LIDY6 ; X0 PAIR + JMP LIPL6 +LIDY6 JMP LIPL17 + +***** + +LIDY7 RTS + +LIPL1 LDA LIA0 + CMP LIA1 + BEQ LIDY7 ; FIN + + CLC + ADC #$00A0 + STA LIA0 + LDA LIOF ; OF +LIPL2 CMP #$0000 ; DX + BPL LIPL4 + + CLC +LIPL3 ADC #$0000 ; DY-DX + STA LIOF + INY ; ON INVERSE + DEC LIA0 + TYA + LSR + BCC LIPL7 ; PAIR + BRA LIPL6 + +LIPL4 SEC +LIPL5 SBC #$0000 ; DX + STA LIOF + TYA + LSR + BCC LIPL7 + +LIPL6 LDX LIA0 ; IMPAIR + JSR LIIMPA + BRA LIPL11 + +LIPL7 LDX LIA0 ; PAIR + JSR LIPAIR + BRA LIPL1 + +LIDY8 RTS + +LIPL11 TXA ; A0 + CMP LIA1 + BEQ LIDY8 ; FIN + + CLC + ADC #$00A0 + STA LIA0 + LDA LIOF ; OF +LIPL12 CMP #$0000 ; DX + BPL LIPL14 + + CLC +LIPL13 ADC #$0000 ; DY-DX + STA LIOF + INY ; ON INVERSE + TYA + LSR + BCC LIPL17 ; PAIR + BRA LIPL16 + +LIPL14 SEC +LIPL15 SBC #$0000 ; DX + STA LIOF + TYA + LSR + BCC LIPL17 + +LIPL16 LDX LIA0 ; IMPAIR + JSR LIIMPA + JMP LIPL11 + +LIPL17 LDX LIA0 ; PAIR + JSR LIPAIR + JMP LIPL1 + +****** + +LIDY9 TYA + BEQ LIDY10 ; X0 PAIR + JMP LIPL26 +LIDY10 JMP LIPL37 + +LIDY11 RTS + +LIPL21 LDA LIA0 + CMP LIA1 + BEQ LIDY11 ; FIN + + CLC + ADC #$00A0 + STA LIA0 + LDA LIOF ; OF +LIPL22 CMP #$0000 ; DX + BPL LIPL24 + + CLC +LIPL23 ADC #$0000 ; DY-DX + STA LIOF + INY ; ON INVERSE + INC LIA0 + TYA + LSR + BCC LIPL27 ; PAIR + BRA LIPL26 + +LIPL24 SEC +LIPL25 SBC #$0000 ; DX + STA LIOF + TYA + LSR + BCC LIPL27 + +LIPL26 LDX LIA0 ; IMPAIR + JSR LIIMPA + BRA LIPL21 + +LIPL27 LDX LIA0 ; PAIR + JSR LIPAIR + BRA LIPL31 + +LIDY12 RTS + +LIPL31 TXA ; A0 + CMP LIA1 + BEQ LIDY12 ; FIN + + CLC + ADC #$00A0 + STA LIA0 + LDA LIOF +LIPL32 CMP #$0000 ; DX + BPL LIPL34 + + CLC +LIPL33 ADC #$0000 ; DY-DX + STA LIOF + INY ; ON INVERSE + TYA + LSR + BCC LIPL37 ; PAIR + BRA LIPL36 + +LIPL34 SEC +LIPL35 SBC #$0000 ; DX + STA LIOF + TYA + LSR + BCC LIPL37 + +LIPL36 LDX LIA0 ; IMPAIR + JSR LIIMPA + JMP LIPL21 + +LIPL37 LDX LIA0 ; PAIR + JSR LIPAIR + JMP LIPL31 + +******* TRACE + +LIPAIR LDA LIFLAG + BEQ LIPAIR1 + LDAL $E12000,X ; TRACE PAIR + AND #$FF0F + ORA LICOULP + STAL $E12000,X + RTS + +LIPAIR1 PHY + LDAL $012000,X ; NETTOYAGE PAIR + AND #$00FF + TAY + LDA TABLE2,Y + AND #$00F0 + STA LIPAIR2+1 + LDAL $E12000,X + AND #$FF0F +LIPAIR2 ORA #$0000 + STAL $E12000,X + PLY + RTS + +LIIMPA LDA LIFLAG + BEQ LIIPAI1 + LDAL $E12000,X + AND #$FFF0 + ORA LICOULI + STAL $E12000,X + RTS + +LIIPAI1 PHY + LDAL $012000,X ; NETTOYAGE IMPAIR + AND #$00FF + TAY + LDA TABLE2,Y + AND #$000F + STA LIIPAI2+1 + LDAL $E12000,X + AND #$FFF0 +LIIPAI2 ORA #$0000 + STAL $E12000,X + PLY + RTS + +**************** VARIABLES ********************* + +LIFLAG HEX 0100 + +LIX0 HEX 0000 +LIY0 HEX 0000 +LIX1 HEX 0000 +LIY1 HEX 0000 +LIDX HEX 0000 ; ABS DX +LIDY HEX 0000 ; ABS DY +LIOF HEX 0000 ; VARIABLE +LIA1 HEX 0000 +LIA0 HEX 0000 + +LICOULP HEX C000 ; COULEUR PAIRE +LICOULI HEX 0C00 ; COULEUR IMPAIRE + +TABLE HEX 0000A0004001E00180022003C00360040005A0054006E00680072008C0086009000AA00A400BE00B + HEX 800C200DC00D600E000FA00F4010E01080112012C01260130014A0144015E01580162017C0176018 + HEX 0019A019401AE01A801B201CC01C601D001EA01E401FE01F80202021C02160220023A0234024E024 + HEX 80252026C02660270028A0284029E029802A202BC02B602C002DA02D402EE02E802F2030C0306031 + HEX 0032A0324033E03380342035C03560360037A0374038E0388039203AC03A603B003CA03C403DE03D + HEX 803E203FC03F60400041A0414042E04280432044C04460450046A0464047E04780482049C049604A + HEX 004BA04B404CE04C804D204EC04E604F0050A0504051E05180522053C05360540055A0554056E056 + HEX 80572058C0586059005AA05A405BE05B805C205DC05D605E005FA05F4060E06080612062C0626063 + HEX 0064A0644065E06580662067C06760680069A069406AE06A806B206CC06C606D006EA06E406FE06F + HEX 80702071C07160720073A0734074E07480752076C07660770078A0784079E079807A207BC07B607C + +TABLE2 HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 00,00,00,00,00,00,00,00,00,01,02,03,04,05,06,07 + HEX 10,10,10,10,10,10,10,10,10,11,12,13,14,15,16,17 + HEX 20,20,20,20,20,20,20,20,20,21,22,23,24,25,26,27 + HEX 30,30,30,30,30,30,30,30,30,31,32,33,34,35,36,37 + HEX 40,40,40,40,40,40,40,40,40,41,42,43,44,45,46,47 + HEX 50,50,50,50,50,50,50,50,50,51,52,53,54,55,56,57 + HEX 60,60,60,60,60,60,60,60,60,61,62,63,64,65,66,67 + HEX 70,70,70,70,70,70,70,70,70,71,72,73,74,75,76,77 + +*************************************************************** diff --git a/cogito/Cogito.Main.s b/cogito/Cogito.Main.s new file mode 100644 index 0000000..63ef782 --- /dev/null +++ b/cogito/Cogito.Main.s @@ -0,0 +1,2581 @@ +* +* Start Olivier +* + +INITMOUS LDA #$0000 + STA POSX + STA POSY + STA A1 ; INIT SOURIS + STA AP + JSR SAUV ; SAUVEGARDE DECOR + JSR DESS + + LDY ptrMESSAGE+1 ; INIT ADRESSE EASTER EGGS + STY EAEGSP1+2 + STY EAEGSP3+2 + STY EAEGSP4+2 + STY EAEGSP6+2 + + LDA fgDOC ; INIT LANGUE + BEQ INITMOU1 + LDA #TEXTEUSD ; ANGLAIS + STA DOCADR + LDA #TEXTEUSA + STA ABOUADR + LDA #$0008 ; 9 PAGES DE DOC + STA ECR1012+1 + LDA #$0008 ; 9 PAGES DE ABOUT + STA ECR1112+1 + BRA INITMOU2 +INITMOU1 LDA #TEXTEFRD ; FRANCAIS + STA DOCADR + LDA #TEXTEFRA + STA ABOUADR + LDA #$0007 ; 8 PAGES DE DOC + STA ECR1012+1 + LDA #$0007 ; 8 PAGES DE ABOUT + STA ECR1112+1 + +INITMOU2 LDA #CADMMUF ; INIT MUSIC PATCH BUMPER : MUSIC + STA ECR07DAT + LDA #CADMSNC + STA ECR07DAT+8 + + JSR ECR08PATCH ; INIT GROUND PATCH BUMPER : RANDOM + LDA #CADGRRAF + STA ECR08DAT+32 + + LDA #$0002 + JMP PICT ; IMAGE LUDY + + asc 'Tinies & Cogito, copyright CACAlisto',8d + asc 'Atreid, Kalisto, Muad Dib... copyright Frank Herbert',8D + asc 'Taken from the book Dune...',8d + +***************************************************************************** +**************************** MOUSE MANAGER ******************************** +***************************************************************************** + +SOURIS LDA BOUT ; ANCIEN BOUT=NOUVEAU BOUT + STA BOUT1 + +SOURIS0 JSR SLECT ; LECTURE SOURIS + CPY #$FFFF + BEQ SECR ; DONNEES NON DISPONIBLES + +SOURIS1 LDA A1 ; A1 POSITION ACTUELLE + STA AP ; AP ANCIENNE POSITION + LDA POSX + LSR + STA SOURIS2+1 + LDA POSY + ASL + TAX + LDA TABLE,X + CLC +SOURIS2 ADC #$0000 ; CALCUL DE A1 (160*POSY+POSX) + STA A1 + JSR TRACE ; ON DESSINE LE POINTEUR + + lda BON + inc + sta BON + cmp #1000 + bne SECR + stz BON + + LDA fgWHICH + BNE SECR + PHA + _NTUpdateSound ; SOUNDTRACK + PLA + +***** + +SECR JSR KEYBOARD ; TOUCHE ? + LDA ECRAN + DEC + ASL + TAX + LDA ECRTAB,X + TAY ; ADRESSE TABLEAU DES BOUTONS + DEC + DEC + TAX +SECR0 LDA\ $0000,X ; NB DE BUMPER DANS ECRAN + ASL + STA SECR8+1 + + LDX #$0000 + LDA POSX +SECR1 CMP\ $0000,Y ; X0 ECR1, ECR2, ECR3 ... + BMI SECR4 + INY + INY +SECR11 CMP\ $0000,Y ; X1 + BPL SECR5 + INY + INY + LDA POSY +SECR12 CMP\ $0000,Y ; Y0 + BMI SECR6 + INY + INY +SECR13 CMP\ $0000,Y ; Y1 + BPL SECR7 + STX SECR2+1 ; ON EST SUR UN BUMPER + LDA ECRAN + DEC + ASL + TAX + LDA ECRDESA,X + STA SECR20+1 ; ADRESSE DE L'ADRESSE EXECUTION +SECR2 LDX #$0000 ; NUMERO DU BUMPER TRAVERSE (*2) +SECR20 LDA $FFFF,X + STA SECR3+1 +SECR3 JMP $A0A0 ; + +SECR4 INY + INY +SECR5 INY + INY +SECR6 INY + INY ; BOUTON SUIVANT +SECR7 INY + INY + LDA POSX + INX + INX +SECR8 CPX #$0000 ; NB DE BOUTON + BMI SECR1 + JSR BORD5 ; FORCE LA BORDURE NOIRE + JMP BUMPDEF ; AUCUN BOUTON DETECTE : TRAITEMENT PAR DEFAUT + +BON ds 2 + + asc 'Steve Sebban: don t you need a french dictionary? :-)',8d + +******************************************************************************* +*********************** TRAITEMENT DES BOUTONS ****************************** +******************************************************************************* + +KEYBOARD LDAL $00BFFF + BPL KEYBOAR1 + STAL $00C010 ; BIT $C010 + LDA ECRAN + CMP #$0005 + BPL KEYBOAR1 + PLA ; RECUPERE L'ADRESSE DE RETOUR DU JSR + LDA #$0005 ; SAUT AU CONTROL PANEL + JMP PICT +KEYBOAR1 RTS + +BORD5 LDAL $00C034 ; ICI TRAITEMENT PAR DEFAUT + AND #$FFF0 ; BORDURE NOIRE + STAL $00C034 +BORD55 RTS + +BORD6 LDAL $00C034 + AND #$FFF0 + ORA #$0001 ; ROUGE + STAL $00C034 + RTS + +**************** COGITO JEU + +ECRJEH1 LDX SECR2+1 ; FLECHES HAUT + LDA #ECRJEH10 + STA BUMPER5+1 + JMP BUMPER +ECRJEH10 LDA POSX + SEC + SBC #$0016 ; 22 + TAX + LDA ECR01TA1,X + AND #$00FF + BEQ ECRJEH11 ; RIEN + DEC + PHA + JSR DESS1 + PLA + JMP THIRD +ECRJEH11 JMP SOURIS + +ECRJEB1 LDX SECR2+1 ; FLECHES BAS + LDA #ECRJEB10 + STA BUMPER5+1 + JMP BUMPER +ECRJEB10 LDA POSX + SEC + SBC #$0016 ; 22 + TAX + LDA ECR01TA2,X + AND #$00FF + BEQ ECRJEB11 ; RIEN + PHA + JSR DESS1 + PLA + JMP THIRD +ECRJEB11 JMP SOURIS + +ECRJEG1 LDX SECR2+1 ; FLECHES GAUCHE + LDA #ECRJEG10 + STA BUMPER5+1 + JMP BUMPER +ECRJEG10 LDA POSY + SEC + SBC #$0026 ; 38 + TAX + LDA ECR01TA3,X + AND #$00FF + BEQ ECRJEG11 ; RIEN + PHA + JSR DESS1 + PLA + JMP THIRD +ECRJEG11 JMP SOURIS + +ECRJED1 LDX SECR2+1 ; FLECHE DROITE 1 + LDA #ECRJED10 + STA BUMPER5+1 + JMP BUMPER +ECRJED10 LDA POSY + SEC + SBC #$0026 ; 38 + TAX + LDA ECR01TA4,X + AND #$00FF + BEQ ECRJED11 ; RIEN + PHA + JSR DESS1 + PLA + JMP THIRD +ECRJED11 JMP SOURIS + +ECREEHA LDA #ECREEHA1 ; EASTER EGGS HAPPY (SURFACE) + STA SURFACE5+1 + JMP SURFACE +ECREEHA1 NOP + STZ noINTER ; ARRETE LE TEMPS + INC CTPNFLG ; INTERDIT L'ENTREE DANS LE CONTROL PANEL + JSR DESS1 ; ENLEVE LE POINTEUR + JSR CADEAEG ; CREATION DU CADRE ET DU BOUTON + LDA #$0000 ; SPRITE WOOD + JSR EAEGSPR + LDA #$0001 ; TEXTE WOOD + JSR EAEGSPR + LDA #$000D + JMP PICT1 + +ECREELU LDA #ECREELU1 ; EASTER EGGS LUDY (SURFACE) + STA SURFACE5+1 + JMP SURFACE +ECREELU1 NOP + STZ noINTER ; ARRETE LE TEMPS + INC CTPNFLG ; INTERDIT L'ENTREE DANS LE CONTROL PANEL + JSR DESS1 ; ENLEVE LE POINTEUR + JSR CADEAEG ; CREATION CADRE ET BOUTON + LDA #$0004 ; SPRITE B&W + JSR EAEGSPR + LDA #$0005 ; TEXTE B&W + JSR EAEGSPR + LDA #$000D + JMP PICT1 + +ECREEPL LDA #ECREEPL1 ; EASTER EGGS PLANET (SURFACE) + STA SURFACE5+1 + JMP SURFACE +ECREEPL1 NOP + STZ noINTER ; ARRETE LE TEMPS + INC CTPNFLG ; INTERDIT L'ENTREE DANS LE CONTROL PANEL + JSR DESS1 ; ENLEVE LE POINTEUR + JSR CADEAEG ; CREATION CADRE ET BOUTON + LDA #$0006 ; SPRITE FUTUR + JSR EAEGSPR + LDA #$0007 ; TEXTE FUTUR + JSR EAEGSPR + LDA #$000D + JMP PICT1 + +ECREEXE LDA #ECREEXE1 ; EASTER EGGS XENO (SURFACE) + STA SURFACE5+1 + JMP SURFACE +ECREEXE1 NOP + STZ noINTER ; ARRETE LE TEMPS + INC CTPNFLG ; INTERDIT L'ENTREE DANS LE CONTROL PANEL + JSR DESS1 ; ENLEVE LE POINTEUR + JSR CADEAEG ; CREATION CADRE ET BOUTON + LDA #$0002 ; SPRITE BRUTAL + JSR EAEGSPR + LDA #$0003 ; TEXTE BRUTAL + JSR EAEGSPR + LDA #$000D + JMP PICT1 + +JAMAIS STZ noINTER ; ECRAN GAGNE !! + INC CTPNFLG + JSR DESS1 + JSR CADRE + LDA #$0008 ; COUPE + JSR EAEGSPR + LDA #$0009 ; TEXTE + JSR EAEGSPR + JSR KBD ; ATTEND UNE TOUCHE + JSR RESTAUR + LDA #$0001 + STA noINTER ; RETABLI LE TEMPS + STZ CTPNFLG ; ON AUTORISE L'ENTREE DANS LE CTPN + LDA OLDECR + STA ECRAN + RTS + +************* CONTROL PANEL + +ECR0500 LDX SECR2+1 ; GAME + LDA #ECR0501 + STA BUMPER5+1 + JMP BUMPER +ECR0501 NOP + LDA #$0006 + JMP PICT + +ECR0510 LDX SECR2+1 ; MUSIC + LDA #ECR0511 + STA BUMPER5+1 + JMP BUMPER +ECR0511 NOP + LDA #$0007 + JMP PICT + +ECR0520 LDX SECR2+1 ; GROUND + LDA #ECR0521 + STA BUMPER5+1 + JMP BUMPER +ECR0521 NOP + LDA #$0008 + JMP PICT + +ECR0530 LDX SECR2+1 ; LEVEL + LDA #ECR0531 + STA BUMPER5+1 + JMP BUMPER +ECR0531 NOP + LDA #$0009 + JMP PICT + +ECR0540 LDX SECR2+1 ; DOC + LDA #ECR0541 + STA BUMPER5+1 + JMP BUMPER +ECR0541 NOP + STZ AFTIND + LDA #$000A + JMP PICT + +ECR0550 LDX SECR2+1 ; ABOUT + LDA #ECR0551 + STA BUMPER5+1 + JMP BUMPER +ECR0551 NOP + STZ AFTIND + LDA #$000B + JMP PICT + +ECR0560 LDX SECR2+1 ; QUIT + LDA #ECR0561 + STA BUMPER5+1 + JMP BUMPER +ECR0561 NOP + LDA #$000C + JMP PICT + +ECR0570 LDX SECR2+1 ; OK + LDA #ECR0571 + STA BUMPER5+1 + JMP BUMPER +ECR0571 NOP + JSR RESTAUR ; ENLEVE LE CONTROL PANEL + LDA #$0001 + STA noINTER ; RETABLI LE TEMPS + STZ CTPNFLG ; ON AUTORISE LA CREATION DU CTPN + LDA GROUECR + JMP PICT1 ; EN REVIENT A L'ANCIEN ECRAN + +*********** LOAD/SAVE GAME + +ECR0600 LDX SECR2+1 ; LOAD + LDA #ECR0601 + STA BUMPER5+1 + JMP BUMPER +ECR0601 NOP + JSR TEMPload + LDA CHANGFLG ; ON DEMANDE UN CHANGEMENT PIECES/FLECHES + ORA #$0001 ; 0000.0000,0000.0001 + STA CHANGFLG + JMP SOURIS1 + +ECR0610 LDX SECR2+1 ; SAVE + LDA #ECR0611 + STA BUMPER5+1 + JMP BUMPER +ECR0611 NOP + JSR saveFILE + JMP SOURIS1 + +ECR0620 LDX SECR2+1 ; OK + LDA #ECR0621 + STA BUMPER5+1 + JMP BUMPER +ECR0621 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +************** MUSIC + +ECR0700 LDX SECR2+1 ; MUSIC + LDA #ECR0701 + STA BUMPER5+1 + JMP BUMPER +ECR0701 NOP + LDA #CADMMUF ; PATCH BUMPER + STA ECR07DAT + LDA #CADMSNC + STA ECR07DAT+8 + JSR CADMSNC ; SOUND FONCE + JSR CADMMUF ; MUSIC CLAIR + LDA MUSIFLAG + BEQ ECR07010 ; ON AVAIT DEJA SELECTIONNE LA ZIC + STZ MUSIFLAG + jsr stopSND ; ARRETE LES SONS + jsr startNT ; DEMARRE LA MUSIQUE + jsr startZIK + stz fgWHICH +ECR07010 JSR SAUV + JMP SOURIS1 + +ECR0710 LDX SECR2+1 ; SOUND + LDA #ECR0711 + STA BUMPER5+1 + JMP BUMPER +ECR0711 NOP + LDA #CADMMUC ; PATCH BUMPER + STA ECR07DAT + LDA #CADMSNF + STA ECR07DAT+8 + JSR CADMMUC ; MUSIC FONCE + JSR CADMSNF ; SOUND CLAIR + LDA MUSIFLAG + BNE ECR07110 ; ON AVAIT DEJA + LDA #$0001 + STA MUSIFLAG + JSR stopNT ; ARRETE MUSIQUE + JSR startSND ; DEMARRE LES SONS + lda #1 + sta fgWHICH +ECR07110 JSR SAUV + JMP SOURIS1 + +ECR0720 LDX SECR2+1 ; OK + LDA #ECR0721 + STA BUMPER5+1 + JMP BUMPER +ECR0721 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +MUSIFLAG HEX 0000 ; 0:MUSIC, 1:SOUND + +****************** GROUND + +ECR0800 LDX SECR2+1 ; HAPPY + LDA #ECR0801 + STA BUMPER5+1 + JMP BUMPER +ECR0801 NOP + JSR ECR08PATCH ; PATCH BUMPER + LDA #CADGRHAF + STA ECR08DAT + JSR CADGRLUC ; LUDY FONCE + JSR CADGRPLC ; PLANET FONCE + JSR CADGRXEC ; XENO FONCE + JSR CADGRRAC ; RANDOM FONCE + JSR CADGRHAF ; HAPPY CLAIR + STZ GROUFLAG ; DESIRE : HAPPY + STZ fgRANDOM ; RANDOM OFF + LDA CHANGFLG + ORA #$0002 ; DEMANDE UN CHANGEMENT DE DECOR + STA CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECR0810 LDX SECR2+1 ; LUDY + LDA #ECR0811 + STA BUMPER5+1 + JMP BUMPER +ECR0811 NOP + JSR ECR08PATCH ; PATCH BUMPER + LDA #CADGRLUF + STA ECR08DAT+8 + JSR CADGRHAC ; HAPPY FONCE + JSR CADGRPLC ; PLANET FONCE + JSR CADGRXEC ; XENO FONCE + JSR CADGRRAC ; RANDOM FONCE + JSR CADGRLUF ; LUDY CLAIR + LDA #$0001 + STA GROUFLAG ; DESIRE : LUDY + STZ fgRANDOM ; RANDOM OFF + LDA CHANGFLG + ORA #$0002 ; DEMANDE UN CHANGEMENT DE DECOR + STA CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECR0820 LDX SECR2+1 ; PLANET + LDA #ECR0821 + STA BUMPER5+1 + JMP BUMPER +ECR0821 NOP + JSR ECR08PATCH ; PATCH BUMPER + LDA #CADGRPLF + STA ECR08DAT+16 + JSR CADGRHAC ; HAPPY FONCE + JSR CADGRLUC ; LUDY FONCE + JSR CADGRXEC ; XENO FONCE + JSR CADGRRAC ; RANDOM FONCE + JSR CADGRPLF ; PLANET CLAIR + LDA #$0002 + STA GROUFLAG ; DESIRE : PLANET + STZ fgRANDOM ; RANDOM OFF + LDA CHANGFLG + ORA #$0002 ; DEMANDE UN CHANGEMENT DE DECOR + STA CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECR0830 LDX SECR2+1 ; XENO + LDA #ECR0831 + STA BUMPER5+1 + JMP BUMPER +ECR0831 NOP + JSR ECR08PATCH ; PATCH BUMPER + LDA #CADGRXEF + STA ECR08DAT+24 + JSR CADGRHAC ; HAPPY FONCE + JSR CADGRLUC ; LUDY FONCE + JSR CADGRPLC ; PLANET FONCE + JSR CADGRRAC ; RANDOM FONCE + JSR CADGRXEF ; XENO CLAIR + LDA #$0003 + STA GROUFLAG ; DESIRE : XENO + STZ fgRANDOM ; RANDOM OFF + LDA CHANGFLG + ORA #$0002 ; DEMANDE UN CHANGEMENT DE DECOR + STA CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECR0840 LDX SECR2+1 ; RANDOM + LDA #ECR0841 + STA BUMPER5+1 + JMP BUMPER +ECR0841 NOP + JSR ECR08PATCH ; PATCH BUMPER + LDA #CADGRRAF + STA ECR08DAT+32 + JSR CADGRHAC ; HAPPY FONCE + JSR CADGRLUC ; LUDY FONCE + JSR CADGRPLC ; PLANET FONCE + JSR CADGRXEC ; XENO FONCE + JSR CADGRRAF ; RANDOM CLAIR + LDA #$0004 + STA GROUFLAG + LDA #$0001 ; RAMDOM ON + STA fgRANDOM + LDA CHANGFLG + AND #$FFFD ; INTERDIT UN CHANGEMENT DE DECOR + STA CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECR0850 LDX SECR2+1 ; OK + LDA #ECR0851 + STA BUMPER5+1 + JMP BUMPER +ECR0851 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +ECR08PATCH LDA #CADGRHAC ; PATCH BUMPER + STA ECR08DAT + LDA #CADGRLUC + STA ECR08DAT+8 + LDA #CADGRPLC + STA ECR08DAT+16 + LDA #CADGRXEC + STA ECR08DAT+24 + LDA #CADGRRAC + STA ECR08DAT+32 + RTS + +GROUFLAG HEX 0400 ; 0:HAPPY,1:LUDY,2:PLANET,3:XENO,4:RANDOM +GROUCONV HEX 0300,0100,0400,0200 +GROUECR HEX 0000 ; NUMERO DE L'ECRAN PRECEDENT + +**************** LEVEL + +ECR0900 LDX SECR2+1 ; << + LDA #ECR0901 + STA BUMPER5+1 + JMP BUMPER +ECR0901 NOP + JSR NUMMOID ; LEVEL - 10 + JSR NUMVERIF ; COHERENCE 1-120 + JSR NUMAFFI ; AFFICHAGE + LDA CHANGFLG + ORA #$0001 ; DEMANDE LE CHANGEMENT PIECES/FLECHES + STA CHANGFLG + JMP SOURIS1 + +ECR0910 LDX SECR2+1 ; < + LDA #ECR0911 + STA BUMPER5+1 + JMP BUMPER +ECR0911 NOP + JSR NUMMOIU ; LEVEL - 1 + JSR NUMVERIF ; COHERENCE 1-120 + JSR NUMAFFI ; AFFICHAGE + LDA CHANGFLG + ORA #$0001 ; DEMANDE LE CHANGEMENT PIECES/FLECHES + STA CHANGFLG + JMP SOURIS1 + +ECR0920 LDX SECR2+1 ; > + LDA #ECR0921 + STA BUMPER5+1 + JMP BUMPER +ECR0921 NOP + JSR NUMPLUU ; LEVEL + 1 + JSR NUMVERIF ; COHERENCE 1-120 + JSR NUMAFFI ; AFFICHAGE + LDA CHANGFLG + ORA #$0001 ; DEMANDE LE CHANGEMENT PIECES/FLECHES + STA CHANGFLG + JMP SOURIS1 + +ECR0930 LDX SECR2+1 ; >> + LDA #ECR0931 + STA BUMPER5+1 + JMP BUMPER +ECR0931 NOP + JSR NUMPLUD ; LEVEL + 10 + JSR NUMVERIF ; COHERENCE 1-120 + JSR NUMAFFI ; AFFICHAGE + LDA CHANGFLG + ORA #$0001 ; DEMANDE LE CHANGEMENT PIECES/FLECHES + STA CHANGFLG + JMP SOURIS1 + +ECR0940 LDX SECR2+1 ; OK + LDA #ECR0941 + STA BUMPER5+1 + JMP BUMPER +ECR0941 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +*************** DOC + +ECR1000 LDX SECR2+1 ; < + LDA #ECR1001 + STA BUMPER5+1 + JMP BUMPER +ECR1001 NOP + LDA AFTIND + BEQ ECR1002 + DEC + STA AFTIND + JSR AFTPAG ; AFICHAGE PAGE PRECEDENTE +ECR1002 JMP SOURIS1 + +ECR1010 LDX SECR2+1 ; > + LDA #ECR1011 + STA BUMPER5+1 + JMP BUMPER +ECR1011 NOP + LDA AFTIND +ECR1012 CMP #$0007 ; NB DE PAGES MAXI + BEQ ECR1013 + INC + STA AFTIND + JSR AFTPAG ; AFFICHAGE PAGE SUIVANTE +ECR1013 JMP SOURIS1 + +ECR1020 LDX SECR2+1 ; OK + LDA #ECR1021 + STA BUMPER5+1 + JMP BUMPER +ECR1021 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +DOCADR HEX 0000 ; ADRESSE DU TEXTE DOCU (FRANCAIS/ANGLAIS) + +************* ABOUT + +ECR1100 LDX SECR2+1 ; < + LDA #ECR1101 + STA BUMPER5+1 + JMP BUMPER +ECR1101 NOP + LDA AFTIND + BEQ ECR1102 + DEC + STA AFTIND + JSR AFTPAG ; AFICHAGE PAGE PRECEDENTE +ECR1102 JMP SOURIS1 + +ECR1110 LDX SECR2+1 ; > + LDA #ECR1111 + STA BUMPER5+1 + JMP BUMPER +ECR1111 NOP + LDA AFTIND +ECR1112 CMP #$0005 ; NB DE PAGES MAXI + BEQ ECR1113 + INC + STA AFTIND + JSR AFTPAG ; AFFICHAGE PAGE SUIVANTE +ECR1113 JMP SOURIS1 + +ECR1120 LDX SECR2+1 ; OK + LDA #ECR1121 + STA BUMPER5+1 + JMP BUMPER +ECR1121 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +ABOUADR HEX 0000 ; ADRESSE DU TEXTE ABOUT (FRANCAIS/ANGLAIS) + +************ QUIT + +ECR1200 LDX SECR2+1 ; QUIT + LDA #ECR1201 + STA BUMPER5+1 + JMP BUMPER +ECR1201 NOP + JMP keyEND ; FIN + +ECR1210 LDX SECR2+1 ; OK + LDA #ECR1211 + STA BUMPER5+1 + JMP BUMPER +ECR1211 NOP + JSR CTPNCLNZ ; ENLEVE LES BOUTONS + LDA #$0005 + JMP PICT1 + +************ EASTER EGG HAPPY,LUDY,PLANET,XENO + +ECR1300 LDX SECR2+1 ; OK + LDA #ECR1301 + STA BUMPER5+1 + JMP BUMPER +ECR1301 NOP + JSR RESTAUR + LDA #$0001 + STA noINTER ; RETABLI LE TEMPS + STZ CTPNFLG ; ON AUTORISE L'ENTREE DANS LE CTPN + LDA OLDECR + STA ECRAN + JSR SAUV + JMP SOURIS1 + + asc 'Hey! I am looking for the WATCHMEN comics number 5 and 6',8d + +*************************************************************************** +****************************** DATA ************************************* +*************************************************************************** + +************ BUMPER MANAGER ************ PAVE + +BUMPER LDA FLAGTAB,X + BEQ BUMPER2 + LDA BOUT + BEQ BUMPER1 +BUMPER0 JMP SOURIS +BUMPER1 STZ FLAGTAB,X ; RELEVE LE BUMPER ET EFFECTUE LE TRAITEMENT + STZ BMPFLG + JSR DESS1 + JSR AFFSPRR + JSR SAUV +BUMPER5 JMP $FFFF ; TRAITEMENT A EFFECTUER +BUMPER2 STX BUMPER4+1 ; SAUVEGARDE TEMPORAIRE DE X + LDA BMPFLG + BEQ BUMPER3 + LDX LAST ; FORCE LE REMONTEE DE L'ANCIEN + STZ FLAGTAB,X + STZ BMPFLG + STX SECR2+1 + JSR DESS1 + JSR AFFSPRR + JSR SAUV +BUMPER3 LDA BOUT + BEQ BUMPER0 ; JMP SOURIS +BUMPER4 LDX #$FFFF ; RECUPERE LA VALEUR DE X PERTURBEE PAR LA REMONTE FORCEE + STX LAST ; ENFONCE LE BUMPER SUR LEQUEL ON SE TROUVE + LDA #$0001 + STA BMPFLG + STA FLAGTAB,X + STX SECR2+1 + JSR DESS1 + JSR AFFSPRE + JSR SAUV + JMP SOURIS1 + +************* SURFACE MANAGER ************* ZONE D'ECRAN + +SURFACE LDA BMPFLG ; X CONTIENT LE NUMERO DU BOUTON + BEQ SURFACE1 + LDX LAST ; ON FORCE SA RELEVE + STZ BMPFLG + STZ FLAGTAB,X + STX SECR2+1 + JSR DESS1 + JSR AFFSPRR + JSR SAUV + JMP SOURIS1 +SURFACE1 LDA BOUT + BEQ SURFACE2 +SURFACE5 JMP $FFFF ; TRAITEMENT A EFFECTUER +SURFACE2 JMP SOURIS + +******** TRAITEMENT PAR DEFAUT ********* + +BUMPDEF LDA BMPFLG + BEQ BUMPDEF1 + LDX LAST ; FORCE LE REMONTEE DE L'ANCIEN + STZ FLAGTAB,X + STZ BMPFLG + STX SECR2+1 + JSR DESS1 + JSR AFFSPRR + JSR SAUV + JMP SOURIS1 +BUMPDEF1 JMP SOURIS + +********************************************** + +ECR01TA1 HEX 01,01,01,01,01,01,01,01,01,01,01,01,00,00,00,00 ; FLECHES HAUT + HEX 02,02,02,02,02,02,02,02,02,02,02,02,00,00,00,00 + HEX 03,03,03,03,03,03,03,03,03,03,03,03,00,00,00,00 + HEX 04,04,04,04,04,04,04,04,04,04,04,04,00,00,00,00 + HEX 05,05,05,05,05,05,05,05,05,05,05,05,00,00,00,00 + HEX 06,06,06,06,06,06,06,06,06,06,06,06,00,00,00,00 + HEX 07,07,07,07,07,07,07,07,07,07,07,07,00,00,00,00 + HEX 08,08,08,08,08,08,08,08,08,08,08,08,00,00,00,00 + HEX 09,09,09,09,09,09,09,09,09,09,09,09,00,00,00,00 + +ECR01TA2 HEX 12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00 ; FLECHES BAS + HEX 13,13,13,13,13,13,13,13,13,13,13,13,00,00,00,00 + HEX 14,14,14,14,14,14,14,14,14,14,14,14,00,00,00,00 + HEX 15,15,15,15,15,15,15,15,15,15,15,15,00,00,00,00 + HEX 16,16,16,16,16,16,16,16,16,16,16,16,00,00,00,00 + HEX 17,17,17,17,17,17,17,17,17,17,17,17,00,00,00,00 + HEX 18,18,18,18,18,18,18,18,18,18,18,18,00,00,00,00 + HEX 19,19,19,19,19,19,19,19,19,19,19,19,00,00,00,00 + HEX 1A,1A,1A,1A,1A,1A,1A,1A,1A,1A,1A,1A,00,00,00,00 + +ECR01TA3 HEX 1B,1B,1B,1B,1B,1B,1B,1B,1B,1B,1B,1B,00,00 ; FLECHES GAUCHE + HEX 1C,1C,1C,1C,1C,1C,1C,1C,1C,1C,1C,1C,00,00 + HEX 1D,1D,1D,1D,1D,1D,1D,1D,1D,1D,1D,1D,00,00 + HEX 1E,1E,1E,1E,1E,1E,1E,1E,1E,1E,1E,1E,00,00 + HEX 1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,00,00 + HEX 20,20,20,20,20,20,20,20,20,20,20,20,00,00 + HEX 21,21,21,21,21,21,21,21,21,21,21,21,00,00 + HEX 22,22,22,22,22,22,22,22,22,22,22,22,00,00 + HEX 23,23,23,23,23,23,23,23,23,23,23,23,00,00 + +ECR01TA4 HEX 09,09,09,09,09,09,09,09,09,09,09,09,00,00 ; FLECHES DROITE + HEX 0A,0A,0A,0A,0A,0A,0A,0A,0A,0A,0A,0A,00,00 + HEX 0B,0B,0B,0B,0B,0B,0B,0B,0B,0B,0B,0B,00,00 + HEX 0C,0C,0C,0C,0C,0C,0C,0C,0C,0C,0C,0C,00,00 + HEX 0D,0D,0D,0D,0D,0D,0D,0D,0D,0D,0D,0D,00,00 + HEX 0E,0E,0E,0E,0E,0E,0E,0E,0E,0E,0E,0E,00,00 + HEX 0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,00,00 + HEX 10,10,10,10,10,10,10,10,10,10,10,10,00,00 + HEX 11,11,11,11,11,11,11,11,11,11,11,11,00,00 + + HEX 0500 ; HAPPY NB DE BOUTONS DANS ECRAN1 +ECR01TAB HEX 1600,A100,1B00,2300 ; HAUT TABLEAU DES BOUTONS POUR ECRAN1 + HEX 1600,A100,A500,AD00 ; BAS X0,X1 Y0,Y1 + HEX 0A00,1100,2600,A200 ; GAUCHE + HEX A700,AE00,2600,A200 ; DROITE + HEX E900,ED00,2500,2800 ; EASTER EGGS + + HEX 0500 ; LUDY +ECR02TAB HEX 1600,A100,1B00,2300 ; HAUT + HEX 1600,A100,A500,AD00 ; BAS + HEX 0A00,1100,2600,A200 ; GAUCHE + HEX A700,AE00,2600,A200 ; DROITE + HEX 1D01,2301,2E00,3300 ; EASTER EGGS + + HEX 0500 ; PLANET +ECR03TAB HEX 1600,A100,1B00,2300 ; HAUT + HEX 1600,A100,A500,AD00 ; BAS + HEX 0A00,1100,2600,A200 ; GAUCHE + HEX A700,AE00,2600,A200 ; DROITE + HEX 0D01,1101,6300,6700 ; EASTER EGGS + + HEX 0500 ; XENO +ECR04TAB HEX 1600,A100,1B00,2300 ; HAUT + HEX 1600,A100,A500,AD00 ; BAS + HEX 0A00,1100,2600,A200 ; GAUCHE + HEX A700,AE00,2600,A200 ; DROITE + HEX 0801,0E01,1900,1E00 ; EASTER EGGS + +ECR01DAT HEX 0000,0000,0000,0000 ; LONGUEUR (*4),HAUTEUR,@ ECRAN,@ SPRITE + + HEX 0800 ; CONTROL PANEL +ECR05TAB HEX 1800,5700,2500,3500 ; GAME + HEX 1800,5700,3800,4800 ; MUSIC + HEX 1800,5700,4B00,5B00 ; GROUND + HEX 1800,5700,5E00,6E00 ; LEVEL + HEX 1800,5700,7100,8100 ; DOC + HEX 1800,5700,8400,9400 ; ABOUT + HEX 1800,5700,9700,A700 ; QUIT + HEX 8800,B800,AD00,BD00 ; OK + +ECR05DAT DA CADGAMC,CADGAMF,CADGAMC,CADGAMF + DA CADMUSC,CADMUSF,CADMUSC,CADMUSF + DA CADGROC,CADGROF,CADGROC,CADGROF + DA CADLEVC,CADLEVF,CADLEVC,CADLEVF + DA CADDOCC,CADDOCF,CADDOCC,CADDOCF + DA CADABOC,CADABOF,CADABOC,CADABOF + DA CADQUIC,CADQUIF,CADQUIC,CADQUIF + DA CADOKC,CADOKF,CADOKC,CADOKF + + HEX 0300 ; LOAD/SAVE GAME +ECR06TAB HEX BC00,1301,4B00,5B00 ; LOAD + HEX BC00,1301,5E00,6E00 ; SAVE + HEX D000,FF00,7B00,8B00 ; OK + +ECR06DAT DA CADGLOC,CADGLOF,CADGLOC,CADGLOF + DA CADGSAC,CADGSAF,CADGSAC,CADGSAF + DA CADGOKC,CADGOKF,CADGOKC,CADGOKF + + HEX 0300 ; MUSIC +ECR07TAB HEX C800,0701,4B00,5B00 ; MUSIC X0,X1,Y0,Y1 + HEX C800,0701,5E00,6E00 ; SOUND + HEX D000,FF00,7B00,8B00 ; OK + +ECR07DAT DA CADMMUC,CADMMUF,CADMMUC,CADMMUF + DA CADMSNC,CADMSNF,CADMSNC,CADMSNF + DA CADMOKC,CADMOKF,CADMOKC,CADMOKF + + HEX 0600 ; GROUND +ECR08TAB HEX A200,E700,4100,5100 ; HAPPY + HEX EC00,3101,4100,5100 ; LUDY + HEX A200,E700,5400,6400 ; PLANET + HEX EC00,3101,5400,6400 ; XENO + HEX C800,0B01,6C00,7C00 ; RANDOM + HEX D200,0101,8900,9900 ; OK + +ECR08DAT DA CADGRHAC,CADGRHAF,CADGRHAC,CADGRHAF + DA CADGRLUC,CADGRLUF,CADGRLUC,CADGRLUF + DA CADGRPLC,CADGRPLF,CADGRPLC,CADGRPLF + DA CADGRXEC,CADGRXEF,CADGRXEC,CADGRXEF + DA CADGRRAC,CADGRRAF,CADGRRAC,CADGRRAF + DA CADGROKC,CADGROKF,CADGROKC,CADGROKF + + HEX 0500 ; LEVEL +ECR09TAB HEX B400,CB00,6800,7700 ; MOINS 10 + HEX CE00,E500,6800,7700 ; MOINS 1 + HEX E000,0101,6800,7700 ; PLUS 1 + HEX 0401,1B01,6800,7700 ; PLUS 10 + HEX D000,FF00,8400,9400 ; OK + +ECR09DAT DA CADLMDC,CADLMDF,CADLMDC,CADLMDF + DA CADLMUC,CADLMUF,CADLMUC,CADLMUF + DA CADLPUC,CADLPUF,CADLPUC,CADLPUF + DA CADLPDC,CADLPDF,CADLPDC,CADLPDF + DA CADLOKC,CADLOKF,CADLOKC,CADLOKF + + HEX 0300 ; DOC +ECR10TAB HEX 9600,AD00,9900,A800 ; MOINS UNE + HEX E600,FD00,9900,A800 ; PLUS UNE + HEX B200,E100,9900,A900 ; OK + +ECR10DAT DA CADDMUC,CADDMUF,CADDMUC,CADDMUF + DA CADDPUC,CADDPUF,CADDPUC,CADDPUF + DA CADDOKC,CADDOKF,CADDOKC,CADDOKF + + HEX 0300 ; ABOUT +ECR11TAB HEX 9600,AD00,9900,A800 ; MOINS UNE + HEX E600,FD00,9900,A800 ; PLUS UNE + HEX B200,E100,9900,A900 ; OK + +ECR11DAT DA CADDMUC,CADDMUF,CADDMUC,CADDMUF + DA CADDPUC,CADDPUF,CADDPUC,CADDPUF + DA CADDOKC,CADDOKF,CADDOKC,CADDOKF + + HEX 0200 ; QUIT +ECR12TAB HEX BC00,1101,5600,6600 ; QUIT + HEX CE00,FD00,7D00,8D00 ; OK + +ECR12DAT DA CADQQUC,CADQQUF,CADQQUC,CADQQUF + DA CADQOKC,CADQOKF,CADQOKC,CADQOKF + + HEX 0100 ; EASTER EGGS +ECR13TAB HEX 8800,B800,AD00,BD00 ; OK + +ECR13DAT DA CADOKC,CADOKF,CADOKC,CADOKF + +**************** + +ECRTAB DA ECR01TAB,ECR02TAB,ECR03TAB,ECR04TAB ; ADRESSES DES TABLEAUX + DA ECR05TAB,ECR06TAB,ECR07TAB,ECR08TAB + DA ECR09TAB,ECR10TAB,ECR11TAB,ECR12TAB + DA ECR13TAB + +ECRDAT DA ECR01DAT,ECR01DAT,ECR01DAT,ECR01DAT ; ADRESSE DES DONNEES BUMPERS + DA ECR05DAT,ECR06DAT,ECR07DAT,ECR08DAT + DA ECR09DAT,ECR10DAT,ECR11DAT,ECR12DAT + DA ECR13DAT + +ECRDESA DA ECRDES1,ECRDES2,ECRDES3,ECRDES4 ; ADRESSE POUR LES DESTINATIONS + DA ECRDES5,ECRDES6,ECRDES7,ECRDES8 + DA ECRDES9,ECRDES10,ECRDES11,ECRDES12 + DA ECRDES13 + +**** + +ECRDES1 DA ECRJEH1,ECRJEB1,ECRJEG1,ECRJED1,ECREEHA ; ECRAN JEU : HAPPY + +ECRDES2 DA ECRJEH1,ECRJEB1,ECRJEG1,ECRJED1,ECREELU ; ECRAN JEU : LUDY + +ECRDES3 DA ECRJEH1,ECRJEB1,ECRJEG1,ECRJED1,ECREEPL ; ECRAN JEU : PLANET + +ECRDES4 DA ECRJEH1,ECRJEB1,ECRJEG1,ECRJED1,ECREEXE ; ECRAN JEU : XENO + +ECRDES5 DA ECR0500,ECR0510,ECR0520,ECR0530,ECR0540 ; CONTROL PANEL + DA ECR0550,ECR0560,ECR0570 + +ECRDES6 DA ECR0600,ECR0610,ECR0620 ; LOAD/SAVE + +ECRDES7 DA ECR0700,ECR0710,ECR0720 ; MUSIC + +ECRDES8 DA ECR0800,ECR0810,ECR0820,ECR0830,ECR0840 ; GROUND + DA ECR0850 + +ECRDES9 DA ECR0900,ECR0910,ECR0920,ECR0930,ECR0940 ; LEVEL + +ECRDES10 DA ECR1000,ECR1010,ECR1020 ; DOC + +ECRDES11 DA ECR1100,ECR1110,ECR1120 ; ABOUT + +ECRDES12 DA ECR1200,ECR1210 ; QUIT + +ECRDES13 DA ECR1300 ; EASTER EGGS + +********************* SOUS ROUTINES SOURIS ************************** + +DEC HEX 000000000000 ; DECOR SOUS LE POINTEUR + HEX 000000000000 + HEX 000000000000 + HEX 000000000000 + HEX 000000000000 + HEX 000000000000 + +PTPAI HEX FFFFFFFF0000 + HEX 0F00000F0000 ; POINTEUR POSITION PAIRE + HEX 00F000F00000 + HEX 000F00F00000 + HEX 0000FF000000 + HEX 00000F000000 + +PTPAIMA HEX 00000000FFFF + HEX F0000000FFFF ; MASQUE POSITION PAIRE + HEX FF00000FFFFF + HEX FFF0000FFFFF + HEX FFFF00FFFFFF + HEX FFFFF0FFFFFF + +PTIMP HEX 0FFFFFFFF000 + HEX 00F00000F000 ; POINTEUR POSITION IMPAIRE + HEX 000F000F0000 + HEX 0000F00F0000 + HEX 00000FF00000 + HEX 000000F00000 + +PTIMPMA HEX F00000000FFF + HEX FF0000000FFF ; MASQUE POSITION IMPAIRE + HEX FFF00000FFFF + HEX FFFF0000FFFF + HEX FFFFF00FFFFF + HEX FFFFFF0FFFFF + +POSX HEX 0000 ; 0-312 +POSY HEX 0000 ; 0-194 +A1 HEX 0000 ; POSITION ACTUELLE +AP HEX 0000 ; ANCIENNE POSITION +ECRAN HEX 0100 ; ECRAN 1,2,3... +OLDECR HEX 0000 ; ECRAN PRECEDENT +GO HEX 0000 ; CONTIENT LE NUMERO DU BOUTON ENFONCE (A RELACHER) +LAST HEX 0000 ; DERNIER BUMPER ENFONCE +BMPFLG HEX 0000 ; A 1 SI UN BUMPER EST DEJA ENFONCE + +BOUT HEX 0000 ; BOUTON +BOUT1 HEX 0000 ; +DELX HEX 000000 +DELY HEX 000000 ; DONNEES SOURIS +NEX HEX 0000 +NEY HEX 0000 + +FLAGTAB HEX 0000000000000000000000000000000000000000 ; FLAGS : 1 SI BUMPER ENFONCE + HEX 0000000000000000000000000000000000000000 ; NB DE BUMPER/BOUTON DANS 1 ECRAN + HEX 0000000000000000000000000000000000000000 + HEX 0000000000000000000000000000000000000000 + HEX 0000000000000000000000000000000000000000 + + asc 'There are two ways to get rich:',8d + asc '- To be very strong',8d + asc '- To take advantage of people',8d + asc 'Isn t it, Gaumu?',8d + +******************** + +SEXIT LDY #$FFFF + RTS + +SLECT LDAL $00C026 ; $C027 LECTURE SOURIS + BPL SEXIT + AND #$0200 + BEQ SLECT1 + LDAL $00C024 + BRA SLECT +SLECT1 LDA #$0000 ; BOUT,NEX,NEY A 0 PAR DEFAUT + STA BOUT + STA NEX + STA NEY + LDAL $00C023 ; $C024 : DELTA X + BIT #$4000 ; SIGNE ? + BNE SLECT3 + AND #$3F00 ; POSITIF + STA DELX + BRA SLECT4 +SLECT3 AND #$3F00 ; NEGATIF + STA SLECT33+1 + INC NEX + LDA #$4000 ; 64 + SEC +SLECT33 SBC #$0000 + STA DELX +SLECT4 LDAL $00C023 ; $C024 : DELTA Y + BMI SLECT44 ; NO BOUT : LECTURE SUR Y DE BOUTON 1 + INC BOUT ; BOUT=1 +SLECT44 BIT #$4000 ; SIGNE ? + BNE SLECT5 + AND #$3F00 ; POSITIF + STA DELY + BRA SLECT6 +SLECT5 AND #$3F00 ; NEGATIF + STA SLECT55+1 + INC NEY + LDA #$4000 ; 64 + SEC +SLECT55 SBC #$0000 + STA DELY +SLECT6 LDA NEX ; CALCUL DE POSX + BNE SLECT8 + LDA POSX ; DELX > 0 + CLC + ADC DELX+1 + CMP #$0139 ; 313 + BMI SLECT7 + LDA #$0138 ; 312 +SLECT7 STA POSX + BRA SLECT10 +SLECT8 LDA POSX ; DELX < 0 + SEC + SBC DELX+1 + BPL SLECT9 + LDA #$0000 +SLECT9 STA POSX +SLECT10 LDA NEY ; CALCUL DE POSY + BNE SLECT12 + LDA POSY ; DELY > 0 + CLC + ADC DELY+1 + CMP #$00C3 ; 195 + BMI SLECT11 + LDA #$00C2 ; 194 +SLECT11 STA POSY + BRA SLECT14 +SLECT12 LDA POSY ; DELY < 0 + SEC + SBC DELY+1 + BPL SLECT13 + LDA #$0000 +SLECT13 STA POSY +SLECT14 RTS + +********************** + +DESS1 LDA A1 + BRA DESS2 +DESS LDA AP ; DESSINE LE DECOR (LIE A AP), ANCIENNE POSITION +DESS2 CLC + ADC #$2000 + STA DESS4+1 + LDY #$0000 + LDX #$0004 ; LARGEUR 3 +DESS3 LDA DEC,Y +DESS4 STAL $E12000,X + INY + INY + DEX + DEX + BPL DESS3 + CPY #$0024 ; NB CASES (36) + BPL DESS5 + LDX #$0004 ; LARGEUR 3 + LDA DESS4+1 + CLC + ADC #$00A0 + STA DESS4+1 + BRA DESS3 +DESS5 RTS + +SAUV LDA A1 ; SAUVEGARDE LE DECOR (LIE A A1), NOUVELLE POSITION + CLC + ADC #$2000 + STA SAUV1+1 + LDY #$0000 + LDX #$0004 ; LARGEUR 3 +SAUV1 LDAL $E12000,X + STA DEC,Y + INY + INY + DEX + DEX + BPL SAUV1 + CPY #$0024 ; NB CASES (36) + BPL SAUV2 + LDX #$0004 ; LARGEUR 3 + LDA SAUV1+1 + CLC + ADC #$00A0 + STA SAUV1+1 + BRA SAUV1 +SAUV2 RTS + +TRACE JSR DESS ; OK + JSR SAUV +TRACE6 LDA A1 ; DESSINE LE POINTEUR POSITION PAIRE + CLC + ADC #$2000 + STA TRACE1+1 + STA TRACE4+1 + LDA POSX + LSR + BCC TRACEP + LDX #PTIMP ; POSITION IMPAIRE + LDY #PTIMPMA + BRA TRACE0 +TRACEP LDX #PTPAI ; POSITION PAIRE + LDY #PTPAIMA +TRACE0 STX TRACE3+1 ; MOTIF + STY TRACE2+1 ; MASQUE + LDY #$0000 + LDX #$0000 +TRACE1 LDAL $E12000,X +TRACE2 AND $A0A0,Y ; ET AVEC LE MASQUE +TRACE3 ORA $A0A0,Y ; OU AVEC LE MOTIF +TRACE4 STAL $E12000,X + INY + INY + INX + INX + CPX #$0006 ; LARGEUR 3 + BNE TRACE1 + CPY #$0024 ; NB CASES (36) + BEQ TRACE5 + LDX #$0000 + LDA TRACE1+1 + CLC + ADC #$00A0 + STA TRACE1+1 + STA TRACE4+1 + BRA TRACE1 +TRACE5 RTS + +************************************************* + +AFFSPRR INC AFFSPRF ; BUMPER RELEVE +AFFSPRE LDA ECRAN ; BUMPER ENFONCE + CMP #$0005 + BPL AFFSPR0 + STZ AFFSPRF + RTS ; BOUTON DE JEUX : PAS DE POSITIONS RELEVES/ENFONCES +AFFSPR0 DEC + ASL + TAX + LDA ECRDAT,X ; ADRESSE DU TABLEAU DES DATA POUR L'ECRAN CONCERNE + STA AFFSPR1+1 + LDA SECR2+1 ; CONTIENT LE NUMERO DU BUMPER (*2) + ASL + ASL ; *4 + CLC +AFFSPR1 ADC #$0000 ; ADRESSE DATA BUMPER + TAX + LDA\ $0000,X ; ADRESSE RELEVE C + STA AFFSPR3+1 + LDA\ $0002,X ; ADRESSE ENFONCE F + STA AFFSPR2+1 + LDA AFFSPRF ; FLAG DE AFFSPR + BNE AFFSPR3 ; ON DESSINE LE SPRITE RELEVE +AFFSPR2 JSR $A0A0 + STZ AFFSPRF + RTS +AFFSPR3 JSR $A0A0 + STZ AFFSPRF + RTS +AFFSPRF HEX 0000 ; FLAG RELEVE/ENFONCE + +******************** TRAITEMENT ET AFFICHAGE ECRANS ********************* + +PICT1 LDX ECRAN ; PASSAGE ECRAN SANS CHANGEMENT DE FOND + STX OLDECR + STA ECRAN + JSR SAUV + JMP PICT21 + +PICT PHA + JSR DESS1 ; ENLEVE LE POINTEUR + PLA + LDX ECRAN + STX OLDECR + STA ECRAN + +PICT21 JSR CLNFLG ; LES FLAGS DE BUMPER A ZERO + STZ BMPFLG ; LES FLAGS A ZERO + LDA ECRAN ; AFFICHAGES LIE A CHAQUE ECRAN + DEC + ASL + TAX + LDA ECRANTAB,X + STA PICT20+1 +PICT20 JMP $FFFF ; ON VA SUR LA ROUTINE CORRESPONDANTE + +ECRANTAB DA ECRJEU1,ECRJEU2,ECRJEU3,ECRJEU4,ECRCTPN ; NOM DES ECRANS POUR INIT D'AFFICHAGE + DA ECRGAME,ECRMUSI,ECRGROU,ECRLEVE,ECRDOCU + DA ECRABOU,ECRQUIT,ECREAEG + +CLNFLG LDX #$0062 ; ON MET TOUS LES FLAG DE BUMPER A 0 + LDA #$0000 +CLNFLG1 STA FLAGTAB,X + DEX + DEX + BPL CLNFLG1 + RTS + +CHANGFLG HEX 0000 ; 0 SI PAS DE CHANGEMENT D'ECRAN QUAND ON REVIENT DU CTPN + ; 1 SI CHANGEMENT PIECES/FLECHES + ; 2 SI CHANGEMENT DECOR + ; 3 SI CHANGEMENT TOTAL : PIECES/FLECHES et DECOR + +*********** TRAITEMENT INITIAL A L'AFFICHAGE D'UN ECRAN + +ECRJEU1 LDA CHANGFLG ; ECRAN DE JEU HAPPYLAND + BEQ ECRJEU10 + LDA #$0001 ; MODIFICATION ? + JSR CHANGSOM +ECRJEU10 STZ CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECRJEU2 LDA CHANGFLG ; ECRAN DE JEU LUDYLAND + BEQ ECRJEU20 + LDA #$0002 ; MODIFICATION ? + JSR CHANGSOM +ECRJEU20 STZ CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECRJEU3 LDA CHANGFLG ; ECRAN DE JEU PLANETLAST + BEQ ECRJEU30 + LDA #$0003 ; MODIFICATION ? + JSR CHANGSOM +ECRJEU30 STZ CHANGFLG + JSR SAUV + JMP SOURIS1 + +ECRJEU4 LDA CHANGFLG ; ECRAN DE JEU XENOLAST + BEQ ECRJEU40 + LDA #$0004 ; MODIFICATION ? + JSR CHANGSOM +ECRJEU40 STZ CHANGFLG + JSR SAUV + JMP SOURIS1 + +CHANGSOM LDX GROUFLAG ; AIGUILLAGE VERS UN CHANGEMENT PIECES ET/OU DECOR + CPX #$0004 + BEQ CHANGSO4 ; PAS BESOIN DE CHANGER LE DECOR + DEC + CMP GROUFLAG + BEQ CHANGSO4 ; PAS BESOIN DE CHANGER LE DECOR + LDA CHANGFLG + CMP #$0001 ; BESOIN DE CHANGER LES PIECES ? + BEQ CHANGSO1 + CMP #$0002 ; BESOIN DE CHANGER LE DECOR + BEQ CHANGSO2 + BRA CHANGSO3 ; BESOIN DE CHANGER LES DEUX +CHANGSO4 LDA CHANGFLG ; ON N'A PAS BESOIN DE MODIFIER LE DECOR + AND #$0001 + BNE CHANGSO1 + STZ CHANGFLG + RTS ; AUCUNE MODIF +CHANGSO1 PLX ; MODIFICATION PIECES/FLECHES + STZ CHANGFLG + LDA ECRAN ; NOUVEL ECRAN SOUHAITE + DEC + ASL + TAX + LDA GROUCONV,X + STA CurDecor + lda vivaTOINET + bne laRUSE + LDA NUMHEX + STA Niveau + stz ldFlag + bra ahlala +laRUSE stz vivaTOINET + lda #1 + sta ldFlag +ahlala jsr fadeOUT + JMP FIRST +CHANGSO2 PLX ; MODIFICATION DECOR + STZ CHANGFLG + LDA GROUFLAG ; NOUVEL ECRAN SOUHAITE + ASL + TAX + LDA GROUCONV,X + STA CurDecor + LDA GROUFLAG + INC + STA ECRAN + JSR setDecor + LDA #$0001 + STA ldFlag + JSR fadeOUT + JMP FIRST +CHANGSO3 PLX ; MODIFICATION TOTALE + STZ CHANGFLG + LDA NUMHEX + STA Niveau + LDA GROUFLAG ; NOUVEL ECRAN SOUHAITE + ASL + TAX + LDA GROUCONV,X + STA CurDecor + LDA GROUFLAG + INC + STA ECRAN + jsr setDecor + jsr fadeOUT + stz ldFlag + JMP FIRST + +ECRCTPN LDA CTPNFLG + BNE ECRCTPN1 + LDA OLDECR + STA GROUECR ; ON CONSERVE LE NUMERO DE L'ECRAN PRECEDENT L'ENTREE + STZ noINTER ; ARRETE LE TEMPS + STZ CHANGFLG ; AUCUN CHANGEMENT PREVU AU RETOUR + JSR CADRE ; CREATION CADRE PAGE + JSR CADCTPN ; CREATION CONTROL PANEL + INC CTPNFLG +ECRCTPN1 JSR CTPNCLNZ ; NETTOYAGE ZONE BOUTONS AUXILIAIRES + JSR SAUV + JMP SOURIS1 +CTPNFLG HEX 0000 + +ECRGAME JSR CADGAME ; CREATION DE L'ECRAN + JSR SAUV + JMP SOURIS1 + +ECRMUSI JSR CADMUSI ; CREATION DE L'ECRAN + JSR SAUV + JMP SOURIS1 + +ECRGROU JSR CADGROU ; CREATION DE L'ECRAN + JSR SAUV + JMP SOURIS1 + +ECRLEVE JSR CADLEVE ; CREATION DE L'ECRAN + JSR NUMVNOC ; CONVERSION NIVEAU EN COURS + JSR NUMAFFI ; AFFICHAGE NIVEAU + JSR SAUV + JMP SOURIS1 + +ECRDOCU JSR CADDOCU ; CREATION DE L'ECRAN + LDA DOCADR + STA AFTLIG1+1 + JSR AFTPAG ; AFFICHE 1 PAGE DE TEXTE + JSR SAUV + JMP SOURIS1 + +ECRABOU JSR CADABOU ; CREATION DE L'ECRAN + LDA ABOUADR + STA AFTLIG1+1 + JSR AFTPAG ; AFFICHE 1 PAGE DE TEXTE + JSR SAUV + JMP SOURIS1 + +ECRQUIT JSR CADQUIT ; CREATION DE L'ECRAN + JSR SAUV + JMP SOURIS1 + +ECREAEG JSR SAUV ; EASTER EGGS (ECRAN DEJA CONSTRUIT) + JMP SOURIS1 + + asc 'Coming soon to a screen near you: Cogito for the TurboRez',8d + asc 'The colorful version of the legendary game',8d + +********************************************************************* + +AFTA HEX 00FF0F000FFF0F000F00F0000F00FF000F000F00 ; A +AFTB HEX 0FFF0F000FFF0F000FFFF0000F00F0000F00F000 ; B +AFTC HEX 00FF0F000F000F0000FFF0000F0000000F00F000 ; C +AFTD HEX 0FFF0F000F000F000FFFF0000F000F000F00F000 ; D +AFTE HEX 0FFF0F000FFF0F000FFFFF00000000000000FF00 ; E +AFTF HEX 0FFF0F000FFF0F000F00FF000000000000000000 ; F +AFTG HEX 00FF0F000F000F0000FFF0000000FF000F00F000 ; G +AFTH HEX 0F000F000FFF0F000F000F000F00FF000F000F00 ; H +AFTI HEX 0FFF000F000F000F0FFFFF00000000000000FF00 ; I +AFTJ HEX 000F000000000F0000FFFF00F000F000F0000000 ; J +AFTK HEX 0F000F000FFF0F000F000F00F0000000F0000F00 ; K +AFTL HEX 0F000F000F000F000FFF0000000000000000FF00 ; L +AFTM HEX 0F000FF00F0F0F000F000F00FF000F000F000F00 ; M +AFTN HEX 0F000FF00F0F0F000F000F000F000F00FF000F00 ; N +AFTO HEX 00FF0F000F000F0000FFF0000F000F000F00F000 ; O +AFTP HEX 0FFF0F000FFF0F000F00F0000F00F00000000000 ; P +AFTQ HEX 00FF0F000F000F0000FFF0000F000F00F0000F00 ; Q +AFTR HEX 0FFF0F000FFF0F000F00F0000F00F000F0000F00 ; R +AFTS HEX 00FF0F0000FF00000FFFFF000000F0000F00F000 ; S +AFTT HEX 0FFF000F000F000F000FFF000000000000000000 ; T +AFTU HEX 0F000F000F000F0000FF0F000F000F000F00F000 ; U +AFTV HEX 0F000F0000F000F0000F0F000F00F000F0000000 ; V +AFTW HEX 0F000F000F0F0FF00F000F000F000F00FF000F00 ; W +AFTX HEX 0F0000F0000F00F00F000F00F0000000F0000F00 ; X +AFTY HEX 0F000F0000F0000F000F0F000F00F00000000000 ; Y +AFTZ HEX 0FFF0000000F00F00FFFFF00F00000000000FF00 ; Z +AFT0 HEX 00FF0F000F000F0000FFF0000F000F000F00F000 ; 0 +AFT1 HEX 000F00FF000F000F0FFF0000000000000000FF00 ; 1 +AFT2 HEX 0FFF000000FF0F000FFFF0000F00F0000000FF00 ; 2 +AFT3 HEX 0FFF0000000F00000FFFF0000F00F0000F00F000 ; 3 +AFT4 HEX 0F000F000F000FFF00000000F000F000FF00F000 ; 4 +AFT5 HEX 0FFF0F000FFF00000FFFFF000000F0000F00F000 ; 5 +AFT6 HEX 00FF0F000FFF0F0000FFFF000000F0000F00F000 ; 6 +AFT7 HEX 0FFF0000000F00F000F0FF00F000000000000000 ; 7 +AFT8 HEX 00FF0F0000FF0F0000FFF0000F00F0000F00F000 ; 8 +AFT9 HEX 00FF0F0000FF00000FFFF0000F00FF000F00F000 ; 9 +AFTPL HEX 000F000F0FFF000F000F00000000FF0000000000 ; + +AFTMOI HEX 000000000FFF0000000000000000FF0000000000 ; - +AFTET HEX 0F0F00FF0FFF00FF0F0F0F00F000FF00F0000F00 ; * +AFTSL HEX 00000000000F00F00F000F00F000000000000000 ; / +AFTEG HEX 00000FFF00000FFF00000000FF000000FF000000 ; = +AFTSO HEX 00000000000000000FFF0000000000000000FF00 ; _ +AFTPE HEX 000F000F000F0000000F00000000000000000000 ; ! +AFTPI HEX 00FF0F00000F0000000FF0000F00F00000000000 ; ? +AFTSU HEX 00F0000F0000000F00F000000000F00000000000 ; > +AFTIN HEX 0000000F00F0000F0000F000000000000000F000 ; < +AFTPO HEX 000F00F000F000F0000F00000000000000000000 ; ( +AFTPF HEX 000F000000000000000F0000F000F000F0000000 ; ) +AFTDP HEX 0000000F0000000F000000000000000000000000 ; : +AFTPT HEX 0000000000000000000F00000000000000000000 ; . +AFTVI HEX 0000000000000000000F000000000000F0000000 ; , +AFTRO HEX 00FF00F000FF00000000F000F000F00000000000 ; o +AFTGU HEX 00F000F0000000000000F000F000000000000000 ; " +AFTAP HEX 000F000F00000000000000000000000000000000 ; ' +AFTPV HEX 0000000000000000000F0000F0000000F0000000 ; ; +AFTDI HEX 00F00FFF00F00FFF00F0F000FF00F000FF00F000 ; # +AFTDO HEX 00FF0F0F00FF000F0FFFFF000000F0000F00F000 ; $ +AFTAC HEX 000F00F00F00000000000000F0000F0000000000 ; ^ +AFTPC HEX 0FF00FF0000F00F00F000F00F0000000FF00FF00 ; % +AFTSP HEX 0000000000000000000000000000000000000000 ; SPACE +AFTRD HEX 00FF0FFF0FFF0FFF00FFF000FF00FF00FF00F000 ; o +AFTBA HEX 0FF0F0000F0000F0FF00FF00F0F0FF00F000F000 ; SP +AFTFD HEX 000F000F0FFF000F000F0000F000FF00F0000000 ; -> +AFTFG HEX 000F00FF0FFF00FF000F00000000FF0000000000 ; <- +AFTNS HEX 0FFF0FFF0FFF0FFF0FFFFF00FF00FF00FF00FF00 ; NO SE + +AFTADR DA AFTA,AFTB,AFTC,AFTD,AFTE,AFTF,AFTG,AFTH,AFTI,AFTJ,AFTK,AFTL,AFTM,AFTN ; 0-13 + DA AFTO,AFTP,AFTQ,AFTR,AFTS,AFTT,AFTU,AFTV,AFTW,AFTX,AFTY,AFTZ,AFT0 ; 14-26 + DA AFT1,AFT2,AFT3,AFT4,AFT5,AFT6,AFT7,AFT8,AFT9,AFTPL,AFTMOI,AFTET,AFTSL,AFTEG ; 27-40 + DA AFTSO,AFTPE,AFTPI,AFTSU,AFTIN,AFTPO,AFTPF,AFTDP,AFTPT,AFTVI,AFTRO ; 41-51 + DA AFTGU,AFTAP,AFTPV,AFTDI,AFTDO,AFTAC,AFTPC,AFTSP ; 52-59 + DA AFTA,AFTB,AFTC,AFTD,AFTE,AFTF,AFTG,AFTH,AFTI,AFTJ,AFTK,AFTL,AFTM,AFTN ; 60-73 + DA AFTO,AFTP,AFTQ,AFTR,AFTS,AFTT,AFTU,AFTV,AFTW,AFTX,AFTY,AFTZ ; 74-85 + DA AFTRD + +AFTTBL HEX C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DA ; A-Z + HEX B0,B1,B2,B3,B4,B5,B6,B7,B8,B9 ; 0-9 + HEX AB,AD,AA,AF,BD,DF,A1,BF,BE,BC,A8,A9,BA,AE,AC ; +-*/=_!?><():., + HEX DB,A2,A7,BB,A3,A4,DE,A5,A0 ; o"';#$^%SPC + HEX E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FA ; a-z + +**************************** AFFICHAGE TEXT ********************************** + +******** AFFICHE PAGE ************ + +AFTPAG JSR AFTNE ; NETTOY + LDA #$0000 +AFTPAG1 JSR AFTLIG ; AFFICHE 16 LIGNES + INC + CMP #$0010 + BNE AFTPAG1 + RTS + +******** AFFICHE LIGNE ************ + +AFTLIG PHA ; RECOIT DANS A LE NUMERO DE LA LIGNE + ASL + TAX + LDA AFTTADLI,X + STA AFTAE ; OFFSET ADRESSE ECRAN DEBUT LIGNE + LDA AFTTABM,X + STA AFTLIG0+1 ; OFFSET DU CARACTERE DANS SA PAGE + + LDA AFTIND + ASL + TAX + LDA AFTTADPT,X ; OFFSET DE LA PAGE DANS LE TEXTE + CLC +AFTLIG0 ADC #$AAAA + TAY ; OFFSET DU CARACTERE DANS LE TEXTE +AFTLIG1 LDA TEXTEFRD,Y + AND #$00FF + CMP #$008D + BEQ AFTLIG5 ; FIN DE LIGNE DETECTE + STA AFTLIG3+1 + + LDX #$0000 +AFTLIG2 LDA AFTTBL,X + AND #$00FF +AFTLIG3 CMP #$AAAA + BEQ AFTLIG4 ; CARACTERE TROUVE + INX + CPX #$0062 + BNE AFTLIG2 + LDX #$0056 ; PAS TROUVE : ON MET UN BLANC +AFTLIG4 JSR AFTCAR ; AFFICHE CARACTERE + LDA AFTAE ; ADRESSE ECRAN CARACTERE SUIVANT + CLC + ADC #$0003 + STA AFTAE + INY + BRA AFTLIG1 +AFTLIG5 PLA + RTS + +******** AFFICHE CARACTERE ******** + +AFTCAR PHY ; RECOIT DANS X L'INDICE DU CARACTERE + TXA + ASL + TAX + LDA AFTADR,X + STA AFTCAR1+1 + CLC + ADC #$000A + STA AFTCAR3+1 + LDX AFTAE ; 1 ere COLONNE + LDY #$0000 ; +AFTCAR2 LDAL $E12000,X +AFTCAR1 ORA $AAAA,Y + STAL $E12000,X + TXA + CLC + ADC #$00A0 + TAX ; LIGNE SUIVANTE + INY + INY + CPY #$000A + BNE AFTCAR2 + LDX AFTAE ; 2 eme COLONNE + INX + INX + LDY #$0000 +AFTCAR4 LDAL $E12000,X +AFTCAR3 ORA $AAAA,Y + STAL $E12000,X + TXA + CLC + ADC #$00A0 + TAX ; LIGNE SUIVANTE + INY + INY + CPY #$000A + BNE AFTCAR4 + PLY + RTS + +******* NETTOYAGE ******** + +AFTNE LDA #$0064 ; NETTOYAGE DE LA ZONE D'AFFICHAGE + STA CADRX0 + LDA #$0031 + STA CADRY0 + LDA #$012C + STA CADRX1 + LDA #$0091 + STA CADRY1 + JSR CARETAB + RTS + +*************** TABLES, VARIABLES ET FLAGS ****************** + +AFTAE HEX 0000 ; ADRESSE ECRAN ECRITURE +AFTIND HEX 0000 ; INDEX PAGES + +AFTTADPT HEX 0000,2002,4004,6006,8008,A00A,C00C,E00E,0011,2013 + HEX 4015,6017,8019,A01B,C01D,E01F,0022,2024,4026,6028 + +AFTTADLI HEX 731F,3323,F326,B32A,732E,3332,F335,B339,733D,3341,F344,B348,734C,3350,F353,B357 + +AFTTABM HEX 0000,2200,4400,6600,8800,AA00,CC00,EE00,1001,3201,5401,7601,9801,BA01,DC01,FE01 + +****************.. TEXTE ......................***************** + +TEXTEFRD ASC " ",8D + ASC " DOCUMENTATION COGITO ",8D + ASC " ",8D + ASC " (C) 1992 ATREID CONCEPT. ",8D + ASC " ",8D + ASC " ",8D + ASC "CONCEPTION : JEROME CRETAUX ",8D + ASC " ",8D + ASC "GRAPHISMES : O. BAILLY-MAITRE",8D + ASC " ",8D + ASC "MUSIQUE : FREDERIC MOTTE ",8D + ASC " ",8D + ASC "EFFETS SONORES : O. BAILLY-MAITRE",8D + ASC " ",8D + ASC "DOCUMENTATION : T.P. HIBIKI ",8D + ASC " ",8D + + ASC " ",8D + ASC " PRINCIPE DU JEU ",8D + ASC " --------------- ",8D + ASC " ",8D + ASC " LE BUT DU JEU EST DE",8D + ASC "RECONSTITUER UNE FIGURE MELANGEE",8D + ASC "PAR L'ORDINATEUR. UTILISEZ LES",8D + ASC "FLECHES DE CONTROLE POUR DEPLACER",8D + ASC "LES LIGNES OU LES COLONNES. ",8D + ASC " ",8D + ASC " MAIS ATTENTION, PLUS VOUS",8D + ASC "MONTEZ EN NIVEAU, PLUS LE MODE",8D + ASC "DE DEPLACEMENT DES LIGNES ET DES",8D + ASC "COLONNES DEVIENT COMPLEXE, ET,",8D + ASC "BIEN ENTENDU, PLUS LA FIGURE A",8D + ASC "RECONSTITUER EST SOPHISTIQUEE. ",8D + + ASC " ",8D + ASC " DANS COGITO, LE TEMPS N'EST",8D + ASC "PAS LIMITE MAIS IL EST COMPTE.",8D + ASC "VOTRE ENJEU EST DONC DE LE",8D + ASC "REDUIRE AU MINIMUM. IL FAUT NOTER",8D + ASC "QUE LE CHRONOMETRE NE S'ARRETE",8D + ASC "PAS SI VOUS ENTREZ DANS LE",8D + ASC "CONTROL PANEL DU GS PENDANT LE",8D + ASC "JEU. ",8D + ASC " ",8D + ASC " CE JEU N'ETANT PAS ",8D + ASC "FONDAMENTALEMENT UNE COURSE",8D + ASC "CONTRE LA MONTRE, IL EST ",8D + ASC "IMPORTANT QUE VOUS PRENIEZ VOTRE",8D + ASC "TEMPS LA PREMIERE FOIS QUE VOUS",8D + ASC "DECOUVREZ UN TABLEAU POUR ",8D + + ASC " ",8D + ASC "ANALYSER FINEMENT LES ACTIONS ",8D + ASC "DE TOUTES LES FLECHES. ",8D + ASC " ",8D + ASC " UNE FOIS QUE VOUS AUREZ ",8D + ASC "TERMINE UN TABLEAU POUR LA",8D + ASC "PREMIERE FOIS, ESSAYEZ ",8D + ASC "D'AMELIORER VOTRE SCORE EN ",8D + ASC "REDUISANT AUSSI BIEN LE TEMPS",8D + ASC "ECOULE QUE LE NOMBRE DE COUPS",8D + ASC "UTILISES. ",8D + ASC " ",8D + ASC " LE JEU COMPORTE 120 NIVEAUX ",8D + ASC "DE DIFFICULTE CROISSANTE. ",8D + ASC " ",8D + ASC " BON COURAGE ! ",8D + + ASC " ",8D + ASC " LE MENU DE CONFIGURATION ",8D + ASC " ------------------------ ",8D + ASC " ",8D + ASC " L'ACCES AU MENU DEPUIS LE",8D + ASC "JEU S'EFFECTUE SIMPLEMENT EN",8D + ASC "APPUYANT SUR UNE TOUCHE DU",8D + ASC "CLAVIER. ",8D + ASC " ",8D + ASC " * GAME : SI VOUS VOULEZ ",8D + ASC "INTERROMPRE UN JEU EN COURS POUR ",8D + ASC "LE REPRENDRE PLUS TARD, IL VOUS",8D + ASC "SUFFIT D'ENREGISTRER LE JEU",8D + ASC "EN UTILISANT L'OPTION 'SAVE'. ",8D + ASC "VOUS POURREZ LE REPRENDRE DANS",8D + ASC "L'ETAT OU IL ETAIT AVEC 'LOAD'.",8D + + ASC " * MUSIC : VOUS POUVEZ ACTIVER",8D + ASC "OU DESACTIVER LA MUSIQUE DE FOND.",8D + ASC "SI LA MUSIQUE EST DESACTIVEE, ",8D + ASC "VOUS AUREZ DROIT A UN SON A",8D + ASC "CHAQUE DEPLACEMENT D'UNE LIGNE OU",8D + ASC "D'UNE COLONNE. ",8D + ASC " SI TOUTEFOIS VOUS NE VOULEZ",8D + ASC "AUCUN BRUIT, L'ACCES AU CONTROL",8D + ASC "PANEL DU GS RESTE POSSIBLE POUR",8D + ASC "METTRE A ZERO LE VOLUME SONORE",8D + ASC "DU GS. ",8D + ASC " IL FAUT NOTER QUE ",8D + ASC "L'ACTIVATION OU NON DE LA MUSIQUE",8D + ASC "N'A AUCUNE INFLUENCE SUR LE ",8D + ASC "CHRONOMETRE DU JEU. ",8D + ASC " ",8D + + ASC " * GROUND : CETTE OPTION PERMET",8D + ASC "DE CHANGER DE DECOR DE FOND.",8D + ASC "VOUS AVEZ LA POSSIBILITE DE ",8D + ASC "CHOISIR UN DES QUATRE DECORS ",8D + ASC "(HAPPY, LUDY, PLANET OU XENO) OU",8D + ASC "DE LAISSER L'ORDINATEUR CHOISIR",8D + ASC "ALEATOIREMENT UN DECOR DE FOND",8D + ASC "POUR CHAQUE TABLEAU. ",8D + ASC " LE CHOIX DU DECOR DE FOND",8D + ASC "N'A AUCUNE INCIDENCE SUR LA ",8D + ASC "DIFFICULTE DU TABLEAU. ",8D + ASC " ",8D + ASC " * LEVEL : DANS LES VERSIONS",8D + ASC "COMMERCIALES DU JEU (MAC ET PC),",8D + ASC "UN CODE PERMETTAIT D'ACCEDER AUX",8D + ASC "DIFFERENTS NIVEAUX DU JEU. DANS",8D + + ASC "LA VERSION GS, NOUS AVONS DECIDE ",8D + ASC "DE VOUS LAISSER ACCEDER LIBREMENT",8D + ASC "A N'IMPORTE QUEL NIVEAU. ",8D + ASC " VOUS POUVEZ DONC CHOISIR LE",8D + ASC "NIVEAU EN INDIQUANT SON NUMERO. ",8D + ASC " ",8D + ASC " * DOC : VOUS Y ETES !!! TOUT CE",8D + ASC "QUE VOUS AVEZ BESOIN DE SAVOIR",8D + ASC "POUR UTILISER CE LOGICIEL DE LA",8D + ASC "MEILLEURE FACON. ",8D + ASC " ",8D + ASC " * ABOUT : INFORMATIONS DIVERSES",8D + ASC "SUR LES PROGRAMMEURS DE LA",8D + ASC "VERSION APPLE //GS DU JEU. ",8D + ASC " ",8D + ASC " * QUIT : QUITTER LE LOGICIEL. ",8D + + +TEXTEUSD ASC " ",8D + ASC " COGITO DOCUMENTATION ",8D + ASC " ",8D + ASC " (C) 1992 ATREID CONCEPT. ",8D + ASC " ",8D + ASC " ",8D + ASC "CONCEPT : JEROME CRETAUX ",8D + ASC " ",8D + ASC "GRAPHICS : O. BAILLY-MAITRE",8D + ASC " ",8D + ASC "MUSIC : FREDERIC MOTTE ",8D + ASC " ",8D + ASC "SOUND EFFECTS : O. BAILLY-MAITRE",8D + ASC " ",8D + ASC "DOCUMENTATION : T.P. HIBIKI ",8D + ASC " ",8D + + ASC " ",8D + ASC " INTRODUCTION ",8D + ASC " ------------ ",8D + ASC " ",8D + ASC " A FURIOUS CLICKING SOUND ",8D + ASC "THAT DOES NOT QUITE DROWN OUT",8D + ASC "SOFT ENCHANTING MUSIC. PEARL-LIKE",8D + ASC "BALLS SMASH INTO EACH OTHER WITH ",8D + ASC "UNBELIEVABLE SPEED. ",8D + ASC "AND YET, ALREADY, IT IS CALM",8D + ASC "AGAIN. ALONE AGAINST AN EVER ",8D + ASC "CHANGING OPPONENT, YOU WILL HAVE",8D + ASC "TO FIND A WAY TO RECONSTRUCT A",8D + ASC "DIAGRAM THAT HAS BEEN SCRAMBLED",8D + ASC "BY THE COMPUTER. DON'T GET YOUR",8D + ASC "HOPES UP, HOWEVER : ANY VICTORY",8D + + ASC " ",8D + ASC "WILL ONLY BE TEMPORARY, YOUR ",8D + ASC "FREEDOM OF CHOICE WILL CONSTANTLY",8D + ASC "BE CURTAILED, YOUR MOVEMENTS WILL",8D + ASC "BECOME CLUMSY AND CONFUSED, THE",8D + ASC "DIAGRAM WILL BE MORE COMPLEX...",8D + ASC "AND THUS BEGINS, FOR THE NOVICE",8D + ASC "AS FOR THE EXPERT, THE NEVER",8D + ASC "ENDING QUEST FOR THE BOUNDARIES",8D + ASC "OF THE HUMAN SPIRIT... ",8D + ASC " ",8D + ASC " ",8D + ASC " ",8D + ASC " ",8D + ASC " ",8D + ASC " ",8D + + ASC " ",8D + ASC " OVERVIEW ",8D + ASC " -------- ",8D + ASC " ",8D + ASC " THE OBJECTIVE OF THE GAME IS",8D + ASC "TO RECONSTRUCT A DIAGRAM THAT HAS",8D + ASC "BEEN SCRAMBLED BY THE COMPUTER. ",8D + ASC "YOU WILL USE THE CONTROL ARROWS",8D + ASC "THAT SURROUND THE DIAGRAM TO MOVE",8D + ASC "THE ROWS AND COLUMNS. ",8D + ASC " BE CAREFUL, HOWEVER: AS YOU ",8D + ASC "PROGRESS, MOVING THE ROWS AND",8D + ASC "COLUMNS WILL BECOME MORE",8D + ASC "DIFFICULT AND, NATURALLY, THE ",8D + ASC "DIAGRAM ITSELF WILL BECOME MORE",8D + ASC "AND MORE SOPHISTICATED. ",8D + + ASC " ",8D + ASC " THERE IS NO TIME LIMIT, BUT",8D + ASC "THE TIME ELAPSED IS DISPLAYED. ",8D + ASC "YOUR GOAL IS TO RECONSTRUCT THE",8D + ASC "DIAGRAM AS QUICKLY AS POSSIBLE. ",8D + ASC " ",8D + ASC " AS THIS GAME IS FUNDAMENTALLY",8D + ASC "NOT A RACE AGAINST THE CLOCK, WE ",8D + ASC "RECOMMEND THAT YOU TAKE YOUR TIME",8D + ASC "AT THE BEGINNING TO CLOSELY",8D + ASC "ANALYZE THE RESULTS OBTAINED WHEN",8D + ASC "USING THE VARIOUS CONTROL ARROWS.",8D + ASC " ONCE YOU HAVE SUCCESSFULLY",8D + ASC "COMPLETED A DIAGRAM, TRY TO",8D + ASC "IMPROVE YOUR SCORE BY REDUCING",8D + ASC "THE TIME AND NUMBER OF MOVES USED",8D + + ASC " ",8D + ASC " CONFIGURATION PANEL ",8D + ASC " ------------------- ",8D + ASC " ",8D + ASC " TO ACCESS THE PANEL ",8D + ASC "CONFIGURATION FROM THE GAME, JUST",8D + ASC "HIT A KEY OF THE APPLE IIGS",8D + ASC "KEYBOARD. ",8D + ASC " ",8D + ASC " * GAME : IF YOU WANT TO END A",8D + ASC "CURRENT GAME TO COME BACK LATER,",8D + ASC "YOU JUST HAVE TO RECORD IT USING",8D + ASC "THE 'SAVE GAME' OPTION. ",8D + ASC "IF YOU NOW WANT TO LOAD YOUR",8D + ASC "SAVED GAME JUST USE THE",8D + ASC "'LOAD GAME' OPTION. ",8D + + ASC " * MUSIC : YOU CAN ACTIVATE OR",8D + ASC "DESACTIVATE THE MUSIC. ",8D + ASC "IF THE MUSIC IS DESACTIVADED, YOU",8D + ASC "WILL HAVE A SOUND EACH TIME YOU",8D + ASC "MOVE A ROW OR A COLUMN. ",8D + ASC " IF YOU DON'T WANT ANY NOISE",8D + ASC "YOU CAN FREELY ACCESS THE ",8D + ASC "APPLE IIGS CONTROL PANEL DURING",8D + ASC "THE GAME TO MODIFY THE SPEAKER",8D + ASC "VOLUME. ",8D + ASC " ",8D + ASC " * GROUND : THIS OPTION LETS YOU",8D + ASC "CHOOSE THE BACKGROUND PICTURE.",8D + ASC "YOU CAN SELECT ONE FROM THE FOUR",8D + ASC "AVAILABLE (HAPPY, LUDY, PLANET OR",8D + ASC "XENO) OR LET THE COMPUTER ",8D + + ASC "RANDOMLY CHOOSE A NEW BACKGROUND",8D + ASC "PICTURE FOR EACH NEW LEVEL. ",8D + ASC " THE CHOICE OF A BACKGROUND",8D + ASC "PICTURE HAS NO CONNEXION WITH THE",8D + ASC "DIFFICULTY OF THE LEVEL. ",8D + ASC " ",8D + ASC " * LEVEL : IN THE COMMERCIAL",8D + ASC "EDITIONS OF THIS GAME (MAC, PC),",8D + ASC "YOU HAD TO GIVE A CODE TO GAIN",8D + ASC "ACCESS TO A LEVEL. IN THE",8D + ASC "APPLE II GS VERSION, WE HAVE",8D + ASC "DECIDED TO LET YOU ACCESS",8D + ASC "FREELY ANY LEVEL. ",8D + ASC " THEN YOU CAN CHOOSE YOUR",8D + ASC "LEVEL JUST BY GIVING ITS NUMBER. ",8D + ASC " ",8D + + ASC " ",8D + ASC " * DOC : HERE YOU ARE !!!",8D + ASC "EVERYTHING YOU NEED TO KNOW ABOUT",8D + ASC "THIS GAME TO USE IT AS THE BEST",8D + ASC "WAY. ",8D + ASC " ",8D + ASC " * ABOUT : INFORMATIONS ABOUT ",8D + ASC "THE PROGRAMMERS OF THE APPLE //GS",8D + ASC "VERSION OF THE GAME. ",8D + ASC " ",8D + ASC " * QUIT : TO QUIT THE GAME. ",8D + ASC " ",8D + ASC " ",8D + ASC " ",8D + ASC " GOOD LUCK WITH THE 120 LEVELS ! ",8D + ASC " ",8D + +TEXTEFRA ASC " ",8D + ASC " *** *** * * ***** ** * ",8D + ASC " * * * * * * * * * * ",8D + ASC " *** *** * * * **** * ",8D + ASC " * * * * * * * * * * ",8D + ASC " *** * * *** * * * **** ",8D + ASC " ",8D + ASC " *** **** * * * * * **** ",8D + ASC " * * * * * * * * * ",8D + ASC " * * *** * * * * *** ",8D + ASC " * * * * * * * * * ",8D + ASC " *** **** **** *** * * **** ",8D + ASC " ",8D + ASC " ",8D + ASC " SEPTEMBRE 1994 ",8D + ASC " ",8D + + ASC " ",8D + ASC " COGITO VERSION APPLE//GS ",8D + ASC " ",8D + ASC " ",8D + ASC " PROGRAMMATION : BRUTAL DELUXE ",8D + ASC " ",8D + ASC " DESIGN : BRUTAL DELUXE ",8D + ASC " ",8D + ASC "LES GRAPHIQUES ONT ETE CONVERTIS ",8D + ASC " A L'AIDE DE CONVERT 3200, ",8D + ASC " (C) 1993 BRUTAL DELUXE ",8D + ASC " ",8D + ASC " MUSIQUE : TOOL 220 ",8D + ASC " (C) 1991 FTA ",8D + ASC " ",8D + ASC "MERCI A J. CRETAUX POUR SON AIDE.",8D + + ASC " ",8D + ASC " COGITO GS EST ",8D + ASC " ",8D + ASC " - INSTALLABLE SUR DISQUE DUR, ",8D + ASC " ",8D + ASC " - COMPATIBLE GS/OS 5.0 A 6.01,",8D + ASC " ",8D + ASC " - N'OCCUPE QUE 500 KO EN RAM, ",8D + ASC " ",8D + ASC " - UN LOGICIEL EN FREEWARE, ",8D + ASC " ",8D + ASC " - N'EST PAS CENSE FONCTIONNER ",8D + ASC "SOUS DES ENVIRONNEMENTS MULTI ",8D + ASC "TACHES OU MULTI APPLICATIONS ",8D + ASC "(THE MANAGER, SWITCH IT, GNO...).",8D + ASC "A VOS RISQUES ET PERILS... ",8D + + ASC " ",8D + ASC " TOUTES NOS PRODUCTIONS : ",8D + ASC " ",8D + ASC " - BILLE ART ",8D + ASC " ",8D + ASC " - OPALE DEMO ",8D + ASC " ",8D + ASC " - SYSTEME GS/OS 6.01 FRANCAIS",8D + ASC " ",8D + ASC " - TINIES GS ",8D + ASC " ",8D + ASC " - COGITO GS ",8D + ASC " ",8D + ASC " SONT DISPONIBLES AUPRES DU",8D + ASC "GS CLUB. ",8D + ASC " ",8D + + ASC " ",8D + ASC " PROCHAINS LOGICIELS DISPONIBLES ",8D + ASC " ",8D + ASC " - TINIES CONSTRUCTION KIT ",8D + ASC "EDITEZ VOUS MEME DES NOUVEAUX",8D + ASC "TABLEAUX POUR TINIES ET JOUEZ",8D + ASC "AVEC. ",8D + ASC " ",8D + ASC " - CONVERT 3200 ",8D + ASC "UN CONVERTISSEUR GRAPHIQUE. ",8D + ASC " ",8D + ASC " ",8D + ASC "VOUS POUVEZ NOUS CONTACTER SUR",8D + ASC "MINITEL : ",8D + ASC " ",8D + ASC " 3615 RTEL, BAL : BRUTAL DELUXE ",8D + + ASC "UN GRAND COUCOU A NOS AMIS : ",8D + ASC " ",8D + ASC " ACHA, ANTONIO, ARAGORN GS,",8D + ASC "AZEBULON, BABAR, BANDIT II, BARBE",8D + ASC "BLEUE, BILBO BILOBA, J.M BOUILLY,",8D + ASC "BRAINSTORM SOFTWARE, J.A. CANAL,",8D + ASC "CGS, DIZZY, FLATLINER, GHERKIN,",8D + ASC "J.P GOURNAY, GRAND SOT, INDIANA,",8D + ASC "KRYPTON, LACAZE BROTHER, J.C",8D + ASC "LEDUCQ, FRED LEHIDEUX, LO44,",8D + ASC "NIBBLE, OTOMATIC, PERFECT BUGS,",8D + ASC "PILATUS, SAM IIGS, TEASER, TEDY,",8D + ASC "THE WHITE MAN... ",8D + ASC " ",8D + ASC " AINSI QU'AUX NOMBREUX ET FIDELES",8D + ASC "RTELIENS DE LA RUB GS. ",8D + + ASC " NOUS N'OUBLIONS PAS NON PLUS NOS",8D + ASC "CONTACTS A L'ETRANGER : ",8D + ASC " ",8D + ASC " URS 'CODEBURGER', HENRIK GUDAT,",8D + ASC "FRANK M.LIN, JOE KOHN, WILLIAM",8D + ASC "ST PIERRE, KEN POPPLETON, STEVE",8D + ASC "SEBAN, SAM LATELLA... ",8D + ASC " ",8D + ASC " COGITO COMME TOUTES NOS AUTRES",8D + ASC "PRODUCTIONS EST GRATUIT. SI VOUS",8D + ASC "PENSEZ QUE VOUS AURIEZ ACHETE",8D + ASC "CES LOGICIELS S'ILS ETAIENT EN",8D + ASC "VENTE, LA CHOSE QUI NOUS FERAIT",8D + ASC "PLAISIR SERAIT QUE VOUS UTILISIEZ",8D + ASC "L'ARGENT AINSI ECONOMISE EN VOUS",8D + ASC "ABONNANT A DES REVUES EN FRANCAIS",8D + + ASC "QUI PARLENT DU GS. VOICI LEURS",8D + ASC "ADRESSES. ",8D + ASC " ",8D + ASC " LA POMME ILLUSTREE : ",8D + ASC " ",8D + ASC " LA POMME ILLUSTREE ",8D + ASC " 20 IMPASSE SOUS LES PRES ",8D + ASC " 94110 ARCUEIL ",8D + ASC " FRANCE ",8D + ASC " ",8D + ASC " KISS FROM ISRAEL : ",8D + ASC " ",8D + ASC " KPL EDITION ",8D + ASC " PO BOX 2593 ",8D + ASC " NETANYA ",8D + ASC " ISRAEL ",8D + + +TEXTEUSA ASC " ",8D + ASC " *** *** * * ***** ** * ",8D + ASC " * * * * * * * * * * ",8D + ASC " *** *** * * * **** * ",8D + ASC " * * * * * * * * * * ",8D + ASC " *** * * *** * * * **** ",8D + ASC " ",8D + ASC " *** **** * * * * * **** ",8D + ASC " * * * * * * * * * ",8D + ASC " * * *** * * * * *** ",8D + ASC " * * * * * * * * * ",8D + ASC " *** **** **** *** * * **** ",8D + ASC " ",8D + ASC " SEPTEMBER 1994 ",8D + ASC " ",8D + ASC " WE'RE BACK ! ",8D + + ASC " ",8D + ASC " COGITO APPLE//GS VERSION ",8D + ASC " ",8D + ASC " ",8D + ASC " PROGRAMMATION : BRUTAL DELUXE ",8D + ASC " ",8D + ASC " DESIGN : BRUTAL DELUXE ",8D + ASC " ",8D + ASC " GRAPHICS HAVE BEEN CONVERTED ",8D + ASC " USING CONVERT 3200, ",8D + ASC " (C) 1993 BRUTAL DELUXE ",8D + ASC " ",8D + ASC " MUSIC : TOOL 220 ",8D + ASC " (C) 1991 FTA ",8D + ASC " ",8D + ASC "THANKS TO J.CRETAUX FOR HIS HELP.",8D + + ASC " ",8D + ASC " COGITO GS IS ",8D + ASC " ",8D + ASC " - INSTALLABLE ON HARD DRIVE ",8D + ASC " ",8D + ASC " - COMPATIBLE GS/OS 5.0 TO 6.01",8D + ASC " ",8D + ASC " - USE ONLY 500 KB OF MEMORY ",8D + ASC " ",8D + ASC " - A FREEWARE SOFTWARE ",8D + ASC " ",8D + ASC " - NOT SUPPOSED TO WORK UNDER",8D + ASC "MULTI TASKING ENVIRONMENTS OR",8D + ASC "MULTI APPLICATIONS ENVIRONMENTS",8D + ASC "(THE MANAGER, SWITCH IT, GNO...).",8D + ASC "YOU WILL USE IT AT YOUR OWN RISKS",8D + + ASC " ",8D + ASC " ALL OUR PRODUCTIONS : ",8D + ASC " ",8D + ASC " - BILLE ART ",8D + ASC " ",8D + ASC " - TINIES GS ",8D + ASC " ",8D + ASC " - OPALE DEMO ",8D + ASC " ",8D + ASC " - COGITO GS ",8D + ASC " ",8D + ASC " ARE AVAILABLE ON FTP SITES LIKE",8D + ASC "CCOSUN.CALTECH.EDU OR IF YOU HAVE",8D + ASC "SUBSCRIBED TO SHAREWARE SOLUTIONS",8D + ASC "YOU CAN ASK THEM TO JOE KOHN. ",8D + ASC " ",8D + + ASC " OUR NEXT SOFTWARES WILL BE : ",8D + ASC " ",8D + ASC " - TINIES CONSTRUCTION KIT ",8D + ASC "EDIT AND PLAY AT YOUR OWN LEVELS.",8D + ASC " ",8D + ASC " - CONVERT 3200 ",8D + ASC "A 16/256/3200 GRAPHIC CONVERTER ",8D + ASC " ",8D + ASC "YOU CAN JOIN US AT : ",8D + ASC " ",8D + ASC " BRUTAL DELUXE SOFTWARE ",8D + ASC " 11 RUE EMILE FOURCAND ",8D + ASC " 33000 BORDEAUX ",8D + ASC " FRANCE ",8D + ASC " INTERNET : ",8D + ASC " ZARDINI@IXL.U-BORDEAUX.FR ",8D + + ASC " WE WOULD LIKE TO SAY HELLO TO ",8D + ASC "OUR FRIENDS AND PEOPLE WE HAVE",8D + ASC "MET ON INTERNET : ",8D + ASC " ",8D + ASC " JOE KOHN, FRANK M.LIN, MARC SIRA",8D + ASC "PAUL SCHULTZ, NATHAN MATES, DAVID",8D + ASC "ONG TAT-WEE, LIM THYE CHEAN, ",8D + ASC "DANIEL PFARRER, RANDY SHACKELFORD",8D + ASC "PETAR E PUSKARICH, SAM LATELLA,",8D + ASC "KEN RICHARSON, ELIAS KOUTOULAKIS,",8D + ASC "RICHARD KING, TOM WEISHAAR, STEVE",8D + ASC "SEBAN, WILLIAM ST PIERRE, KEN",8D + ASC "POPPLETON, URS 'CODEBURGER', ",8D + ASC "HENRIK GUDAT, IAN SCHMIDT... ",8D + ASC " ",8D + ASC "AND ALL THOSE WE HAVE FORGOTTEN..",8D + + ASC " ",8D + ASC " SPECIAL HELLO TO ALL THE PEOPLE",8D + ASC "WHO HAVE WRITTEN TO US TO TELL US",8D + ASC "THEY HAD LOVED TINIES... ",8D + ASC " ",8D + ASC " BRUTAL DELUXE SUPPORTS THE ",8D + ASC " PHOENIX PROJECT ",8D + ASC " TURBO REZ GRAPHIC CARD ",8D + ASC " DSP CARD ",8D + ASC " ",8D + ASC " ",8D + ASC "BRUTAL DELUXE IS LOOKING FOR ",8D + ASC "GRAPHISTS TO END THE OPALE GAME, ",8D + ASC "JUST HAVE A LOOK TO THE OPALE ",8D + ASC "DEMO FOR MORE INFORMATIONS. ",8D + ASC " ",8D + + ASC " BIG KISSES EVERYWHERE TO ",8D + ASC " CHARLOTTE HORSTMAN (OKLAHOMA), ",8D + ASC "MY PREFERED AMERICAN GIRL... ",8D + ASC " ",8D + ASC " ",8D + ASC " ALL OUR PRODUCTIONS ARE FREE.",8D + ASC "IF YOU THINK YOU HAD BOUGHT ",8D + ASC "THEM IF THEY HAD BEEN SOLD, WE",8D + ASC "WILL BE REALLY VERY HAPPY IF YOU",8D + ASC "COULD USE THE MONEY YOU HAVE KEPT",8D + ASC "TO SUBSCRIBE TO SHAREWARE SOL. II",8D + ASC "NEWSLETTER. IT IS A VERY GOOD",8D + ASC "BI-MONTHLY PAPER. SSII COMES WITH",8D + ASC "A PRO-RATED MONEY BACK GUARANTEE.",8D + ASC " PERHAPS YOU DON'T UNDERSTAND",8D + ASC "THE CONNEXION BETWEEN THE FACT",8D + + ASC "THAT WE SPEND OUR TIME TO PROGRAM",8D + ASC "FREELY AND A NEWSLETTER, BUT IT",8D + ASC "EXISTS...THE SAME APPLE II SPIRIT",8D + ASC " ",8D + ASC " TO CONTACT JOE : ",8D + ASC " ",8D + ASC " SHAREWARE SOLUTIONS II ",8D + ASC " JOE KOHN ",8D + ASC " 166 ALPINE STREET ",8D + ASC " SAN RAFAEL, CA 94901-1008 ",8D + ASC " USA ",8D + ASC " ",8D + ASC "CIS : 76702,565 ",8D + ASC "GENIE : JOE.KOHN ",8D + ASC "INTERNET : JOKO@CRL.COM",8D + ASC "AMERICAN ONLINE : JOKO ",8D + +************************** + +KBD PHA +KBD1 LDAL $00BFFF + BPL KBD1 + STAL $00C010 + PLA + RTS + +FADELINE1 PHX ; FADE OUT LIGNE Acc + PHY + LDY #$0000 +FAD0 ASL + TAX + LDA TABLE,X + CLC + ADC #$2000 + STA FAD5+1 + STA FAD8+1 + STA FAD6+1 + STA FAD9+1 +FAD4 LDX #$009F +FAD5 LDAL $E15E80,X + BIT #$00F0 + BEQ FAD6 + SEC + SBC #$0010 +FAD8 STAL $E15E80,X +FAD6 LDAL $E15E80,X + BIT #$000F + BEQ FAD7 + SEC + SBC #$0001 +FAD9 STAL $E15E80,X +FAD7 DEX + BPL FAD5 + DEY + BPL FAD4 + PLY + PLX + RTS + +FADELINE8 PHX ; FADE LINE Acc + PHY + ASL + TAX + LDA TABLE,X + CLC + ADC #$2000 + STA FAD10+1 + STA FAD12+1 + STA FAD13+1 + LDX #$009F +FAD10 LDAL $E12000,X + AND #$00FF + TAY + LDA TABLE2,Y + AND #$00FF + STA FAD11+1 +FAD12 LDAL $E12000,X + AND #$FF00 +FAD11 ORA #$0000 +FAD13 STAL $E12000,X + DEX + BPL FAD10 + PLY + PLX + RTS + +TRAC1 PHA + PHX + PHY + LDA TRACFLAG + BEQ TRAC10 + STZ TRACFLAG + BRA TRAC11 +TRAC10 STZ LIFLAG + JSR TRACELI ; NETTOYAGE + DEC COOR1Y + DEC COOR1Y + INC COOR2Y + INC COOR2Y + INC LIFLAG + JSR TRACELI ; TRACE + INC TRACFLAG +TRAC11 PLY + PLX + PLA + RTS + +TRAC2 PHA + PHX + PHY + LDA TRACFLAG + BEQ TRAC20 + STZ TRACFLAG + BRA TRAC22 +TRAC20 STZ LIFLAG + JSR TRACELI ; NETTOYAGE + INC COOR1X + INC COOR1X + INC COOR1X + INC COOR1X + INC COOR2Y + INC COOR2Y + INC LIFLAG + JSR TRACELI ; TRACE + INC TRACFLAG +TRAC22 PLY + PLX + PLA + RTS + +TRAC3 PHA + PHX + PHY + LDA TRACFLAG + BEQ TRAC30 + STZ TRACFLAG + BRA TRAC33 +TRAC30 STZ LIFLAG + JSR TRACELI ; NETTOYAGE + INC COOR1X + INC COOR1X + INC COOR1X + INC COOR1X + DEC COOR2X + DEC COOR2X + DEC COOR2X + DEC COOR2X + INC LIFLAG + JSR TRACELI ; TRACE + INC TRACFLAG +TRAC33 PLY + PLX + PLA + RTS + +TRAC4 PHA + PHX + PHY + LDA TRACFLAG + BEQ TRAC40 + STZ TRACFLAG + BRA TRAC44 +TRAC40 STZ LIFLAG + JSR TRACELI ; NETTOYAGE + INC COOR1Y + INC COOR1Y + DEC COOR2X + DEC COOR2X + DEC COOR2X + DEC COOR2X + INC LIFLAG + JSR TRACELI ; TRACE + INC TRACFLAG +TRAC44 PLY + PLX + PLA + RTS + +TRAC5 PHA + PHX + PHY + LDA TRACFLAG + BEQ TRAC50 + STZ TRACFLAG + BRA TRAC55 +TRAC50 STZ LIFLAG + JSR TRACELI ; NETTOYAGE + LDA COOR1Y + CMP #$00C1 + BEQ TRAC51 + INC COOR1Y + INC COOR1Y +TRAC51 DEC COOR2Y + DEC COOR2Y + INC LIFLAG + JSR TRACELI ; TRACE + INC TRACFLAG +TRAC55 PLY + PLX + PLA + RTS + +TRAC6 PHA + PHX + PHY + LDA TRACFLAG + BEQ TRAC60 + STZ TRACFLAG + BRA TRAC66 +TRAC60 STZ LIFLAG + JSR TRACELI ; NETTOYAGE + DEC COOR1X + DEC COOR1X + DEC COOR1X + DEC COOR1X + DEC COOR2Y + DEC COOR2Y + INC LIFLAG + JSR TRACELI ; TRACE + INC TRACFLAG +TRAC66 PLY + PLX + PLA + RTS + +TRACEND PHX + PHY + STZ LIFLAG + JSR TRACELI ; NETTOYAGE + INC LIFLAG + PLY + PLX + RTS + +TRACELI LDA COOR1X ; TRACE LES LIGNES DU CADRE + STA LIX1 + LDA COOR1Y + STA LIY1 + LDA #$00A0 + STA LIX0 + LDA #$0064 + STA LIY0 + JSR LIGNE + + LDA COOR2X + STA LIX1 + LDA COOR2Y + STA LIY1 + LDA #$00A0 + STA LIX0 + LDA #$0064 + STA LIY0 + JSR LIGNE + RTS + +TRACFLAG HEX 0000 + +COOR1X HEX 0000 +COOR1Y HEX 0000 +COOR2X HEX 0000 +COOR2Y HEX 0000 diff --git a/cogito/Cogito.s b/cogito/Cogito.s new file mode 100644 index 0000000..0d6b061 --- /dev/null +++ b/cogito/Cogito.s @@ -0,0 +1,3174 @@ +*--------------------------* +* * +* COGITO * +* * +* Brutal Deluxe * +* * +* Version: 2.0 du 26/08/94 * +*--------------------------* + + mx %00 + + lst off + rel + dsk Cogito.l + + use 4/Int.Macs + use 4/Locator.Macs + use 4/Mem.Macs + use 4/Misc.Macs + use 4/Sound.Macs + use 4/Tool220.Macs + use 4/Util.Macs + +*--- Parametres Page Zero + +Debut = $00 +Arrivee = $04 + +proDOS = $e100a8 + +*-------------------------- +* Initialisations d'entree +*-------------------------- + + phk + plb + + _TLStartUp + pha + _MMStartUp + pla + sta myID + _MTStartUp + _IMStartUp + + sep #$20 + ldal $e0c022 + sta save1 + ldal $e0c029 + sta save2 + ldal $e0c034 + sta save3 + ldal $e0c035 + sta save4 + + lda #$f0 + stal $e0c022 + lda #$00 + stal $e0c034 + stal $e0c035 + rep #$20 + +*--- Libere et compacte la memoire + +okIT1 PushLong #0 + PushLong #$8fffff + PushWord myID + PushWord #%11000000_00000000 + PushLong #0 + _NewHandle + _DisposeHandle + _CompactMem + +*--- Verifie que l'on ait 512ko libres + + PushLong #0 + _FreeMem + pla + pla + cmp #8 ; 8*64ko + bcs okIT2 + brl memERR3 + +okIT2 PushLong #0 ; Demande Ecran Shadowing + PushLong #$8000 + PushWord myID + PushWord #%11000000_00000011 + PushLong #$012000 + _NewHandle + pla + pla + bcc okIT3 + brl memERR3 + +okIT3 PushLong #0 + PushLong #$10000 + PushWord myID + PushWord #%11000000_00011100 + PushLong #0 + _NewHandle + ldx temp + phd + tsc + tcd + ldy #0 + lda [3],y + sta ptrHAPPY,x + ldy #2 + lda [3],y + sta ptrHAPPY+2,x + pld + pla + pla + jsr memERR + inx + inx + inx + inx + stx temp + cpx #4*8 ; 8 bancs + bne okIT3 + + ldx #$7ffe + lda #0 +]lp stal $012000,x + dex + dex + bpl ]lp + + sep #$20 + lda #$c1 + stal $e0c029 + rep #$20 + +*-------------------------- +* Met les pointeurs +*-------------------------- + + lda ptrHAPPY + clc + adc #$8000 + sta ptrLUDY + lda ptrHAPPY+2 + sta ptrLUDY+2 + + lda ptrPLANET + clc + adc #$8000 + sta ptrXENO + lda ptrPLANET+2 + sta ptrXENO+2 + + lda ptrMESSAGE + clc + adc #$8000 + sta ptrSPRITES + lda ptrMESSAGE+2 + sta ptrSPRITES+2 + + lda ptrSUPERMAN + clc + adc #$8000 + sta ptrUNPACK + lda ptrSUPERMAN+2 + sta ptrUNPACK+2 + + lda ptrTOINET + clc + adc #$8000 + sta ptrSOUND1 + lda ptrTOINET+2 + sta ptrSOUND1+2 + +*-------------------------- +* Presentation +*-------------------------- + + lda #pHAPPY + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT4 + brl initOFF +okIT4 lda ptrHAPPY+1 + ldy #$8000 + jsr unPACK + + lda #pLUDY + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT5 + brl initOFF +okIT5 lda ptrLUDY+1 + ldy #$8000 + jsr unPACK + + lda #pPLANET + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT6 + brl initOFF +okIT6 lda ptrPLANET+1 + ldy #$8000 + jsr unPACK + + lda #pXENO + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT7 + brl initOFF +okIT7 lda ptrXENO+1 + ldy #$8000 + jsr unPACK + + lda #pMESSAGE + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT8 + brl initOFF +okIT8 lda ptrMESSAGE+1 + ldy #$8000 + jsr unPACK + + lda #pSPRITES + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT9 + brl initOFF +okIT9 lda ptrSPRITES+1 + ldy #$8000 + jsr unPACK + +*-------------------------- Doc + + ldal $e102e9 ; 0: francais + cmp #$0202 ; 1: autre + beq okDOC + + lda #1 + sta fgDOC + bra okDOC + + asc 'Good luck to find the Easter Eggs in the game...',8d + +*-------------------------- Oliver's presentation + +okDOC lda #pCOGITO + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT10 + brl initOFF +okIT10 lda ptrSOUND2+1 + ldy #$9600 + jsr unPACK + + lda #pTOINET + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT11 + brl initOFF +okIT11 lda ptrTOINET+1 + ldy #$8000 + jsr unPACK + + lda #pSUPERMAN + ldx ptrUNPACK+1 + jsr loadFILE + bcc okIT12 + brl initOFF +okIT12 lda ptrSUPERMAN+1 + ldy #$8000 + jsr unPACK + +*--- Tool 220 and zikmu + + PushWord #220 + PushWord #$0105 + _LoadOneTool + bcs okIT13 + + lda #pMUSIC + ldx ptrMUSIC+1 + jsr loadFILE + bcc okIT14 + +okIT13 lda #1 ; Music is not loaded + sta fgMUSIC + +*--- It's up to you + +okIT14 lda ptrSOUND2+1 + jsr do3200 ; show 3200 picture + + lda ptrTOINET + sta Debut + lda ptrTOINET+2 + sta Debut+2 + ldy #$7ffe +]lp tyx + lda [Debut],y + stal $012000,x + dey + dey + bpl ]lp + + jsr startNT + jsr startZIK + + JSR CADPRES ; OLIVIER *************** + + STAL $00C00F ; ELIMINE UNE TOUCHE + + pha ; Need to be frequently done + _NTUpdateSound + pla + + jsr fadeOUT + +*--- Avant de demarrer le jeu + + lda #pSOUND1 + ldx ptrSOUND1+1 + jsr loadFILE + bcc okIT15 + + lda #1 + sta fgSOUND1 + +okIT15 lda #pSOUND2 + ldx ptrSOUND2+1 + jsr loadFILE + bcc okIT19 + + lda #1 + sta fgSOUND2 + bra okIT19 + + asc 'What are you doing here again?',8D + +*-------------------------- +* Le programme +*-------------------------- + +*--- Debut du jeu niveau 1 + +okIT19 lda ptrSPRITES+1 + sta pntNum5+2 + + sei + PushLong #myVBL + _SetHeartBeat + PushLong #myRAN + _SetHeartBeat + cli + + stz noINTER + + PushWord #2 + _IntSource + +DEBUG lda #1 + sta CurDecor ; Image 'HappyLand' + jsr setDecor + lda #1 + sta Niveau ; Niveau 00 + sta NbCoups + sta fgRANDOM ; mode RANDOM + sta NbCompute + stz ldFlag + +FIRST stz Diabolic ; Initialise flags + jsr DoInit ; Initialise dep/dec/nom + jsr DoDecor ; Calcule le decor + jsr DoDeplacement + jsr DoFleches + +*--- Deplace l'image a l'ecran (sans les palettes) + +SECOND lda ptrDECOR+1 ; Deplace l'image du decor + sta Move+2 + lda ptrDECOR + sta Move+1 + + ldx #$7dfe +Move ldal $012000,x + stal $012000,x + dex + dex + bpl Move + + jsr PutArrows ; Met les fleches + jsr ShowAll ; Affiche le plateau + + lda ptrDECOR+1 ; Montre le decor + ldy #-1 + jsr fadeIN + + lda ldFlag + bne ICI + + stz Temps + stz Temps+2 + stz Temps+4 + stz NbCoups + stz NbCompute + +ICI jsr OpenPanel ; Ouvre le tableau + jsr ahNIVEAU ; Affiche le niveau + jsr ahCOMPCP ; Ah! Le nombre de deplacement + jsr ahMOICP + jsr ahTIME2 + + lda #1 + sta noINTER + +*--- On a demarre, maintenant melange + + lda ldFlag + bne FIFTH + + jsr ComputeIt ; Deplace a l'ecran + +AMEN lda firstENTRY + bne JESUISLA + lda #1 + sta firstENTRY + JMP INITMOUS + +JESUISLA jsr SAUV + lda CurDecor + dec + asl + tax + lda myTable,x + JMP PICT1 + +THIRD sta MyArrow ; Sauve numero de fleche + jsr TestArrow ; Est-ce que ca existe ? + bcc SIXTH + +FIFTH jsr SAUV + jmp SOURIS1 + +SIXTH lda fgWHICH + beq SEVENTH + lda fgSOUND1 + bne SEVENTH + + lda #0 + jsr playSND + +SEVENTH lda NbCoups + inc + sta NbCoups + jsr ahMOICP ; Affiche mes coups + jsr ChoixMelange ; Fait le deplacement + + jsr TestEnd ; Regarde si fin de niveau + bcs FIFTH + +*--- Is sound possible + + lda fgWHICH + beq noSND + + lda fgSOUND2 + bne noSND + + lda #1 + jsr playSND + +*--- Fin de niveau + +noSND stz noINTER + + lda fgRANDOM + beq PRR + + jsr Random + and #3 + inc + sta CurDecor + jsr setDecor + +PRR stz ldFlag + inc Niveau + lda Niveau + cmp #121 + bne NEXT + + JSR JAMAIS ; GAGNE !!! (OPTIMISTE) + lda #1 ; End of game + sta Niveau +NEXT jsr fadeOUT + brl FIRST + + asc 'There is nothing interesting here! Truly!!',8D + +*--- End of game + +keyEND stz noINTER + + sei + PushLong #myRAN + _DelHeartBeat + PushLong #myVBL + _DelHeartBeat + cli + +*--- On quitte le programme + +initOFF ldx #$7ffe + lda #0 +]lp stal $012000,x + dex + dex + bpl ]lp + +initOFF1 sep #$20 + + lda save4 + stal $e0c035 + lda save3 + stal $e0c034 + lda save2 + stal $e0c029 + lda save1 + stal $e0c022 + rep #$20 + + lda fgMUSIC + bne initOFF2 + + _NTStopMusic + _NTShutDown + PushWord #220 + _UnloadOneTool + +initOFF2 _SoundShutDown + + _IMShutDown + _MTShutDown + + PushWord myID + _DisposeAll + _MMShutDown + _TLShutDown + + jsl proDOS + dw $2029 + adrl proQuit + + asc 'Just for U: code 100 for The Tinies is MUADIBU',8D + +*--- Chargement du fichier TEMP + +TEMPload lda #pTEMP + ldx ptrUNPACK+1 + jsr loadFILE + bcs TPload1 + + lda ptrUNPACK + sta $00 + lda ptrUNPACK+2 + sta $02 + + ldy #0 +]lp lda [$00],y + sta Probleme,y + iny + iny + cpy #342 + bne ]lp + + lda #1 + sta ldFlag + sta vivaTOINET + clc + rts +TPload1 stz ldFlag + sec + rts + +*-------------------------- +* Routines melange +*-------------------------- + +ChoixMelange lda WhichDep + + cmp #1 ; Normal + bne melan2 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan2 cmp #2 ; 2 cases dans la meme direction + bne melan3 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + jsr DoScroll + rts + +*--- + +melan3 cmp #3 ; Inversion N/E, S/O + bne melan4 + + lda MyArrow + asl + tax + lda TblMel38,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan4 cmp #4 ; Normal sans fleches + bne melan5 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan5 cmp #5 ; Inversion N/S, E/O + bne melan6 + + lda MyArrow + asl + tax + lda TblMel5,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan6 cmp #6 ; N1=S9, E1=O9 + bne melan7 + + lda MyArrow + asl + tax + lda TblMel67,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan7 cmp #7 ; N1=N1+S9, N2=N2+S8 + bne melan8 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + lda MyArrow + asl + tax + lda TblMel67,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan8 cmp #8 ; N1=N1+E1, S1=S1+O1 + bne melan9 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + lda MyArrow + asl + tax + lda TblMel38,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan9 cmp #9 ; N1=N1+N9, N2=N2+N8 + bne melan10 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + lda MyArrow + asl + tax + lda TblMel9,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan10 cmp #10 ; Manque fleches, sinon comme 8 + bne melan11 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + lda MyArrow + asl + tax + lda TblMel38,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan11 cmp #11 ; N1=N1+N2, O1=O1+O2 + bne melan12 + + lda MyArrow + asl + sta MyColumn + jsr DoScroll + lda MyArrow + asl + tax + lda TblMel11,x + asl + sta MyColumn + jsr DoScroll + rts + +*--- + +melan12 lda MyArrow ; N4=N4+N2, N9=N9+N7 + asl + sta MyColumn + jsr DoScroll + lda MyArrow + asl + tax + lda TblMel12,x + asl + sta MyColumn + jsr DoScroll + rts + + asc 'Nice sunday at Olivier s home: drinking Pepsi, eating Pizza, reading Playboy (US edition) !!!',8D + +*--- Regarde si la fleche X existe + +TestArrow lda MyArrow + asl + tax + lda Fleches2,x + bne TstArr1 + sec ; Fleche n'existe pas + rts +TstArr1 clc ; Fleche existe + rts + +*--- L'ordinateur choisit + +ComputeIt jsr Random + beq ComputeIt + cmp #37 + bcs ComputeIt + dec ; Pour 0-36 + cmp MyArrow + beq ComputeIt + sta MyArrow + + jsr TestArrow ; Fleche existe ? + bcs ComputeIt ; non, si C=1 +komp1 lda NbCompute + inc + sta NbCompute + jsr ahCOMPCP ; Ah! Le nombre de deplacement + jsr ChoixMelange ; Melange + +komp2 lda NbCompute + cmp NbMelange + bne ComputeIt + + jsr TestEnd ; Plateau=Probleme ? + bcc ComputeIt ; C=0, oui, recommence + + lda Diabolic + bne komp3 + rts + +komp3 stz Diabolic ; Re-affiche le plateau + lda #$0001 ; Apres avoir melange suivant Diabolic + sta Arrivee+2 + lda ptrSPRITES+2 + sta Debut+2 + ldx #0 ; Write Big plateau +]lp phx + lda Plateau,x + jsr WriteBig + plx + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- Compare les deux plateaux + +TestEnd ldx #0 +]lp lda Plateau,x ; C=1, c'est le meme + cmp Probleme,x ; C=0, different + bne TstEnd1 + inx + inx + cpx #81*2 + bne ]lp + clc + rts +TstEnd1 sec ; Erreur + rts + +*--- Initialise les donnees de decor, deplacement et nom + +DoInit lda Niveau + dec + asl + tax + lda ChoixDeplace,x + sta WhichDep ; Type de deplacement + lda ChoixDecor,x + sta WhichDecor ; Type de decor pour la creation + + lda CurDecor ; Adresse du decor + dec + asl + tax + lda sprDecor,x + sta AdrDecor + rts + +*--- Prepare le decor + +DoDecor lda ldFlag + bne noDec + + lda WhichDecor + dec + asl + tax + jsr (AdrCalcDec,x) +noDec rts + +*--- Prepare les deplacements + +DoDeplacement lda ldFlag + bne noDep + + lda WhichDep + dec + asl + tax + lda TblDeplacement,x + sta NbMelange + ldx #0 + cmp #500 + bne Dep1 + inx +Dep1 stx Diabolic +noDep rts + +*--- Prepare les fleches suivant le deplacement + +DoFleches lda Niveau + cmp #24 + bcs FlechesA + + ldx #0 ; On deplace sur 9 + lda #9 +]lp sta Fleches,x + inx + inx + cpx #36*2 + bne ]lp + brl FlechesE + +*--- + +FlechesA cmp #48 + bcs FlechesB + + ldx #0 ; On deplace sur 5 + lda #5 +]lp sta Fleches,x + inx + inx + cpx #36*2 + bne ]lp + brl FlechesE + +*--- + +FlechesB cmp #72 + bcs FlechesC + + ldx #0 ; On deplace sur 6 et 4 +]lp lda #6 + sta Fleches,x + sta Fleches+36,x + lda #4 + sta Fleches+18,x + sta Fleches+54,x + inx + inx + cpx #9*2 + bne ]lp + brl FlechesE + +*--- + +FlechesC cmp #99 + bcs FlechesD + + ldx #0 ; On deplace sur 6, 4, 7 et 3 +]lp lda #6 + sta Fleches,x + lda #4 + sta Fleches+18,x + lda #7 + sta Fleches+36,x + lda #3 + sta Fleches+54,x + inx + inx + cpx #9*2 + bne ]lp + + lda #3 + sta Fleches+6 + sta Fleches+8 + sta Fleches+10 + lda #7 + sta Fleches+24 + sta Fleches+26 + sta Fleches+28 + brl FlechesE + +*--- + +FlechesD ldx #0 ; On deplace sur 8 et 3 +]lp lda #8 + sta Fleches,x + sta Fleches+36,x + lda #3 + sta Fleches+18,x + sta Fleches+54,x + inx + inx + cpx #9*2 + bne ]lp + +*--- + +FlechesE lda WhichDep + cmp #4 + beq FlechesG + cmp #10 + beq FlechesG + +FlechesF ldx #0 + lda #1 +]lp sta Fleches2,x + inx + inx + cpx #36*2 + bne ]lp + rts + +FlechesG jsr FlechesF + stz Fleches2+2 ; Inhibe des fleches + stz Fleches2+12 + stz Fleches2+20 + stz Fleches2+22 + stz Fleches2+30 + stz Fleches2+38 + stz Fleches2+48 + stz Fleches2+56 + stz Fleches2+58 + stz Fleches2+66 + rts + + asc 'Special hello to Maria Checa, playmate of the month (Aug.94)',8D + asc 'We love your smile and many more... :-)',8D + +*-------------------------- +* Routines mathematiques +*-------------------------- + +ahCOMPCP lda #'00' + sta StrPtr + sta StrPtr+1 + + PushWord NbCompute + PushLong #StrPtr + PushWord #3 + PushWord #0 + _Int2Dec + + lda CurDecor + dec + asl + tax + lda zeCOMPCP,x + tax + lda #StrPtr + ldy #$640 + jsr printNUM + rts + +*--- Affiche mon nombre de coups + +ahMOICP lda #'00' + sta LgStrPtr + sta LgStrPtr+2 + sta LgStrPtr+4 + sta LgStrPtr+5 + + PushLong NbCoups + PushLong #LgStrPtr + PushWord #7 + PushWord #0 + _Long2Dec + + lda CurDecor + dec + asl + tax + lda zeMOICP,x + tax + lda #LgStrPtr + ldy #$140 + jsr printNUM + rts + +*--- Affiche le niveau + +ahNIVEAU jsr chNIVEAU + + lda CurDecor + dec + asl + tax + lda zeNIVEAU,x + tax + lda #StrPtr + ldy #$640 + jsr printNUM + rts + +chNIVEAU lda #'00' + sta StrPtr + sta StrPtr+1 + + PushWord Niveau + PushLong #StrPtr + PushWord #3 + PushWord #0 + _Int2Dec + rts + +*--- Gestion du temps (interruption VBL) + +ahTIME lda CurDecor ; Si le curseur + dec ; est sur le temps, c'est ici + asl + tax + LDA POSY + CMP PanelY2,x + BPL time ; POSY > Y2 + CMP PanelY1,x + BMI time + + LDA POSX + CMP PanelX2,x + BPL time ; POSX < X2 + CMP PanelX1,x + BMI time + + JSR DESS1 + inc fgTIME ; LE CURSEUR DE LA SOURIS EST SUR LE TEMPS + +time lda Temps+4 + inc + cmp #60 + beq time1 + sta Temps+4 + brl time6 + +time1 stz Temps+4 + lda Temps+2 + inc + cmp #60 + beq time2 + sta Temps+2 + brl time5 + +time2 stz Temps+2 + lda Temps + inc + cmp #60 + beq time3 + sta Temps + bra ahTIME2 +time3 stz Temps + +ahTIME2 lda #'00' + sta StrTime + PushWord Temps + PushLong #StrTime + PushWord #2 + PushWord #0 + _Int2Dec + lda CurDecor + dec + asl + tax + lda zeTEMPS1,x + tax + lda #StrTime + ldy #$140 + jsr printNUM + +time5 lda #'00' + sta StrTime + PushWord Temps+2 + PushLong #StrTime + PushWord #2 + PushWord #0 + _Int2Dec + lda CurDecor + dec + asl + tax + lda zeTEMPS2,x + tax + lda #StrTime + ldy #$140 + jsr printNUM + +time6 lda #'00' + sta StrTime + PushWord Temps+4 + PushLong #StrTime + PushWord #2 + PushWord #0 + _Int2Dec + lda CurDecor + dec + asl + tax + lda zeTEMPS3,x + tax + lda #StrTime + ldy #$140 + jsr printNUM + + lda fgTIME + beq time7 + + stz fgTIME ; LE CURSEUR EST SUR LE TEMPS + JSR SAUV ; SAUVEGARDE LE FOND + JSR TRACE6 ; DESSINE LE POINTEUR + +time7 rts + +*--- Charge le decor + +setDecor lda CurDecor + dec + asl + tax + lda proDecor,x + asl + asl + tax + lda ptrHAPPY,x + sta ptrDECOR + lda ptrHAPPY+2,x + sta ptrDECOR+2 + rts + + asc 'Full Apple IIgs Planete: soon... :-O',8D + +*-------------------------- +* Creation des decors +*-------------------------- + +Decor1 jsr Random ; couleur 1 + beq Decor1 + cmp #7 + bcs Decor1 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB + + ldx #0 ; met le fond + lda colorA +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne ]lp + + lda colorB ; met le motif + sta Plateau+60 + sta Probleme+60 + sta Plateau+62 + sta Probleme+62 + sta Plateau+64 + sta Probleme+64 + sta Plateau+78 + sta Probleme+78 + sta Plateau+80 + sta Probleme+80 + sta Plateau+82 + sta Probleme+82 + sta Plateau+96 + sta Probleme+96 + sta Plateau+98 + sta Probleme+98 + sta Plateau+100 + sta Probleme+100 + rts + +*--- + +Decor2 jsr Random ; couleur 1 + beq Decor2 + cmp #7 + bcs Decor2 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB + + ldx #0 ; met couleur 1 + lda colorA +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #36*2 + bne ]lp + + ldx #36*2 ; met couleur 2 + lda colorB +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- + +Decor3 jsr Random ; couleur 1 + beq Decor3 + cmp #7 + bcs Decor3 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB +]lp jsr Random ; couleur 3 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + cmp colorB + beq ]lp + sta colorC + + ldx #0 ; met le motif +]lp lda colorA + sta Plateau,x + sta Probleme,x + sta Plateau+2,x + sta Probleme+2,x + sta Plateau+4,x + sta Probleme+4,x + lda colorB + sta Plateau+6,x + sta Probleme+6,x + sta Plateau+8,x + sta Probleme+8,x + sta Plateau+10,x + sta Probleme+10,x + lda colorC + sta Plateau+12,x + sta Probleme+12,x + sta Plateau+14,x + sta Probleme+14,x + sta Plateau+16,x + sta Probleme+16,x + txa + clc + adc #9*2 + tax + cpx #81*2 + bne ]lp + rts + +*--- + +Decor4 jsr Random ; couleur 1 + beq Decor4 + cmp #7 + bcs Decor4 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB +]lp jsr Random ; couleur 3 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + cmp colorB + beq ]lp + sta colorC + + ldx #0 ; met le motif 1 + lda colorA +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #27*2 + bne ]lp + + ldx #27*2 ; met le motif 2 + lda colorB +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #54*2 + bne ]lp + + ldx #54*2 ; met le motif 3 + lda colorC +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- Simplification par tableaux deja en memoire + +Decor5 lda #AdrDecor5 + bra DecorA +Decor6 lda #AdrDecor6 + bra DecorA +Decor7 lda #AdrDecor7 + bra DecorA +Decor8 lda #AdrDecor8 + bra DecorA +Decor9 lda #AdrDecor9 + +DecorA sta DecorB+1 + ldx #0 +DecorB lda $ffff,x + sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne DecorB + rts + +*--- + +Decor10 ldx #0 +]lp stz Plateau,x + stz Probleme,x + inx + inx + cpx #81*2 + bne ]lp + + ldx #0 +]lp jsr Random ; Random2 + bne Decor10a + inc +Decor10a cmp #7 + bcs ]lp + + sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- Affiche tous les pions + +ShowAll lda #$0001 + sta Arrivee+2 + lda ptrSPRITES+2 + sta Debut+2 + + ldx #0 +]lp phx + lda Plateau,x + jsr WriteBig + plx + phx + lda Probleme,x + jsr WriteSmall + plx + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- Ouvre le tableau + +OpenPanel ldx #0 ; Commence sprite 0 en 1 +openPAN1 phx + lda CurDecor + dec + asl + tay + lda zePANEL,y + clc + adc #$2000 + sta Panel2+1 + + lda ptrSPRITES+1 + sta Panel1+2 + lda ptrSPRITES + clc + adc zePANEL2,x + sta Panel1+1 + jsr PutPanel + + ldx #1 +]lp jsr nextVBL + jsr nextVBL + dex + bpl ]lp + + plx + inx + inx + cpx #26 + bne openPAN1 + rts + +*--- + +PutPanel ldy #19 +Panel ldx #18 + sep #$20 +Panel1 ldal $012000,x +Panel2 stal $012000,x + dex + bpl Panel1 + rep #$20 + + lda Panel1+1 + clc + adc #$a0 + sta Panel1+1 + lda Panel2+1 + clc + adc #$a0 + sta Panel2+1 + dey + bpl Panel + rts + +*--- Affiche les fleches + +PutArrows lda ptrSPRITES+1 + sta NSpnt4+2 + sta EOpnt4+2 + + ldx #0 ; Au nord +]lp phx + lda Fleches2,x + beq nxtArr1 + lda Fleches,x + ldy #0 + jsr PrintNS +nxtArr1 plx + inx + inx + cpx #18 + bne ]lp + + ldx #18 ; A l'est +]lp phx + lda Fleches2,x + beq nxtArr2 + lda Fleches,x + ldy #0 + jsr PrintEO +nxtArr2 plx + inx + inx + cpx #36 + bne ]lp + + ldx #36 ; Au sud +]lp phx + lda Fleches2,x + beq nxtArr3 + lda Fleches,x + ldy #0 + jsr PrintNS +nxtArr3 plx + inx + inx + cpx #54 + bne ]lp + + ldx #54 ; A l'ouest +]lp phx + lda Fleches2,x + beq nxtArr4 + lda Fleches,x + ldy #0 + jsr PrintEO +nxtArr4 plx + inx + inx + cpx #72 + bne ]lp + + rts + + asc 'Joke of the month: FTA rules... ahahahah',8D + +*--- Affichage ecran des boutons + +PrintNS sty NSpnt3+1 + + lda AdrScrBtn,x ; Adresse ecran des boutons + sta NSpnt5+1 + cpx #18 ; Si au nord, si au sud + bcs NSpnt1 + lda #0 ; on veut sprite 0 + beq NSpnt2 +NSpnt1 lda #8 ; on veut sprite 8 +NSpnt2 clc +NSpnt3 adc #0 + tax + lda sprButtn,x ; Adresse planche de sprites des buttns + clc + adc AdrDecor + clc + adc ptrSPRITES + sta NSpnt4+1 + + ldy #7 +]lp ldx #6 +NSpnt4 ldal $012000,x +NSpnt5 stal $012000,x + dex + dex + bpl NSpnt4 + + lda NSpnt4+1 + clc + adc #$a0 + sta NSpnt4+1 + lda NSpnt5+1 + clc + adc #$a0 + sta NSpnt5+1 + dey + bpl ]lp + rts + +*--- Affichage bouton E/O + +PrintEO sty EOpnt3+1 + + lda AdrScrBtn,x ; Adresse ecran des boutons + sta EOpnt5+1 + cpx #36 ; Si a l'est, si a l'ouest + bcs EOpnt1 + lda #4 ; on veut sprite 4 + bra EOpnt2 +EOpnt1 lda #12 ; on veut sprite 12 +EOpnt2 clc +EOpnt3 adc #0 + tax + lda sprButtn,x ; Adresse planche de sprites des buttns + clc + adc AdrDecor + clc + adc ptrSPRITES + sta EOpnt4+1 + + ldy #13 +]lp ldx #2 +EOpnt4 ldal $012000,x +EOpnt5 stal $012000,x + dex + dex + bpl EOpnt4 + + lda EOpnt4+1 + clc + adc #$a0 + sta EOpnt4+1 + lda EOpnt5+1 + clc + adc #$a0 + sta EOpnt5+1 + dey + bpl ]lp + rts + +*-------------------------- +* Routines scrolls +*-------------------------- + +DoScroll lda MyColumn ; Ma colonne + cmp #18 + bcs scrol1 + brl ScrollNorth +scrol1 cmp #36 + bcs scrol2 + brl ScrollEast +scrol2 cmp #54 + bcs scrol3 + brl ScrollSouth +scrol3 brl ScrollWest + +*--- Scroll plateau haut->bas + +ScrollNorth ldx MyColumn + lda TblPlateau,x + sta MyArrivee + + lda Fleches,x + dec + asl + tax + lda TblPlateau2,x + clc + adc MyArrivee + sta MyDepart + + ldx MyDepart + lda Plateau,x + tay +]lp txa + sec + sbc #18 + tax + lda Plateau,x + sta Plateau+18,x + cpx MyArrivee + bne ]lp + tya + sta Plateau,x + + lda Diabolic + bne noScrN + jsr ScrNorth +noScrN rts + +*--- Scroll plateau droite->gauche + +ScrollEast ldx MyColumn + lda TblPlateau,x + clc + adc #2 + sta MyArrivee + + lda Fleches,x + asl + sta PlaEast1+1 + + lda MyArrivee + sec +PlaEast1 sbc #$0000 + sta MyDepart + + ldx MyDepart + lda Plateau,x + tay +]lp lda Plateau+2,x + sta Plateau,x + inx + inx + cpx MyArrivee + bne ]lp + tya + sta Plateau-2,x + + lda Diabolic + bne noScrE + jsr ScrEast +noScrE rts + +*--- Scroll plateau bas->haut + +ScrollSouth ldx MyColumn + lda TblPlateau,x + sta MyArrivee + + lda Fleches,x + dec + asl + tax + lda TblPlateau2,x + sta PlaSouth1+1 + + lda MyArrivee + sec +PlaSouth1 sbc #$ffff + sta MyDepart + + ldx MyDepart + lda Plateau,x + tay +]lp lda Plateau+18,x + sta Plateau,x + txa + clc + adc #18 + tax + cpx MyArrivee + bne ]lp + tya + sta Plateau,x + + lda Diabolic + bne noScrS + jsr ScrSouth +noScrS rts + +*--- Scroll plateau gauche->droite + +ScrollWest ldx MyColumn + lda TblPlateau,x + sta MyArrivee + + lda Fleches,x + asl + clc + adc MyArrivee + sec + sbc #2 + sta MyDepart + + ldx MyDepart + lda Plateau,x + tay +]lp dex + dex + lda Plateau,x + sta Plateau+2,x + cpx MyArrivee + bne ]lp + tya + sta Plateau,x + + lda Diabolic + bne noScrW + jsr ScrWest +noScrW rts + +*-------------------------- +* Routines scrolls ecran +*-------------------------- + +*--- Scroll plateau haut->bas + +ScrNorth ldx MyArrivee + lda scrBig,x + sta MyScrArr + + lda MyDepart + clc + adc #18 + tax + lda scrBig,x + sec + sbc #$a0 + sta MyScrDep + + ldy #13 +scrN1 ldx MyScrDep + ldal $012000,x + sta Buffer + ldal $012002,x + sta Buffer+2 + ldal $012004,x + sta Buffer+4 + ldal $012006,x + sta Buffer+6 + +]lp txa + sec + sbc #$a0 + tax + ldal $012000,x ; Deplace vers le haut + stal $0120a0,x + ldal $012002,x + stal $0120a2,x + ldal $012004,x + stal $0120a4,x + ldal $012006,x + stal $0120a6,x + cpx MyScrArr + bne ]lp + + ldx MyScrArr + lda Buffer + stal $012000,x + lda Buffer+2 + stal $012002,x + lda Buffer+4 + stal $012004,x + lda Buffer+6 + stal $012006,x + + jsr nextVBL + dey + bpl scrN1 + rts + +*--- Scroll plateau droite->gauche + +ScrEast lda MyArrivee + sec + sbc #2 + tax + lda scrBig,x + clc + adc #7 + sta MyScrArr + + ldx MyDepart + lda scrBig,x + sta MyScrDep + + lda MyScrArr + sec + sbc MyScrDep + sta MyScrLth + + lda #7 + sta CSEtemp + +*--- + +scrE1 lda #$0001 + sta Arrivee+2 + sta Debut+2 + lda #$2000 + clc + adc MyScrDep + sta Arrivee + inc + sta Debut + + ldx #13 +scrE2 sep #$30 + ldy #0 + lda [Arrivee],y + sta Buffer +]lp lda [Debut],y + sta [Arrivee],y + iny + cpy MyScrLth + bne ]lp + lda Buffer + sta [Arrivee],y + + rep #$30 + lda Arrivee + clc + adc #$a0 + sta Arrivee + inc + sta Debut + dex + bpl scrE2 + + jsr nextVBL + dec CSEtemp + bpl scrE1 + rts + +*--- Scroll plateau bas->haut + +ScrSouth lda MyArrivee + clc + adc #18 + tax + lda scrBig,x + sec + sbc #$a0 + sta MyScrArr + + ldx MyDepart + lda scrBig,x + sta MyScrDep + + ldy #13 +scrS1 ldx MyScrDep + ldal $012000,x + sta Buffer + ldal $012002,x + sta Buffer+2 + ldal $012004,x + sta Buffer+4 + ldal $012006,x + sta Buffer+6 + +]lp ldal $0120a0,x ; Deplace vers le haut + stal $012000,x + ldal $0120a2,x + stal $012002,x + ldal $0120a4,x + stal $012004,x + ldal $0120a6,x + stal $012006,x + txa + clc + adc #$a0 + tax + cpx MyScrArr + bne ]lp + + ldx MyScrArr + lda Buffer + stal $012000,x + lda Buffer+2 + stal $012002,x + lda Buffer+4 + stal $012004,x + lda Buffer+6 + stal $012006,x + + jsr nextVBL + dey + bpl scrS1 + rts + +*--- Scroll plateau gauche->droite + +ScrWest ldx MyArrivee + lda scrBig,x + sta MyScrArr + + ldx MyDepart + lda scrBig,x + clc + adc #7 + sta MyScrDep + + lda MyScrDep + sec + sbc MyScrArr + sta MyScrLth + + lda #7 + sta CSEtemp + +*--- + +scrW1 lda #$0001 + sta Arrivee+2 + sta Debut+2 + lda #$2000 + clc + adc MyScrArr + sta Arrivee + dec + sta Debut + + ldx #13 +scrW2 sep #$30 + ldy MyScrLth + lda [Arrivee],y + sta Buffer +]lp lda [Debut],y + sta [Arrivee],y + dey + bpl ]lp + iny + lda Buffer + sta [Arrivee],y + + rep #$30 + lda Arrivee + clc + adc #$a0 + sta Arrivee + dec + sta Debut + dex + bpl scrW2 + + jsr nextVBL + dec CSEtemp + bpl scrW1 + rts + +*-------------------------- +* Sprites routines +*-------------------------- + +WriteBig dec + asl ; Calcule adresse du sprite big + tay + lda sprBig,y + clc + adc AdrDecor + clc + adc ptrSPRITES + sta Debut + + lda scrBig,x ; Calcule adresse arrivee + clc + adc #$2000 + sta Arrivee + + ldx #$000d +]lp ldy #0 + lda [Debut],y ; Arriv: destination + sta [Arrivee],y ; Debut: source + iny + iny + lda [Debut],y + sta [Arrivee],y + iny + iny + lda [Debut],y + sta [Arrivee],y + iny + iny + lda [Debut],y + sta [Arrivee],y + + lda Debut + clc + adc #$a0 + sta Debut + + lda Arrivee + clc + adc #$a0 + sta Arrivee + + dex + bpl ]lp + rts + +*--- Affiche un petit sprite + +WriteSmall dec + asl ; Calcule adresse du sprite small + tay + lda sprSmall,y + clc + adc AdrDecor + clc + adc ptrSPRITES + sta Debut + + lda scrSmall,x ; Calcule adresse arrivee + clc + adc #$2000 ; $2140 + sta Arrivee + + ldx #$0006 +]lp ldy #0 + lda [Debut],y ; Arriv: destination + sta [Arrivee],y ; Debut: source + iny + iny + lda [Debut],y + sta [Arrivee],y + + lda Debut + clc + adc #$a0 + sta Debut + + lda Arrivee + clc + adc #$a0 + sta Arrivee + + dex + bpl ]lp + rts + + asc 'BIG Shit to Yoshi, you, little lamer',8D + asc 'Do something for the IIgs before you criticize us :-D',8D + +*-------------------------- +* Routines sonores +*-------------------------- + +startNT tdc + clc + adc #$100 + pha + _NTStartUp + rts + +startZIK PushLong ptrMUSIC + _NTInitMusic + _NTLaunchMusic + rts + +stopZIK _NTStopMusic + rts + +stopNT _NTStopMusic + _NTShutDown + rts + +*--- + +startSND tdc + clc + adc #$0100 + pha + _SoundStartUp + rts + +playSND cmp #1 + beq playEND + + ldx ptrSOUND1 + ldy ptrSOUND1+2 + lda #$28 + bra playZEN + +playEND ldx ptrSOUND2 + ldy ptrSOUND2+2 + lda #$eb + +playZEN stx pZIKptr + sty pZIKptr+2 + sta pZIKptr+4 + + PushWord #%01111111_11111111 + _FFStopSound + PushWord #$0201 + PushLong #pZIKptr + _FFStartSound + rts + +stopSND _SoundShutDown + rts + +pZIKptr ds 4 + ds 2 + dw $1b7 + dw $8000 + dw $6 + ds 4 + dw $ff + +*-------------------------- +* Routines gs/os +*-------------------------- + +loadFILE sta proOpen+4 + stx proRead+5 + +loadFILE1 jsl proDOS + dw $2010 + adrl proOpen + bcs loadERR + lda proOpen+2 + sta proGetEof+2 + sta proRead+2 + + jsl proDOS + dw $2019 + adrl proGetEof + lda proGetEof+4 + sta sizeEOF + sta proRead+8 + lda proGetEof+6 + sta proRead+10 + + jsl proDOS + dw $2012 + adrl proRead + bcs loadERR + +loadFILE2 jsl proDOS + dw $2014 + adrl proClose + clc + rts + +loadERR jsr loadFILE2 + nop + nop + + PushWord #0 + PushLong #proSTR1 + PushLong #proSTR2 + PushLong #proSTR3 + PushLong #proSTR4 + _TLTextMountVolume + pla + cmp #1 + bne loadERR1 + brl loadFILE1 +loadERR1 sec + rts + +*--- + +saveFILE jsl proDOS + dw $2005 + adrl proInfo + + jsl proDOS + dw $2002 + adrl proKill + + jsl proDOS + dw $2001 + adrl proCreate + bcs saveERR + + lda #pTEMP + sta proOpen+4 + lda #^pTEMP + sta proOpen+6 + + jsl proDOS + dw $2010 + adrl proOpen + + lda proOpen+2 + sta proWrite+2 + sta proClose+2 + + jsl proDOS + dw $2013 + adrl proWrite + +saveFILE2 jsl proDOS + dw $2014 + adrl proClose + + rts + +saveERR PushWord #0 + PushLong #proSTR11 + PushLong #proSTR2 + PushLong #proSTR31 + PushLong #proSTR41 + _TLTextMountVolume + pla + cmp #1 + bne saveFILE2 + brl saveFILE + + asc 'Whose turn is it now??',8D + +*-------------------------- +* Routines diverses +*-------------------------- + +*--- Erreur de memoire + +memERR bcs memERR1 ; Erreur de memoire + rts +memERR1 PushWord #0 + PushLong #memSTR1 + PushLong #memSTR2 + PushLong #proSTR3 + PushLong #proSTR4 + _TLTextMountVolume + pla +memERR2 jmp initOFF + +memERR3 lda #$6060 + sta memERR2 + jsr memERR1 + brl initOFF1 + +*--- Attend une synchro ecran + +nextVBL lda #150 + jsr waitSPOT + jsr waitVBL + rts + +waitSPOT lsr + sta waitSPOT2+1 +waitSPOT1 ldal $e0c02e + and #$7f +waitSPOT2 cmp #150 + blt waitSPOT1 + cmp #100 + bge waitSPOT1 + rts + +waitVBL ldal $e0c019 + and #$80 + beq waitVBL + rts + +*--- unPACK un fichier + +unPACK sta decPIC+1 + + lda ptrUNPACK+1 + sta decBUF+1 + sty decSIZ + PushWord #$0000 + PushLong decBUF + PushWord sizeEOF + PushLong #decPIC + PushLong #decSIZ + _UnPackBytes + pla + rts + +*--- Genere un nombre aleatoire + +Random ldal $e0c02e + xba + clc + adc VBLCounter0 + sta VBLCounter0 + and #$ff + rts + +*--- Attend A secondes + +nowWait dec + tax + lda #0 +]lp clc + adc #60 + cpx #0 + beq Wait1 + dex + bra ]lp +Wait1 pha + jsr waitVBL + bcc Wait2 +]lp ldal $e0c019 + and #$80 + bne ]lp + pla + dec + bne Wait1 + sec + rts +Wait2 plx + clc + rts + +*-------------------------- +* Interruption VBL +*-------------------------- + +myVBL ds 4 +VBLcnt da 60 + da $a55a + + phb + phk + plb + rep #$30 + + lda #60 + sta VBLcnt + lda noINTER + beq noVBL + jsr ahTIME + +noVBL sep #$30 + plb + clc + rtl + + mx %00 ; A laisser pour avoir suite en 16 bits + +*--- + +myRAN ds 4 ;link +RANcnt da 1 ;count + da $a55a ;signature + + phb + phk + plb + rep #$30 + + inc VBLCounter0 + + lda #1 + sta RANcnt + sep #$30 + plb + clc + rtl + + mx %00 + +*-------------------------- +* Routines graphiques +*-------------------------- + +*--- Affiche une chaine de nombres (petits caracteres) + +printNUM sta pntNum1+1 + txa + sta pntNum4+1 + sty pntNum3+1 + +pntNum1 lda $ffff ; Prend caractere + and #$00ff + bne pntNum2 + rts + +pntNum2 cmp #$20 + bne pntNum2a + lda #'0' +pntNum2a sec + sbc #'0' + asl + tax ; Adresse du caractere + lda sprNum,x + sta pntNum3A+1 + lda CurDecor ; Rajoute adresse decor + dec + asl + tax + lda sprDecor,x + clc + adc ptrSPRITES + clc +pntNum3 adc #$ffff + clc +pntNum3A adc #$ffff + sta pntNum5+1 + +pntNum4 lda #$ffff + clc + adc #$2000 ; +$2000, debut d'ecran + sta pntNum6+1 + inc pntNum1+1 + + ldy #4 + ldx #0 +pntNum5 ldal $012000,x +pntNum6 stal $012000,x + + lda pntNum5+1 + clc + adc #$a0 + sta pntNum5+1 + lda pntNum6+1 + clc + adc #$a0 + sta pntNum6+1 + dey + bpl pntNum5 + + lda pntNum4+1 + clc + adc #2 + sta pntNum4+1 + brl pntNum1 + +*--- fade in + +fadeIN sta fadeIN1+2 + clc + adc #$007e + sta fadeIN5+2 + sta fadeIN7+2 + sta fadeIN9+2 + cpy #-1 + beq fadeIN2 + + ldx #$7dfe +fadeIN1 ldal $062000,x + stal $012000,x + dex + dex + bpl fadeIN1 + +fadeIN2 ldy #$000f +fadeIN3 ldx #$01fe +fadeIN4 ldal $019e00,x + and #$000f + sta temp +fadeIN5 ldal $069e00,x + and #$000f + cmp temp + beq fadeIN6 + ldal $019e00,x + clc + adc #$0001 + stal $019e00,x +fadeIN6 ldal $019e00,x + and #$00f0 + sta temp +fadeIN7 ldal $069e00,x + and #$00f0 + cmp temp + beq fadeIN8 + ldal $019e00,x + clc + adc #$0010 + stal $019e00,x +fadeIN8 ldal $019e00,x + and #$0f00 + sta temp +fadeIN9 ldal $069e00,x + and #$0f00 + cmp temp + beq fadeIN10 + ldal $019e00,x + clc + adc #$0100 + stal $019e00,x + +fadeIN10 dex + dex + bpl fadeIN4 + jsr nextVBL + dey + bpl fadeIN3 + rts + +*--- + +fadeOUT ldy #$000f +fadeOUT1 ldx #$01fe +fadeOUT2 ldal $019e00,x + and #$000f + beq fadeOUT3 + ldal $019e00,x + sec + sbc #$0001 + stal $019e00,x +fadeOUT3 ldal $019e00,x + and #$00f0 + beq fadeOUT4 + ldal $019e00,x + sec + sbc #$0010 + stal $019e00,x +fadeOUT4 ldal $019e00,x + and #$0f00 + beq fadeOUT5 + ldal $019e00,x + sec + sbc #$0100 + stal $019e00,x + +fadeOUT5 dex + dex + bpl fadeOUT2 + jsr nextVBL + dey + bpl fadeOUT1 + + ldx #$7ffe + lda #$0000 +]lp stal $012000,x + dex + dex + bpl ]lp + rts + +*-------------------------- Routine 3200 + +do3200 stz Debut + stz Debut+2 + sta Debut+1 + + sep #$20 + lda #$1e + stal $e0c035 + rep #$20 + + ldx #$7ffe + lda #0 +]lp stal $012000,x + stal $e12000,x + dex + dex + bpl ]lp + + ldy #$7d00 + ldx #0 +]lp lda [Debut],y + stal $012000,x + iny + iny + inx + inx + cpx #$1900 + bne ]lp + + sep #$20 + ldx #$00 +do32001 lda #$0f +]lp stal $019d00,x + stal $e19d00,x + inx + cpx #$c8 + beq do32002 + dec + bpl ]lp + bra do32001 + +do32002 lda #0 + stal $e0c035 + + rep #$20 + + ldy #$7cfe +]lp tyx + lda [Debut],y + stal $e12000,x + dey + dey + bpl ]lp + + phd + tsc + sta mySTACK + + sei + + stz temp + +*--- Main routine 3200 + + ldal $e0c068 + ora #$30 + stal $e0c068 + +do32003 ldy #0 + lda #$1f00 + tcd + +do32004 ldal $e0c02e + and #$ff + cmp affTBL,y + bne do32004 + + iny + iny + + lda #$9fff + tcs + tdc + clc + adc #$0100 + tcd + +]affPOS1 = $00 + lup $80 + pei ]affPOS1 +]affPOS1 = ]affPOS1+2 + --^ + + tdc + clc + adc #$0100 + tcd + +]affPOS1 = $00 + lup $80 + pei ]affPOS1 +]affPOS1 = ]affPOS1+2 + --^ + + cpy #$1a + beq do32005 + brl do32004 + +do32005 lda temp + inc + sta temp + cmp #150 + beq do32006 + brl do32003 + +do32006 ldal $e0c068 + and #$cf + stal $e0c068 + +*--- End of routine + + cli + + lda mySTACK + tcs + pld + phk + plb + rts + +*-------------------------- Olivier's place + + put Cogito.Main + put Cogito.Bout + +*-------------------------- +* All the datas +*-------------------------- + +*--- Parametres du jeu + +Probleme ds 162 +Plateau ds 162 + +Niveau ds 2 +NbCoups ds 4 +NbCompute ds 2 +Temps ds 6 + +CurDecor ds 2 + + hex 8d8d + asc '------------- Cogito -------------',8d + asc 'Programme original: Jerome Cretaux',8d + asc 'Version Apple //gs: Antoine Vignau',8d + asc ' Olivier Zardini',8d + asc '----------- 26 08 1994 -----------',8d,8d + +*--- Tables des adresses des datas + +AdrCalcDec da Decor1,Decor2,Decor3,Decor4,Decor5 + da Decor6,Decor7,Decor8,Decor9,Decor10 + +*--- Adresses des sprites + +sprDecor da $0000,$1900,$3200,$4b00 + +sprBig da $0b41,$0b4a,$0b53,$0b5c,$0b65,$0b6e +sprSmall da $0b77,$0b7c,$0b81,$0b86,$0b8b,$0b90 + +sprButtn da $0141,$014a + da $0153,$015c + da $0165,$016e + da $0177,$0180 + +sprNum da $49,$4c,$4f,$52,$55,$58,$5b,$5e,$61,$64 + +*--- Correspondance de tables + +myTable dw 2,4,1,3 + +firstENTRY ds 2 + +*--- Adresses ecrans + +scrBig da $172a,$1732,$173a,$1742,$174a,$1752,$175a,$1762,$176a + da $1fea,$1ff2,$1ffa,$2002,$200a,$2012,$201a,$2022,$202a + da $28aa,$28b2,$28ba,$28c2,$28ca,$28d2,$28da,$28e2,$28ea + da $316a,$3172,$317a,$3182,$318a,$3192,$319a,$31a2,$31aa + da $3a2a,$3a32,$3a3a,$3a42,$3a4a,$3a52,$3a5a,$3a62,$3a6a + da $42ea,$42f2,$42fa,$4302,$430a,$4312,$431a,$4322,$432a + da $4baa,$4bb2,$4bba,$4bc2,$4bca,$4bd2,$4bda,$4be2,$4bea + da $546a,$5472,$547a,$5482,$548a,$5492,$549a,$54a2,$54aa + da $5d2a,$5d32,$5d3a,$5d42,$5d4a,$5d52,$5d5a,$5d62,$5d6a + da $65ea,$65f2,$65fa,$6602,$660a,$6612,$661a,$6622,$662a + da $6eaa,$6eb2,$6eba,$6ec2,$6eca,$6ed2,$6eda,$6ee2,$6eea + +scrSmall da $5432,$5436,$543a,$543e,$5442,$5446,$544a,$544e,$5452 + da $5892,$5896,$589a,$589e,$58a2,$58a6,$58aa,$58ae,$58b2 + da $5cf2,$5cf6,$5cfa,$5cfe,$5d02,$5d06,$5d0a,$5d0e,$5d12 + da $6152,$6156,$615a,$615e,$6162,$6166,$616a,$616e,$6172 + da $65b2,$65b6,$65ba,$65be,$65c2,$65c6,$65ca,$65ce,$65d2 + da $6a12,$6a16,$6a1a,$6a1e,$6a22,$6a26,$6a2a,$6a2e,$6a32 + da $6e72,$6e76,$6e7a,$6e7e,$6e82,$6e86,$6e8a,$6e8e,$6e92 + da $72d2,$72d6,$72da,$72de,$72e2,$72e6,$72ea,$72ee,$72f2 + da $7732,$7736,$773a,$773e,$7742,$7746,$774a,$774e,$7752 + +*--- Adresses messages + +AdrScrBtn da $30ea,$30f2,$30fa,$3102,$310a,$3112,$311a,$3122,$312a + da $3773,$4033,$48f3,$51b3,$5a73,$6333,$6bf3,$74b3,$7d73 + da $872a,$8732,$873a,$8742,$874a,$8752,$875a,$8762,$876a + da $3725,$3fe5,$48a5,$5165,$5a25,$62e5,$6ba5,$7465,$7d25 + +*--- Adresses pour les donnees du tableau + +zePANEL da $0bc8,$0202,$2f58,$45d2 +zePANEL2 da $026b,$116b,$1fcb,$2e2b,$3c8b,$4aeb,$594b,$67ab + da $0254,$1154,$1fb4,$2e14,$3c74 +zeTEMPS1 da $0c6b,$02a5,$2ffb,$4675 +zeTEMPS2 da $0c70,$02aa,$3000,$467a +zeTEMPS3 da $0c75,$02af,$3005,$467f +zeNIVEAU da $1029,$0663,$33b9,$4a33 +zeCOMPCP da $1035,$066f,$33c5,$4a3f +zeMOICP da $13eb,$0a25,$377b,$4df5 + +*--- Couleurs + +colorA ds 2 +colorB ds 2 +colorC ds 2 + +*--- Pour les textes + +String asc " ",00 +LgStrPtr asc '1234567',00 +StrPtr asc '123',00 +StrTime asc '12',00 + +CSEtemp ds 2 + +*--- Pour deplacements + +MyArrow ds 2 +MyColumn ds 2 +MyDepart ds 2 +MyArrivee ds 2 +MyScrDep ds 2 +MyScrArr ds 2 +MyScrLth ds 2 + +Buffer ds 8 + +WhichDep ds 2 +WhichDecor ds 2 +WhichName ds 2 +AdrDecor ds 2 +NbMelange ds 2 +Melange ds 2 + +noINTER ds 2 +fgTIME ds 2 +ldFlag ds 2 +vivaTOINET ds 2 +Diabolic ds 2 + +fgMUSIC ds 2 +fgSOUND1 ds 2 +fgSOUND2 ds 2 +fgWHICH ds 2 ; 0: NT, 1: Sound Tool Set +fgDOC ds 2 ; 0: french, 1: other +fgRANDOM ds 2 + +*--- Messages + +memSTR1 str 'Can'27't allocate (screen) memory' +memSTR2 str 'Press a key to quit.' + +proSTR1 str 'Can'27't load file' +proSTR11 str 'Can'27't save file' +proSTR2 str 'Do what now ?' +proSTR3 str '[RET] Continue' +proSTR31 str '[RET] Retry' +proSTR4 str '[ESC] Quit' +proSTR41 str '[ESC] Cancel' + +*--- Prodos + +proQuit dw 2 + ds 4 + ds 2 + +proOpen dw 2 + ds 2 + adrl pCOGITO + +proGetEof dw 2 + ds 2 + ds 4 + +proRead dw 4 + ds 2 + ds 4 + ds 4 + ds 4 + +proClose dw 1 + ds 2 + +proCreate dw 7 + adrl pTEMP ; Pathname + dw $e3 ; AccessCode + dw $5a ; FileType + ds 4 ; AuxType + dw $02 ; Type d'enregistrement + adrl 340 ; Data segment + ds 4 ; Resource segment + +proKill dw 1 + adrl pTEMP ; Pathname + +proInfo dw 4 + adrl pTEMP ; Pathname + dw $e3 ; AccessCode + dw $5a ; FileType + ds 4 ; AuxType + +proWrite dw 5 + ds 2 ; Id + adrl Probleme ; Where + adrl 340 ; Length + ds 4 ; Written + ds 2 + +sizeEOF ds 2 + +*--- Nom des fichiers + +pCOGITO strl '1/Cogito.Datas/Cogito' +pTOINET strl '1/Cogito.Datas/Toinet' +pSUPERMAN strl '1/Cogito.Datas/Superman' + +pMESSAGE strl '1/Cogito.Datas/Messages' +pSPRITES strl '1/Cogito.Datas/Sprites' +pHAPPY strl '1/Cogito.Datas/Happyland' +pLUDY strl '1/Cogito.Datas/Ludyland' +pPLANET strl '1/Cogito.Datas/Planetlast' +pXENO strl '1/Cogito.Datas/Xenolast' +pTEMP strl '1/Cogito.Datas/Temp' + +pSOUND1 strl '1/Cogito.Datas/Sound.1' +pSOUND2 strl '1/Cogito.Datas/Sound.2' +pMUSIC strl '1/Cogito.Datas/Music' + +*--- + +PanelX1 HEX 0E01,4200,EE00,E200 +PanelX2 HEX 3201,6600,1201,0601 +PanelY1 HEX 0C00,0000,4600,6A00 +PanelY2 HEX 1800,0900,5100,7500 + +*--- Memoire + +myID ds 2 +mySTACK ds 2 + +proDecor dw 8,9,0,1 +ptrDECOR ds 4 + +ptrHAPPY ds 4 +ptrPLANET ds 4 +ptrMESSAGE ds 4 +ptrSUPERMAN ds 4 +ptrTOINET ds 4 +ptrSOUND2 ds 4 +ptrMUSIC ds 4 + ds 4 + +ptrLUDY ds 4 +ptrXENO ds 4 +ptrSPRITES ds 4 +ptrUNPACK ds 4 +ptrSOUND1 ds 4 + +save1 ds 1 +save2 ds 1 +save3 ds 1 +save4 ds 1 + +VBLCounter0 ds 2 + +affTBL dw $e4,$84,$8c,$94,$9c,$a4,$ac + dw $b4,$bc,$c4,$cc,$d4,$dc + +*--- Decompactage + +decBUF adrl $00002000 +decPIC adrl $00060000 +decSIZ dw $8000 +temp ds 2 + +*--- Fleches + +Fleches ds 72 + +Fleches2 ds 72 + +*--- Tableau + +TblPlateau da 0,2,4,6,8,10,12,14,16 + da 16,34,52,70,88,106,124,142,160 + da 144,146,148,150,152,154,156,158,160 + +TblPlateau2 da 0,18,36,54,72,90,108,126,144 + +*--- Tables pour le choix des deplacements + +TblDeplacement da 35,35,80,60,80,60,60,60,35,500,35,30 + +TblMel38 da 9,10,11,12,13,14,15,16,17 + da 0,1,2,3,4,5,6,7,8 + da 27,28,29,30,31,32,33,34,35 + da 18,19,20,21,22,23,24,25,26 + +TblMel5 da 18,19,20,21,22,23,24,25,26 + da 27,28,29,30,31,32,33,34,35 + da 0,1,2,3,4,5,6,7,8 + da 9,10,11,12,13,14,15,16,17 + +TblMel67 da 26,25,24,23,22,21,20,19,18 + da 35,34,33,32,31,30,29,28,27 + da 8,7,6,5,4,3,2,1,0 + da 17,16,15,14,13,12,11,10,9 + +TblMel9 da 8,7,6,5,4,3,2,1,0 + da 17,16,15,14,13,12,11,10,9 + da 26,25,24,23,22,21,20,19,18 + da 35,34,33,32,31,30,29,28,27 + +TblMel11 da 1,2,3,4,5,6,7,8,0 + da 10,11,12,13,14,15,16,17,9 + da 19,20,21,22,23,24,25,26,18 + da 28,29,30,31,32,33,34,35,27 + +TblMel12 da 7,8,0,1,2,3,4,5,6 + da 16,17,9,10,11,12,13,14,15 + da 25,26,18,19,20,21,22,23,24 + da 34,35,27,28,29,30,31,32,33 + +*--- Correspondance niveau/deplacement + +ChoixDeplace da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + +ChoixDecor da 1,1,1,1,1,1,1,1,1,1,1,1 + da 2,2,2,2,2,2,2,2,2,2,2,2 + da 3,3,3,3,3,3,3,3,3,3,3,3 + da 4,4,4,4,4,4,4,4,4,4,4,4 + da 5,5,5,5,5,5,5,5,5,5,5,5 + da 6,6,6,6,6,6,6,6,6,6,6,6 + da 7,7,7,7,7,7,7,7,7,7,7,7 + da 8,8,8,8,8,8,8,8,8,8,8,8 + da 9,9,9,9,9,9,9,9,9,9,9,9 + da 10,10,10,10,10,10,10,10,10,10,10,10 + +*--- + +AdrDecor5 da 1,1,1,1,1,1,1,1,1 + da 1,2,2,2,6,3,3,3,1 + da 1,2,2,2,6,3,3,3,1 + da 1,2,2,2,6,3,3,3,1 + da 1,6,6,6,6,6,6,6,1 + da 1,4,4,4,6,5,5,5,1 + da 1,4,4,4,6,5,5,5,1 + da 1,4,4,4,6,5,5,5,1 + da 1,1,1,1,1,1,1,1,1 + +AdrDecor6 da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + +AdrDecor7 da 2,4,4,6,5,6,4,4,2 + da 4,2,4,6,5,6,4,2,4 + da 4,4,2,6,3,6,2,4,4 + da 6,6,6,2,1,2,6,6,6 + da 5,5,3,1,2,1,3,5,5 + da 6,6,6,2,1,2,6,6,6 + da 4,4,2,6,3,6,2,4,4 + da 4,2,4,6,5,6,4,2,4 + da 2,4,4,6,5,6,4,4,2 + +AdrDecor8 da 2,2,2,5,5,5,4,4,4 + da 2,2,2,5,5,5,4,4,4 + da 2,2,2,5,5,5,4,4,4 + da 3,3,3,6,6,6,3,3,3 + da 3,3,3,6,6,6,3,3,3 + da 3,3,3,6,6,6,3,3,3 + da 4,4,4,1,1,1,2,2,2 + da 4,4,4,1,1,1,2,2,2 + da 4,4,4,1,1,1,2,2,2 + +AdrDecor9 da 1,1,1,1,1,1,1,1,1 + da 3,1,1,1,1,1,1,1,4 + da 3,3,6,6,6,6,6,4,4 + da 3,3,6,1,1,1,6,4,4 + da 3,3,6,6,6,6,6,4,4 + da 3,3,6,2,2,2,6,4,4 + da 3,3,6,6,6,6,6,4,4 + da 3,2,2,2,2,2,2,2,4 + da 2,2,2,2,2,2,2,2,2 + +*--- Lignes + +Ligne = * + +]Ligne = $0 + lup 200 + da ]Ligne +]Ligne = ]Ligne+160 + --^ + +*--- Fin du code... diff --git a/cogito/Happyland.gif b/cogito/Happyland.gif new file mode 100644 index 0000000..ccb5e9f Binary files /dev/null and b/cogito/Happyland.gif differ diff --git a/cogito/Ludyland.gif b/cogito/Ludyland.gif new file mode 100644 index 0000000..fe924b9 Binary files /dev/null and b/cogito/Ludyland.gif differ diff --git a/cogito/Planet.gif b/cogito/Planet.gif new file mode 100644 index 0000000..5ea21a6 Binary files /dev/null and b/cogito/Planet.gif differ diff --git a/cogito/ReadMe.rtf b/cogito/ReadMe.rtf new file mode 100644 index 0000000..0cfc2fc Binary files /dev/null and b/cogito/ReadMe.rtf differ diff --git a/cogito/Title.gif b/cogito/Title.gif new file mode 100644 index 0000000..2067c1a Binary files /dev/null and b/cogito/Title.gif differ diff --git a/cogito/Xenoland.gif b/cogito/Xenoland.gif new file mode 100644 index 0000000..80b545f Binary files /dev/null and b/cogito/Xenoland.gif differ diff --git a/cogito/cogito2.s b/cogito/cogito2.s new file mode 100644 index 0000000..374dd51 --- /dev/null +++ b/cogito/cogito2.s @@ -0,0 +1,15551 @@ +* +* Cogito: The Return +* +* (c) 1997, Jérôme Crétaux +* (c) 1997, Atreid Concept +* (c) 1997, Brutal Deluxe Software +* + + mx %00 + rel + dsk Cogito2.l + lst off + +*----------------------- + +KBD = $C000 +KBDSTROBE = $C010 +BUTN3 = $C060 +GSOS = $E100A8 + +*----------------------- + +* +* Resources +* +* $0001: sound - click +* $0002: sound - end of level +* $0010: 69B0 - Data Happyland +* $0011: 6980 - Data Ludyland +* $0012: 6980 - Data Planet +* $0013: 6980 - Data Xenoland +* $0014: VGA palette +* $0015: VGA palette +* $0020: 010D28 - Happyland (PCX) +* $0021: 00F6FE - Ludyland (PCX) +* $0022: 00CEA2 - Planet (PCX) +* $0023: 019954 - Xenoland (PCX) +* $0024: 02FCE3 - Title (PCX) +* $0025: 006500 - About (PCX) + +*----------------------- + + use 4/Int.Macs + use 4/Locator.Macs + use 4/Mem.Macs + use 4/Misc.Macs + use 4/Resource.Macs + use 4/Sound.Macs + use 4/Util.Macs + +*-------------------------- +* Initialisations d'entree +*-------------------------- + + PHK + PLB + + _TLStartUp + PHA + _MMStartUp + PLA + STA myID + + PHA + PHA + PHA + PushWord #2 + PushLong #1 + _StartUpTools + PullLong SStopREC + BCC L0056 + + PHA + PEA ^errSTR1 + PEA errSTR1 + PEA ^memSTR3 + PEA memSTR3 + PEA ^memSTR4 + PEA memSTR4 + PEA ^memSTR4 + PEA memSTR4 + _TLTextMountVolume + PLA + JMP initOFF + +L0056 PushLong #bufferSS + JSL _xGetStatus ; Do I have a SecondSight? + CMP #$0000 + BEQ L0089 ; Yes, I do + + PHA ; No, I quit + PEA ^errSTR2 + PEA errSTR2 + PEA ^memSTR3 + PEA memSTR3 + PEA ^memSTR4 + PEA memSTR4 + PEA ^memSTR4 + PEA memSTR4 + _TLTextMountVolume + PLA + JMP initOFF + +L0089 INC fgSS + + PHA + PHA + _FreeMem + PLA + PLA + CMP #$0004 + BCS L009F + JMP memERR1 +L009F JMP okIT3 + + ASC 8D8D + ASC 'hi Chuck, we perfectly know that you don'27't have any second Sight in your GS but ' + ASC 'as you usually have a look at the hidden texts of our software, we say you hello first... :-)'8D8D + +okIT3 PushLong #0 + PushLong #$10000 + PushWord myID + PushWord #%11000000_00011100 + PushLong #0 + _NewHandle + LDX temp + PHD + TSC + TCD + LDA [$03] + STA ptrBANK1,X + LDY #$0002 + LDA [$03],Y + STA ptrBANK1+2,X + PLD + PLA + PLA + JSR memERR + INX + INX + INX + INX + STX temp + CPX #4*4 ; 4 bancs + BNE okIT3 + +*--- + + JSR initSS + JSR loadTITRE + LDA #$0000 ; affiche logo Kalisto + JSR unpackPCX + LDA #$0000 + JSR showIMAGE + JSR waitMOUSEUP + JSR fadeOUT + LDA #$0001 ; affiche image titre + JSR unpackPCX + LDA #$0001 + JSR showIMAGE + JSR loadIMAGES + JSR loadDATA + JSR initSOUND + JSR fadeOUT + + INC fgINTER2 + STZ Melange + + SEI + PushLong #myVBL + _SetHeartBeat + PushLong #myRAN + _SetHeartBeat + CLI + PEA $0002 + _IntSource + STZ CurDecor + +L01F3 STZ window + LDA #1 + STA Niveau + STZ moX + STZ moY + STZ oldX + STZ oldY +L0208 LDA #1 + STA NbCoups + STZ NbCoups+2 + STZ NbCompute + STZ ldFlag + +L0217 JSR setDecor + JSR DoInit + JSR DoDecor + JSR DoDeplacement + JSR DoFleches + JSR PutArrows + JSR ShowAll + LDA #$0000 + STA firstLINE + LDA #$018F + STA lastLINE + JSR refreshSCREEN + JSR fadeIN + JSR moFORE + LDA ldFlag + BNE L0258 + + STZ Temps + STZ Temps+2 + STZ Temps+4 + STZ NbCoups + STZ NbCoups+2 + STZ NbCompute + +L0258 JSR OpenPanel + JSR ahNIVEAU + JSR ahCOMPCP + JSR ahMOICP + LDX #$0003 + STX noINTER + JSR ahTIME + INC Melange + +*--- On a demarre, maintenant melange + + LDA ldFlag + BNE L0278 + JSR ComputeIt + +L0278 JSR moREAD + JSR ahTIME + LDAL KBD-1 + BPL L0287 + BRL L0336 +L0287 JSR moCONTROL + BCS L0278 + STA MyArrow + LDA #$FFFF + STA windowC + JSR TestArrow + BCS L0278 + LDX #$0000 + JSR playSND + LDA NbCoups + CLC + ADC #1 + STA NbCoups + LDA NbCoups+2 + ADC #0 + STA NbCoups+2 + JSR moBACK + JSR ahMOICP + JSR ChoixMelange + JSR moFORE + JSR TestEnd + BCS L0278 + LDX #$0001 + JSR playSND +L02CA STZ Melange + JSR moBACK + INC CurDecor + LDA CurDecor + CMP #$0004 + BCC L02DE + STZ CurDecor +L02DE STZ ldFlag + INC Niveau + LDA Niveau + CMP #$0079 ; le dernier niveau ? + BCC L02FB + LDX #$0001 ; le joueur a gagné + JSR playSND ; il a droit au son + LDX #$0001 ; deux fois + JSR playSND ; snif + BRL L01F3 + +L02FB JSR fadeOUT + BRL L0217 + + ASC 8D8D + ASC 'Big Kisses from Antoine to my beloved Emmanuelle '8D8D + +*--- Gestion des touches + +L0336 STAL KBDSTROBE-1 + XBA + AND #$00DF + CLC + ADC #$0020 + TAX + STZ Melange + LDAL BUTN3 + BMI L036F + TXA + CMP #$00AB + BNE L0355 + JMP L02CA + +L0355 CMP #$00AD + BNE L036C + LDA Niveau + SEC + SBC #$0002 + BPL L0366 + LDA #$0000 +L0366 STA Niveau + JMP L02CA +L036C JMP L0462 + +L036F TXA + CMP #"1" + BNE L038F + LDA #$0000 + CMP CurDecor + BEQ L038C + STA CurDecor + LDA #$0001 + STA ldFlag + JSR fadeOUT + JMP L0217 +L038C JMP L0462 + +L038F CMP #"2" + BNE L03AE + LDA #$0001 + CMP CurDecor + BEQ L03AB + STA CurDecor + LDA #$0001 + STA ldFlag + JSR fadeOUT + JMP L0217 +L03AB JMP L0462 + +L03AE CMP #"3" + BNE L03CD + LDA #$0002 + CMP CurDecor + BEQ L03CA + STA CurDecor + LDA #$0001 + STA ldFlag + JSR fadeOUT + JMP L0217 +L03CA JMP L0462 + +L03CD CMP #"4" + BNE L03EC + LDA #$0003 + CMP CurDecor + BEQ L03E9 + STA CurDecor + LDA #$0001 + STA ldFlag + JSR fadeOUT + JMP L0217 +L03E9 JMP L0462 + +L03EC CMP #$00F3 + BNE L03F7 + JSR saveFILE + JMP L0462 + +L03F7 CMP #$00AB + BNE L0409 + LDA Niveau + CLC + ADC #$000B + STA Niveau + JMP L02CA + +L0409 CMP #$00AD + BNE L0420 + LDA Niveau + SEC + SBC #$000D + BPL L041A + LDA #$0000 +L041A STA Niveau + JMP L02CA + +L0420 CMP #$00ED + BNE L0431 + LDA fgNOMUSIC + EOR #$0001 + STA fgNOMUSIC + JMP L0462 + +L0431 CMP #$00EF + BNE L0447 + JSR loadFILE + BCS L0462 + LDA #$0001 + STA ldFlag + JSR fadeOUT + JMP L0217 + +L0447 CMP #$00F2 + BNE L0452 + JSR fadeOUT + JMP L01F3 + +L0452 CMP #$00FA + BNE L045D + JSR fadeOUT + JMP L0208 + +L045D CMP #$00F1 + BEQ L046B +L0462 LDA #$0001 + STA Melange + JMP L0287 + +L046B STZ Melange + JSR fadeOUT + +initOFF LDA fgSS + BEQ L0493 + + PEA $0000 + PEA $0000 + PEA $0000 + PEA $0007 + PEA $D000 + JSL _xClearScreen + PEA $0060 + PEA $0000 + JSL _xSetMode + +L0493 LDA fgINTER2 + BEQ L04B4 + + SEI + PushLong #myRAN + _DelHeartBeat + PushLong #myVBL + _DelHeartBeat + CLI + +L04B4 JSR sndOFF + PushWord #1 + PushLong SStopREC + _ShutDownTools + PushWord myID + _DisposeAll + _MMShutDown + _TLShutDown + + JSL GSOS + DW $2029 ; Quit + ADRL proQuit + BRK $00 + + ASC 8D8D + ASC 'August 97, Olivier in California... Dinner with Nathan, no beans this time...:-) ' + ASC 'Nice Saturn Game... (ThunderForce V is still unavailable in France). ' + ASC 'Impossible to look at the baywatch girls, perhaps next time... :-)'8D8D + +*-------------------------- +* Routines melange +*-------------------------- + +ChoixMelange LDA WhichDep + + CMP #1 ; Normal + BNE melan2 + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan2 CMP #2 ; 2 cases dans la meme direction + BNE melan3 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + JSR DoScroll + RTS + +*--- + +melan3 CMP #3 ; Inversion N/E, S/O + BNE melan4 + + LDA MyArrow + ASL + TAX + LDA TblMel38,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan4 CMP #4 ; Normal sans fleches + BNE melan5 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan5 CMP #5 ; Inversion N/S, E/O + BNE melan6 + LDA MyArrow + ASL + TAX + LDA TblMel5,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan6 CMP #6 ; N1=S9, E1=O9 + BNE melan7 + + LDA MyArrow + ASL + TAX + LDA TblMel67,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan7 CMP #7 ; N1=N1+S9, N2=N2+S8 + BNE melan8 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + LDA MyArrow + ASL + TAX + LDA TblMel67,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan8 CMP #8 ; N1=N1+E1, S1=S1+01 + BNE melan9 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + LDA MyArrow + ASL + TAX + LDA TblMel38,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan9 CMP #9 ; N&=N1+N9, N2=N2+N8 + BNE melan10 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + LDA MyArrow + ASL + TAX + LDA TblMel9,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan10 CMP #10 ; Manque fleches, sinon comme 8 + BNE melan11 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + LDA MyArrow + ASL + TAX + LDA TblMel38,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan11 CMP #11 ; N1=N1+N2, O1=O1+O2 + BNE melan12 + + LDA MyArrow + ASL + STA MyColumn + JSR DoScroll + LDA MyArrow + ASL + TAX + LDA TblMel11,X + ASL + STA MyColumn + JSR DoScroll + RTS + +*--- + +melan12 LDA MyArrow ; N4=N4+N2, N9=N9+N7 + ASL + STA MyColumn + JSR DoScroll + LDA MyArrow + ASL + TAX + LDA TblMel12,X + ASL + STA MyColumn + JSR DoScroll + RTS + + ASC 8D8D + ASC 'Minax is not dead !'8D8D + +*--- Regarde si la fleche X existe + +TestArrow LDA MyArrow + ASL + TAX + LDA Fleches2,X + BNE TstArr1 + SEC ; Fleche n'existe pas + RTS +TstArr1 CLC ; Fleche existe + RTS + +*--- L'ordinateur choisit + +ComputeIt JSR Random + BEQ ComputeIt + CMP #37 + BCS ComputeIt + DEC ; Pour 0-36 + CMP MyArrow + BEQ ComputeIt + STA MyArrow + + JSR TestArrow ; Fleche existe ? + BCS ComputeIt ; non, si C=1 + INC NbCompute + JSR ahCOMPCP ; Ah! Le nombre de deplacement + JSR ChoixMelange ; Melange + + LDA NbCompute + CMP NbMelange + BNE ComputeIt + + JSR TestEnd ; Plateau=Probleme ? + BCC ComputeIt ; C=0, oui, recommence + + STZ Diabolic + JSR L0D5B + RTS + +*--- Compare les deux plateaux + +TestEnd LDX #0 +]lp LDA Plateau,X ; C=1, c'est le meme + CMP Probleme,X ; C=0, different + BNE TstEnd1 + INX + INX + CPX #81*2 + BNE ]lp + CLC + RTS +TstEnd1 SEC ; Erreur + RTS + +*--- Initialise les donnes de decor, deplacement et nom + +DoInit LDA Niveau + DEC + ASL + TAX + LDA ChoixDeplace,X + STA WhichDep + LDA ChoixDecor,X + STA WhichDecor + RTS + +*--- Prepare le decor + +DoDecor LDA ldFlag + BNE noDec + LDA WhichDecor + DEC + ASL + TAX + JSR (AdrCalcDec,X) +noDec RTS + +*--- Prepare les deplacements + +DoDeplacement LDA ldFlag + BNE noDep + + LDA WhichDep + DEC + ASL + TAX + LDA TblDeplacement,X + STA NbMelange + STA Diabolic +noDep RTS + +*--- Prepare les fleches suivant le deplacement + +DoFleches LDA Niveau + CMP #24 + BCS FlechesA + + LDX #0 ; On deplace sur 9 + LDA #9 +]lp STA Fleches,X + INX + INX + CPX #36*2 + BNE ]lp + BRL FlechesE + +*--- + +FlechesA CMP #48 + BCS FlechesB + + LDX #0 ; On deplace sur 5 + LDA #5 +]lp STA Fleches,X + INX + INX + CPX #36*2 + BNE ]lp + BRL FlechesE + +*--- + +FlechesB CMP #72 + BCS FlechesC + + LDX #0 ; On deplace sur 6 et 4 +]lp LDA #6 + STA Fleches,X + STA Fleches+36,X + LDA #4 + STA Fleches+18,X + STA Fleches+54,X + INX + INX + CPX #9*2 + BNE ]lp + BRL FlechesE + +*--- + +FlechesC CMP #99 + BCS FlechesD + + LDX #0 ; On deplace sur 6, 4, 7 et 3 +]lp LDA #6 + STA Fleches,X + LDA #4 + STA Fleches+18,X + LDA #7 + STA Fleches+36,X + LDA #3 + STA Fleches+54,X + INX + INX + CPX #9*2 + BNE ]lp + + LDA #3 + STA Fleches+6 + STA Fleches+8 + STA Fleches+10 + LDA #7 + STA Fleches+24 + STA Fleches+26 + STA Fleches+28 + BRL FlechesE + +*--- + +FlechesD LDX #0 ; On deplace sur 8 et 3 +]lp LDA #8 + STA Fleches,X + STA Fleches+36,X + LDA #3 + STA Fleches+18,X + STA Fleches+54,X + INX + INX + CPX #9*2 + BNE ]lp + +*--- + +FlechesE LDA WhichDep + CMP #4 + BEQ FlechesG + CMP #10 + BEQ FlechesG + +FlechesF LDX #0 + LDA #1 +]lp STA Fleches2,X + INX + INX + CPX #36*2 + BNE ]lp + RTS + +FlechesG JSR FlechesF + STZ Fleches2+2 ; Inhibe des fleches + STZ Fleches2+12 + STZ Fleches2+20 + STZ Fleches2+22 + STZ Fleches2+30 + STZ Fleches2+38 + STZ Fleches2+48 + STZ Fleches2+56 + STZ Fleches2+58 + STZ Fleches2+66 + RTS + + ASC 8D8D + ASC 'About our next game, I will say.... SUCH A YEAR !!!'8D8D + +*-------------------------- +* Routines mathematiques +*-------------------------- + +ahCOMPCP LDA #'00' + STA StrPtr + STA StrPtr+1 + + PushWord NbCompute + PushLong #StrPtr + PushWord #3 + PushWord #0 + _Int2Dec + + LDA CurDecor + ASL + TAX + LDA zeCOMPCPY,X ; Y + TAY + LDA zeCOMPCPX,X ; X + TAX + LDA #StrPtr + JSR printNUMJ + RTS + +*--- Affiche mon nombre de coups + +ahMOICP LDA #'00' + STA LgStrPtr + STA LgStrPtr+2 + STA LgStrPtr+3 + + PushLong NbCoups + PushLong #LgStrPtr + PushWord #5 + PushWord #0 + _Long2Dec + + LDA CurDecor + ASL + TAX + LDA zeMOICPY,X + TAY + LDA zeMOICPX,X + TAX + LDA #LgStrPtr + JSR printNUMR + RTS + +*--- Affiche le niveau + +ahNIVEAU JSR chNIVEAU + LDA CurDecor + ASL + TAX + LDA zeCOMPCPY,X + TAY + LDA zeNIVEAU,X + TAX + LDA #StrPtr + JSR printNUMJ + RTS + +chNIVEAU LDA #'00' + STA StrPtr + STA StrPtr+1 + + PushWord Niveau + PushLong #StrPtr + PushWord #3 + PushWord #0 + _Int2Dec + RTS + +*--- + +ahTIME LDA noINTER + BNE L0974 + RTS + +L0974 LDA CurDecor + ASL + ASL + TAX + + LDA moY ; la souris + CMP PanelY2,X ; est-elle sur le panneau ? + BPL L099A + CMP PanelY1,X + BMI L099A + LDA moX + CMP PanelX2,X + BPL L099A + CMP PanelX1,X + BMI L099A + JSR moBACK + INC fgTIME + +L099A LDX noINTER + CPX #$0003 + BCC L09D2 + + LDA #'00' + STA StrTime + PushWord Temps + PushLong #StrTime + PushWord #2 + PushWord #0 + _Int2Dec + + LDA CurDecor + ASL + TAX + LDA zeTEMPSY,X ; Y + TAY + LDA zeTEMPS1,X ; X + TAX + LDA #StrTime + JSR printNUMR + +L09D2 LDX noINTER + CPX #$0002 + BCC L0A0A + + LDA #'00' + STA StrTime + PushWord Temps+2 + PushLong #StrTime + PushWord #2 + PushWord #0 + _Int2Dec + + LDA CurDecor + ASL + TAX + LDA zeTEMPSY,X ; Y + TAY + LDA zeTEMPS2,X ; X++ + TAX + LDA #StrTime + JSR printNUMR + +L0A0A LDX noINTER + CPX #$0001 + BCC L0A42 + + LDA #'00' + STA StrTime + PushWord Temps+4 + PushLong #StrTime + PushWord #2 + PushWord #0 + _Int2Dec + + LDA CurDecor + ASL + TAX + LDA zeTEMPSY,X ; Y + TAY + LDA zeTEMPS3,X ; X++++ + TAX + LDA #StrTime + JSR printNUMR + +L0A42 LDA fgTIME + BEQ L0A4D + STZ fgTIME + JSR moFORE +L0A4D STZ noINTER + RTS + +setDecor LDA CurDecor + ASL + ASL + TAX + LDA ptrPANEL1,X + STA $1C + LDA ptrPANEL1+2,X + STA $1E + LDA PanelX1,X + STA PanelX + LDA PanelY1,X + STA PanelY + + LDY #0 +L0A70 LDA [$1C] + STA L566B,Y + INC $1C + BNE L0A7B + INC $1E +L0A7B INY + CPY #$69B0 + BNE L0A70 + LDA CurDecor + JSR unpackPCX + RTS + + ASC 8D8D + ASC 'Nathan : what about distributing your programs once more ? ' + ASC 'I'27'd like to get the latest version of GUPP'8D8D + +*-------------------------- +* Creation des decors +*-------------------------- + +Decor1 JSR Random ; couleur 1 + BEQ Decor1 + CMP #7 + BCS Decor1 + STA colorA +]lp JSR Random ; couleur 2 + BEQ ]lp + CMP #7 + BCS ]lp + CMP colorA + BEQ ]lp + STA colorB + + LDX #0 ; met le fond + LDA colorA +]lp STA Plateau,X + STA Probleme,X + INX + INX + CPX #81*2 + BNE ]lp + + lda colorB ; met le motif + sta Plateau+60 + sta Probleme+60 + sta Plateau+62 + sta Probleme+62 + sta Plateau+64 + sta Probleme+64 + sta Plateau+78 + sta Probleme+78 + sta Plateau+80 + sta Probleme+80 + sta Plateau+82 + sta Probleme+82 + sta Plateau+96 + sta Probleme+96 + sta Plateau+98 + sta Probleme+98 + sta Plateau+100 + sta Probleme+100 + rts + +*--- + +Decor2 jsr Random ; couleur 1 + beq Decor2 + cmp #7 + bcs Decor2 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB + + ldx #0 ; met couleur 1 + lda colorA +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #36*2 + bne ]lp + + ldx #36*2 ; met couleur 2 + lda colorB +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- + +Decor3 jsr Random ; couleur 1 + beq Decor3 + cmp #7 + bcs Decor3 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB +]lp jsr Random ; couleur 3 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + cmp colorB + beq ]lp + sta colorC + + ldx #0 ; met le motif +]lp lda colorA + sta Plateau,x + sta Probleme,x + sta Plateau+2,x + sta Probleme+2,x + sta Plateau+4,x + sta Probleme+4,x + lda colorB + sta Plateau+6,x + sta Probleme+6,x + sta Plateau+8,x + sta Probleme+8,x + sta Plateau+10,x + sta Probleme+10,x + lda colorC + sta Plateau+12,x + sta Probleme+12,x + sta Plateau+14,x + sta Probleme+14,x + sta Plateau+16,x + sta Probleme+16,x + txa + clc + adc #9*2 + tax + cpx #81*2 + bne ]lp + rts + +*--- + +Decor4 jsr Random ; couleur 1 + beq Decor4 + cmp #7 + bcs Decor4 + sta colorA +]lp jsr Random ; couleur 2 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + sta colorB +]lp jsr Random ; couleur 3 + beq ]lp + cmp #7 + bcs ]lp + cmp colorA + beq ]lp + cmp colorB + beq ]lp + sta colorC + + ldx #0 ; met le motif 1 + lda colorA +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #27*2 + bne ]lp + + ldx #27*2 ; met le motif 2 + lda colorB +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #54*2 + bne ]lp + + ldx #54*2 ; met le motif 3 + lda colorC +]lp sta Plateau,x + sta Probleme,x + inx + inx + cpx #81*2 + bne ]lp + rts + +*--- Simplification par tableaux deja en memoire + +Decor5 LDA #AdrDecor5 + BRA DecorA +Decor6 LDA #AdrDecor6 + BRA DecorA +Decor7 LDA #AdrDecor7 + BRA DecorA +Decor8 LDA #AdrDecor8 + BRA DecorA +Decor9 LDA #AdrDecor9 + +DecorA STA DecorB+1 + + LDX #0 +DecorB LDA $FFFF,X + STA Plateau,X + STA Probleme,X + INX + INX + CPX #81*2 + BNE DecorB + RTS + +*--- + +Decor10 LDX #0 +]lp STZ Plateau,X + STZ Probleme,X + INX + INX + CPX #81*2 + BNE ]lp + + LDX #0 +]lp JSR Random ; Random2 + BNE Decor10a + INC +Decor10a CMP #7 + BCS ]lp + + STA Plateau,X + STA Probleme,X + INX + INX + CPX #81*2 + BNE ]lp + RTS + + ASC 8D8D + ASC 'Pizza Party in San Rafael with Sheppy and Joe. (Splash on Tv for Stephanie)'8D8D + +*--- Affiche tous les pions + +ShowAll LDX #0 +]lp PHX + LDA Plateau,X + JSR WriteBig + PLX + PHX + LDA Probleme,X + JSR WriteSmall + PLX + INX + INX + CPX #81*2 + BNE ]lp + RTS + +L0D5B JSR moBACK + LDX #$0000 +L0D61 PHX + LDA Plateau,X + JSR WriteBig + PLX + INX + INX + CPX #$00A2 + BNE L0D61 + LDA #$001D + STA firstY3 + LDA #$018F + STA lastY3 + JSR refreshLINE + JSR moFORE + RTS + +*--- Draw panel (79x49 pixels) + +OpenPanel + LDX #sprPanel1 + JSR L0D90 + LDX #sprPanel2 + JSR L0D90 + RTS + +L0D90 TXA + CLC + ADC #$0F1F ; 79x49 + STA L0ECA+1 + LDY PanelY +L0D9B PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $18 + LDA lineBANK1+2,Y + STA $1A + LDY PanelX + LDA |$0000,X + STA [$18],Y + INY + INY + LDA |$0002,X + STA [$18],Y + INY + INY + LDA |$0004,X + STA [$18],Y + INY + INY + LDA |$0006,X + STA [$18],Y + INY + INY + LDA |$0008,X + STA [$18],Y + INY + INY + LDA |$000A,X + STA [$18],Y + INY + INY + LDA |$000C,X + STA [$18],Y + INY + INY + LDA |$000E,X + STA [$18],Y + INY + INY + LDA |$0010,X + STA [$18],Y + INY + INY + LDA |$0012,X + STA [$18],Y + INY + INY + LDA |$0014,X + STA [$18],Y + INY + INY + LDA |$0016,X + STA [$18],Y + INY + INY + LDA |$0018,X + STA [$18],Y + INY + INY + LDA |$001A,X + STA [$18],Y + INY + INY + LDA |$001C,X + STA [$18],Y + INY + INY + LDA |$001E,X + STA [$18],Y + INY + INY + LDA |$0020,X + STA [$18],Y + INY + INY + LDA |$0022,X + STA [$18],Y + INY + INY + LDA |$0024,X + STA [$18],Y + INY + INY + LDA |$0026,X + STA [$18],Y + INY + INY + LDA |$0028,X + STA [$18],Y + INY + INY + LDA |$002A,X + STA [$18],Y + INY + INY + LDA |$002C,X + STA [$18],Y + INY + INY + LDA |$002E,X + STA [$18],Y + INY + INY + LDA |$0030,X + STA [$18],Y + INY + INY + LDA |$0032,X + STA [$18],Y + INY + INY + LDA |$0034,X + STA [$18],Y + INY + INY + LDA |$0036,X + STA [$18],Y + INY + INY + LDA |$0038,X + STA [$18],Y + INY + INY + LDA |$003A,X + STA [$18],Y + INY + INY + LDA |$003C,X + STA [$18],Y + INY + INY + LDA |$003E,X + STA [$18],Y + INY + INY + LDA |$0040,X + STA [$18],Y + INY + INY + LDA |$0042,X + STA [$18],Y + INY + INY + LDA |$0044,X + STA [$18],Y + INY + INY + LDA |$0046,X + STA [$18],Y + INY + INY + LDA |$0048,X + STA [$18],Y + INY + INY + LDA |$004A,X + STA [$18],Y + INY + INY + LDA |$004C,X + STA [$18],Y + INY + LDA |$004E,X + STA [$18],Y + PLY + INY + TXA + CLC + ADC #79 + TAX +L0ECA CPX #$FFFF + BCS L0ED2 + BRL L0D9B + +L0ED2 LDA PanelY + STA firstY4 + CLC + ADC #$0031 + STA lastY4 + JSR refreshPANEL + RTS + + ASC 8D8D + ASC 'Antoine promises : No More versions of Cogito'8D8D + +*--- + +PutArrows + LDY #0 ; Au nord +L0F17 PHY + LDA Fleches2,Y + BEQ L0F23 + LDX #LA029 + JSR PrintNS +L0F23 PLY + INY + INY + CPY #18 + BNE L0F17 + + LDY #18 ; A l'est +L0F2E PHY + LDA Fleches2,Y + BEQ L0F3A + LDX #LB037 + JSR PrintEO +L0F3A PLY + INY + INY + CPY #36 + BNE L0F2E + + LDY #36 ; Au sud +L0F45 PHY + LDA Fleches2,Y + BEQ L0F51 + LDX #LA83F + JSR PrintNS +L0F51 PLY + INY + INY + CPY #54 + BNE L0F45 + + LDY #54 ; A l'ouest +L0F5C PHY + LDA Fleches2,Y + BEQ L0F68 + LDX #LB7F3 + JSR PrintEO +L0F68 PLY + INY + INY + CPY #72 + BNE L0F5C + RTS + +*--- Affiche une flèche haut/bas (30x23) + +PrintNS TXA + CLC + ADC #$02B2 ; 30x23 + STA L1007+1 + LDA FlecheX1,Y + STA FlecheX + LDA FlecheY1,Y + STA FlecheY + TAY +L0F86 PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $28 + LDA lineBANK1+2,Y + STA $2A + LDY FlecheX + LDA |$0000,X + STA [$28],Y + INY + INY + LDA |$0002,X + STA [$28],Y + INY + INY + LDA |$0004,X + STA [$28],Y + INY + INY + LDA |$0006,X + STA [$28],Y + INY + INY + LDA |$0008,X + STA [$28],Y + INY + INY + LDA |$000A,X + STA [$28],Y + INY + INY + LDA |$000C,X + STA [$28],Y + INY + INY + LDA |$000E,X + STA [$28],Y + INY + INY + LDA |$0010,X + STA [$28],Y + INY + INY + LDA |$0012,X + STA [$28],Y + INY + INY + LDA |$0014,X + STA [$28],Y + INY + INY + LDA |$0016,X + STA [$28],Y + INY + INY + LDA |$0018,X + STA [$28],Y + INY + INY + LDA |$001A,X + STA [$28],Y + INY + INY + LDA |$001C,X + STA [$28],Y + PLY + INY + TXA + CLC + ADC #30 + TAX +L1007 CPX #$FFFF + BCS L100F + BRL L0F86 +L100F RTS + +*--- Affiche une flèche gauche/droite (22x30) + +PrintEO TXA + CLC + ADC #$0294 ; 22x30 + STA L108A+1 + LDA FlecheX1,Y + STA FlecheX + LDA FlecheY1,Y + STA FlecheY + TAY +L1025 PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $28 + LDA lineBANK1+2,Y + STA $2A + LDY FlecheX + LDA |$0000,X + STA [$28],Y + INY + INY + LDA |$0002,X + STA [$28],Y + INY + INY + LDA |$0004,X + STA [$28],Y + INY + INY + LDA |$0006,X + STA [$28],Y + INY + INY + LDA |$0008,X + STA [$28],Y + INY + INY + LDA |$000A,X + STA [$28],Y + INY + INY + LDA |$000C,X + STA [$28],Y + INY + INY + LDA |$000E,X + STA [$28],Y + INY + INY + LDA |$0010,X + STA [$28],Y + INY + INY + LDA |$0012,X + STA [$28],Y + INY + INY + LDA |$0014,X + STA [$28],Y + PLY + INY + TXA + CLC + ADC #22 + TAX +L108A CPX #$FFFF + BCS L1092 + BRL L1025 +L1092 RTS + +*-------------------------- +* Routines scrolls +*-------------------------- + +DoScroll LDA MyColumn ; Ma colonne + CMP #18 + BCS scrol1 + BRL ScrollNorth +scrol1 CMP #36 + BCS scrol2 + BRL ScrollEast +scrol2 CMP #54 + BCS scrol3 + BRL ScrollSouth +scrol3 BRL ScrollWest + +*--- Scroll plateau haut->bas + +ScrollNorth LDX MyColumn + LDA TblPlateau,X + STA MyArrivee + + LDA Fleches,X + DEC + ASL + TAX + LDA TblPlateau2,X + CLC + ADC MyArrivee + STA MyDepart + + LDX MyDepart + LDA Plateau,X + TAY +]lp TXA + SEC + SBC #18 + TAX + LDA Plateau,X + STA Plateau+18,X + CPX MyArrivee + BNE ]lp + TYA + STA Plateau,X + + LDA Diabolic + BNE noScrN + JSR ScrNorth +noScrN RTS + +*--- Scroll plateau droite->gauche + +ScrollEast LDX MyColumn + LDA TblPlateau,X + CLC + ADC #2 + STA MyArrivee + + LDA Fleches,X + ASL + STA PlaEast1+1 + LDA MyArrivee + SEC +PlaEast1 SBC #$0000 + STA MyDepart + + LDX MyDepart + LDA Plateau,X + TAY +]lp LDA Plateau+2,X + STA Plateau,X + INX + INX + CPX MyArrivee + BNE ]lp + TYA + STA Plateau-2,X + + LDA Diabolic + BNE noScrE + JSR ScrEast +noScrE RTS + +*--- Scroll plateau bas->haut + +ScrollSouth LDX MyColumn + LDA TblPlateau,X + STA MyArrivee + + LDA Fleches,X + DEC + ASL + TAX + LDA TblPlateau2,X + STA PlaSouth1+1 + + LDA MyArrivee + SEC +PlaSouth1 SBC #$FFFF + STA MyDepart + + LDX MyDepart + LDA Plateau,X + TAY +]lp LDA Plateau+18,X + STA Plateau,X + TXA + CLC + ADC #18 + TAX + CPX MyArrivee + BNE ]lp + TYA + STA Plateau,X + + LDA Diabolic + BNE noScrS + JSR ScrSouth +noScrS RTS + +*--- Scroll plateau gauche->droite + +ScrollWest LDX MyColumn + LDA TblPlateau,X + STA MyArrivee + + LDA Fleches,X + ASL + CLC + ADC MyArrivee + SEC + SBC #2 + STA MyDepart + + LDX MyDepart + LDA Plateau,X + TAY +]lp DEX + DEX + LDA Plateau,X + STA Plateau+2,X + CPX MyArrivee + BNE ]lp + TYA + STA Plateau,X + + LDA Diabolic + BNE noScrW + JSR ScrWest +noScrW RTS + + ASC 8D8D + ASC 'Nice meeting at Burger Bill'27'home, next time in LogicWare office ??'8D8D + +*-------------------------- +* Routines scrolls ecran +*-------------------------- + +*--- Retourne l'adresse mémoire d'une ligne à partir d'un index + +calcXY ASL + ASL + TAY + LDA lineBANK1+2,Y + TAX + LDA lineBANK1,Y + CLC + ADC scrX1 + TAY + RTS + +*--- Copie la ligne du haut dans le buffer + +saveLINE + LDY #0 + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + INY + LDA [$34],Y + STA bufLIGNE,Y + INY + LDA [$34],Y + STA bufLIGNE,Y + RTS + +*--- Restaure la ligne copiee + +restoreLINE + LDY #0 + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + INY + LDA bufLIGNE,Y + STA [$30],Y + INY + LDA bufLIGNE,Y + STA [$30],Y + RTS + +*-------------------------- +* Routines scrolls ecran +*-------------------------- + +*--- Scroll plateau haut->bas + +ScrNorth LDX MyArrivee + LDA scrBigY,X + STA MyArrivee + STA firstY1 + LDA scrBigX,X + STA scrX1 + LDX MyDepart + TXA + LDA scrBigY,X + CLC + ADC #$0022 + STA MyDepart + STA lastY1 + LDX #$0023 +L1325 PHX + LDA MyDepart + JSR calcXY + STY $34 + STY $3C + STX $36 + STX $3E + LDA MyArrivee + JSR calcXY + STY $30 + STX $32 + LDA MyDepart + DEC + STA MyDepart2 + JSR saveLINE +L1348 LDA MyDepart2 + JSR calcXY + STY $38 + STX $3A + LDY #$0022 +L1355 LDA [$38],Y + STA [$3C],Y + DEY + BPL L1355 + LDA $38 + STA $3C + LDA $3A + STA $3E + DEC MyDepart2 + LDA MyDepart2 + CMP MyArrivee + BCS L1348 + JSR restoreLINE + PLX + DEX + BEQ L1386 + CPX #$0011 + BEQ L137E + BRL L1325 +L137E PHX + JSR refreshCOLUMN + PLX + BRL L1325 +L1386 JSR refreshCOLUMN + RTS + +*--- Scroll plateau droite->gauche + +ScrEast LDX MyDepart + LDA scrBigY,X + STA MyDepart + STA MyDepart2 + STA firstY3 + CLC + ADC #34 + STA MyArrivee2 + STA lastY3 + LDA scrBigX,X + STA scrX1 + LDX MyArrivee + DEX + DEX + LDA scrBigX,X + CLC + ADC #34 + SEC + SBC scrX1 + STA scrX2 + LDX #$0023 +L13BF PHX +L13C0 LDA MyDepart2 + JSR calcXY + STY $34 + STX $36 + INY + STY $30 + STX $32 + SEP #$20 + LDA [$34] + PHA + LDY #$0000 +L13D7 LDA [$30],Y + STA [$34],Y + INY + CPY scrX2 + BCC L13D7 + PLA + STA [$34],Y + REP #$20 + INC MyDepart2 + LDA MyDepart2 + CMP MyArrivee2 + BCC L13C0 + BEQ L13C0 + LDA MyDepart + STA MyDepart2 + PLX + DEX + BEQ L140D + CPX #$0011 + BEQ L1405 + BRL L13BF +L1405 PHX + JSR refreshLINE + PLX + BRL L13BF +L140D JSR refreshLINE + RTS + +*--- Scroll plateau bas->haut + +ScrSouth LDX MyArrivee + LDA scrBigY,X + CLC + ADC #$0022 + STA MyArrivee + STA lastY1 + LDA scrBigX,X + STA scrX1 + LDX MyDepart + LDA scrBigY,X + STA MyDepart + STA firstY1 + LDX #$0023 +L1436 PHX + LDA MyDepart + JSR calcXY + STY $34 + STY $3C + STX $36 + STX $3E + LDA MyArrivee + JSR calcXY + STY $30 + STX $32 + LDA MyDepart + INC + STA MyDepart2 + JSR saveLINE +L1459 LDA MyDepart2 + JSR calcXY + STY $38 + STX $3A + LDY #$0022 +L1466 LDA [$38],Y + STA [$3C],Y + DEY + BPL L1466 + LDA $38 + STA $3C + LDA $3A + STA $3E + INC MyDepart2 + LDA MyArrivee + CMP MyDepart2 + BCS L1459 + JSR restoreLINE + PLX + DEX + BEQ L1497 + CPX #$0011 + BEQ L148F + BRL L1436 +L148F PHX + JSR refreshCOLUMN + PLX + BRL L1436 +L1497 JSR refreshCOLUMN + RTS + +*--- Scroll plateau gauche->droite + +ScrWest LDX MyDepart + LDA scrBigY,X + STA MyDepart + STA MyDepart2 + STA firstY3 + CLC + ADC #$0022 + STA MyArrivee2 + STA lastY3 + LDA scrBigX,X + SEC + SBC #$0006 + STA scrX2 + LDX MyArrivee + LDA scrBigX,X + STA scrX1 + LDX #$0023 +L14CA PHX +L14CB LDA MyDepart2 + JSR calcXY + STY $30 + STX $32 + INY + STY $34 + STX $36 + SEP #$20 + LDY scrX2 + LDA [$30],Y + PHA + DEY +L14E3 LDA [$30],Y + STA [$34],Y + DEY + BPL L14E3 + PLA + STA [$30] + REP #$20 + INC MyDepart2 + LDA MyDepart2 + CMP MyArrivee2 + BCC L14CB + BEQ L14CB + LDA MyDepart + STA MyDepart2 + PLX + DEX + BEQ L1516 + CPX #$0011 + BEQ L150E + BRL L14CA +L150E PHX + JSR refreshLINE + PLX + BRL L14CA +L1516 JSR refreshLINE + RTS + + ASC 8D8D + ASC 'Corona for ever, Cobol for never !'8D8D + +*-------------------------- +* Sprites routines +*-------------------------- + +*--- Affiche un gros sprite (35x35) + +WriteBig DEC ; en A le sprite à afficher + ASL + TAY + LDA SprBig+2,Y ; adresse de fin du sprite + STA L15F2+1 + LDA SprBig,Y ; adresse de début + TAY + LDA scrBigX,X + STA SprX + LDA scrBigY,X + STA SprY + TYX ; => adresse de début du sprite + LDY SprY +L155D PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $0C + LDA lineBANK1+2,Y + STA $0E + LDY SprX + LDA |$0000,X + STA [$0C],Y + INY + INY + LDA |$0002,X + STA [$0C],Y + INY + INY + LDA |$0004,X + STA [$0C],Y + INY + INY + LDA |$0006,X + STA [$0C],Y + INY + INY + LDA |$0008,X + STA [$0C],Y + INY + INY + LDA |$000A,X + STA [$0C],Y + INY + INY + LDA |$000C,X + STA [$0C],Y + INY + INY + LDA |$000E,X + STA [$0C],Y + INY + INY + LDA |$0010,X + STA [$0C],Y + INY + INY + LDA |$0012,X + STA [$0C],Y + INY + INY + LDA |$0014,X + STA [$0C],Y + INY + INY + LDA |$0016,X + STA [$0C],Y + INY + INY + LDA |$0018,X + STA [$0C],Y + INY + INY + LDA |$001A,X + STA [$0C],Y + INY + INY + LDA |$001C,X + STA [$0C],Y + INY + INY + LDA |$001E,X + STA [$0C],Y + INY + INY + LDA |$0020,X + STA [$0C],Y + INY + LDA |$0022,X + STA [$0C],Y + PLY + INY + TXA + CLC + ADC #35 ; 35 de large + TAX +L15F2 CPX #$FFFF + BCS L15FA + BRL L155D +L15FA RTS + +*--- Affiche un petit sprite (14x14) + +WriteSmall + DEC + ASL + TAY + LDA SprSmall+2,Y + STA L1661+1 + LDA SprSmall,Y + TAY + LDA scrSmallX,X + STA SprX + LDA scrSmallY,X + STA SprY + TYX + LDY SprY +L1618 PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $0C + LDA lineBANK1+2,Y + STA $0E + LDY SprX + LDA |$0000,X + STA [$0C],Y + INY + INY + LDA |$0002,X + STA [$0C],Y + INY + INY + LDA |$0004,X + STA [$0C],Y + INY + INY + LDA |$0006,X + STA [$0C],Y + INY + INY + LDA |$0008,X + STA [$0C],Y + INY + INY + LDA |$000A,X + STA [$0C],Y + INY + INY + LDA |$000C,X + STA [$0C],Y + PLY + INY + TXA + CLC + ADC #14 ; 14 de large + TAX +L1661 CPX #$FFFF + BNE L1618 + RTS + + ASC 8D8D + ASC 'No more Yada Yada... Seinfeld show is over :-('8D8D + +*-------------------------- +* Routines ressources +*-------------------------- + +loadTITRE + PHA ; Title + PHA + PEA $BDBD + PEA $0000 + PEA $0024 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrIMAGE1 + LDY #$0002 + LDA [$03],Y + STA ptrIMAGE1+2 + PLD + PLA + PLA + BCC L16C3 + JMP resERR + +L16C3 PHA ; About + PHA + PEA $BDBD + PEA $0000 + PEA $0025 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrIMAGE2 + LDY #$0002 + LDA [$03],Y + STA ptrIMAGE2+2 + PLD + PLA + PLA + BCC L16ED + JMP resERR + +L16ED PHA ; VGA palette + PHA + PEA $BDBD + PEA $0000 + PEA $0014 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrPANEL1 + LDY #$0002 + LDA [$03],Y + STA ptrPANEL1+2 + PLD + PLA + PLA + BCC L1717 + JMP resERR + +L1717 PHA ; VGA palette + PHA + PEA $BDBD + PEA $0000 + PEA $0015 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrPANEL2 + LDY #$0002 + LDA [$03],Y + STA ptrPANEL2+2 + PLD + PLA + PLA + BCC L1741 + JMP resERR +L1741 RTS + +*--- Charge les images du jeu + +loadIMAGES + PHA ; Happyland + PHA + PEA $BDBD + PEA $0000 + PEA $0020 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrIMAGE1 + LDY #$0002 + LDA [$03],Y + STA ptrIMAGE1+2 + PLD + PLA + PLA + BCC L176C + JMP resERR + +L176C PHA ; Ludyland + PHA + PEA $BDBD + PEA $0000 + PEA $0021 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrIMAGE2 + LDY #$0002 + LDA [$03],Y + STA ptrIMAGE2+2 + PLD + PLA + PLA + BCC L1796 + JMP resERR + +L1796 PHA ; Planet + PHA + PEA $BDBD + PEA $0000 + PEA $0022 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrIMAGE3 + LDY #$0002 + LDA [$03],Y + STA ptrIMAGE3+2 + PLD + PLA + PLA + BCC L17C0 + JMP resERR + +L17C0 PHA ; Xenoland + PHA + PEA $BDBD + PEA $0000 + PEA $0023 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrIMAGE4 + LDY #$0002 + LDA [$03],Y + STA ptrIMAGE4+2 + PLD + PLA + PLA + BCC L17EA + JMP resERR +L17EA RTS + +*--- + +loadDATA PHA ; Data Happyland + PHA + PEA $BDBD + PEA $0000 + PEA $0010 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrPANEL1 + LDY #$0002 + LDA [$03],Y + STA ptrPANEL1+2 + PLD + PLA + PLA + BCC L1815 + JMP resERR + +L1815 PHA ; Data Ludyland + PHA + PEA $BDBD + PEA $0000 + PEA $0011 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrPANEL2 + LDY #$0002 + LDA [$03],Y + STA ptrPANEL2+2 + PLD + PLA + PLA + BCC L183F + JMP resERR + +L183F PHA ; Data Planet + PHA + PEA $BDBD + PEA $0000 + PEA $0012 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrPANEL3 + LDY #$0002 + LDA [$03],Y + STA ptrPANEL3+2 + PLD + PLA + PLA + BCC L1869 + JMP resERR + +L1869 PHA ; Data Xenoland + PHA + PEA $BDBD + PEA $0000 + PEA $0013 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrPANEL4 + LDY #$0002 + LDA [$03],Y + STA ptrPANEL4+2 + PLD + PLA + PLA + BCC L1893 + JMP resERR +L1893 RTS + +*-------------------------- +* Routines gs/os +*-------------------------- + +loadFILE JSL GSOS + DW $2010 ; Open + ADRL proOpen + BCS loadERR + + LDA proOpen+2 + STA proRead+2 + STA proClose+2 + + JSL GSOS + DW $2012 ; Read + ADRL proRead + +loadERR PHP + JSL GSOS + DW $2014 ; Close + ADRL proClose + PLP + RTS + +*--- + +saveFILE JSL GSOS + DW $2005 ; SetFileInfo + ADRL proInfo + + JSL GSOS + DW $2002 ; Destroy + ADRL proKill + + JSL GSOS + DW $2001 ; Create + ADRL proCreate + BCS saveERR + + JSL GSOS + DW $2010 ; Open + ADRL proOpen + + LDA proOpen+2 + STA proWrite+2 + STA proClose+2 + + JSL GSOS + DW $2013 ; Write + ADRL proWrite + +saveERR JSL GSOS + DW $2014 ; Close + ADRL proClose + RTS + + ASC 8D8D + ASC 'Godzilla is back ! Thanks to the French nuclear tests. ' + ASC 'If there were none, the film would not have existed :->'8D8D + +*-------------------------- +* Routines diverses +*-------------------------- + +*--- Erreur de memoire + +memERR BCS memERR1 + RTS + +memERR1 PushWord #0 + PushLong #memSTR1 + PushLong #memSTR2 + PushLong #memSTR3 + PushLong #memSTR4 + _TLTextMountVolume + PLA + JMP initOFF + +resERR PushWord #0 + PushLong #memSTR2 + PushLong #memSTR3 + PushLong #memSTR4 + PushLong #memSTR4 + _TLTextMountVolume + PLA + JMP initOFF + +*--- Genere un nombre aleatoire + +Random LDAL $E0C02E + XBA + CLC + ADC VBLCounter0 + STA VBLCounter0 + AND #$00FF + RTS + +*-------------------------- +* Interruption VBL +*-------------------------- + + MX %11 + +myVBL ADRL $00000000 +VBLcnt DW $003C + DW $A55A + + PHB + PHK + PLB + LDA #60 + STA VBLcnt + LDA Melange + BEQ noVBL + LDX #$01 + LDA Temps+2 + INC + CMP #60 + BEQ L19F9 + STA Temps+2 + BRA L1A1B +L19F9 STZ Temps+2 + INX + LDA Temps + INC + CMP #60 + BEQ L1A0A + STA Temps + BRA L1A1B +L1A0A STZ Temps + INX + LDA Temps + INC + CMP #60 + BNE L1A18 + LDA #$00 +L1A18 STA Temps +L1A1B STX noINTER + +noVBL SEP #$30 + PLB + CLC + RTL + + MX %00 ; A laisser pour avoir suite en 16 bits + +*--- + +myRAN ADRL $00000000 +RANcnt DW $0001 + DW $A55A + + PHB + PHK + PLB + REP #$30 + + INC VBLCounter0 + + LDA #$0001 + STA RANcnt + SEP #$30 + PLB + CLC + RTL + + MX %00 + +*--- + + PHA + PHA + PEA $0001 + PEA $0000 + LDA myID + PHA + PEA $C01C + PEA $0000 + PEA $0000 + _NewHandle + PHD + TSC + TCD + LDA [$03] + STA ptrMEM + LDY #$0002 + LDA [$03],Y + STA ptrMEM+2 + PLD + PLY + STY haMEM + PLX + STX haMEM+2 + RTS + +*-------------------------- +* Routines graphiques +*-------------------------- + +unpackPCX ASL + ASL + TAX + LDA ptrIMAGE1,X + CLC + ADC #$0080 ; entête de 128 octets + STA $24 + LDA ptrIMAGE1+2,X + ADC #$0000 + STA $26 + STZ numLIGNE + LDA lineBANK1 + STA $04 + LDA lineBANK1+2 + STA $06 + LDY #$0000 +L1A98 JSR L1AE2 + CMP #$00C0 + BCC L1AB8 + AND #$003F + STA PCXcnt + JSR L1AE2 +L1AA9 STA [$04],Y + INY + CPY #$FA00 + BCS L1AC0 + DEC PCXcnt + BNE L1AA9 + BRA L1A98 +L1AB8 STA [$04],Y + INY + CPY #$FA00 + BNE L1A98 + +L1AC0 LDA numLIGNE ; on a 100 lignes par banc + CLC + ADC #100 + STA numLIGNE + CMP #$0190 + BCS L1AE1 + ASL + ASL + TAY + LDA lineBANK1,Y + STA $04 + LDA lineBANK1+2,Y + STA $06 + LDY #$0000 + BRA L1A98 +L1AE1 RTS + +L1AE2 LDA [$24] + AND #$00FF + INC $24 + BNE L1AED + INC $26 +L1AED RTS + +PCXcnt DS 2 +numLIGNE DS 2 + +*--- Affiche l'image avec un fade in + +showIMAGE + ASL + ASL + TAX + LDA ptrPANEL1,X + STA $20 + LDA ptrPANEL1+2,X + STA $20+2 + LDY #768-2 +]lp LDA [$20],Y + STA refPALETTE,Y + DEY + DEY + BPL ]lp + + LDA #0 + STA firstLINE + LDA #400-1 + STA lastLINE + JSR refreshSCREEN + +*--- + +fadeIN LDY #$0100 +L1B1D PHY + LDX #$02FF + SEP #$20 +L1B23 LDA thePALETTE,X + CMP refPALETTE,X + BEQ L1B4F + INC thePALETTE,X + LDA thePALETTE,X + CMP refPALETTE,X + BEQ L1B4F + INC thePALETTE,X + LDA thePALETTE,X + CMP refPALETTE,X + BEQ L1B4F + INC thePALETTE,X + LDA thePALETTE,X + CMP refPALETTE,X + BEQ L1B4F + INC thePALETTE,X +L1B4F DEX + BPL L1B23 + REP #$20 + PEA ^thePALETTE + PEA thePALETTE + JSL _xSetPalette + PLY + DEY + BNE L1B1D + RTS + +fadeOUT LDY #$0100 +L1B66 PHY + LDX #$02FF + SEP #$20 +L1B6C LDA thePALETTE,X + BEQ L1B83 + DEC thePALETTE,X + BEQ L1B83 + DEC thePALETTE,X + BEQ L1B83 + DEC thePALETTE,X + BEQ L1B83 + DEC thePALETTE,X +L1B83 DEX + BPL L1B6C + REP #$20 + PEA ^thePALETTE + PEA thePALETTE + JSL _xSetPalette + PLY + DEY + BNE L1B66 + RTS + + ASC 8D8D + ASC 'The finest clothes on Peer 39 : a Wallace & Gromit T-Shirt !!!'8D8D + +*--- Affiche une chaine de nombres (petits caracteres) en rouge (8x12) + +printNUMR + PHA + LDA #sprNumR + STA L1C23+1 + STA L1C2B+1 + PLA + BRA L1BF1 + +*--- Affiche une chaine de nombres (petits caracteres) en jaune (8x12) + +printNUMJ + PHA + LDA #sprNumJ + STA L1C23+1 + STA L1C2B+1 + PLA + +L1BF1 STA L1BFA+1 + STX SprX + STY SprY +L1BFA LDA $FFFF + AND #$00FF + BNE L1C13 + LDA SprY + STA firstY4 + CLC + ADC #$000D + STA lastY4 + JSR refreshPANEL + RTS + +L1C13 CMP #$0020 + BNE L1C1B + LDA #'0' +L1C1B SEC + SBC #'0' + ASL + TAX + INX + INX +L1C23 LDA sprNumR,X + STA L1C66+1 + DEX + DEX +L1C2B LDA sprNumR,X + TAX + LDY SprY +L1C32 PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $10 + LDA lineBANK1+2,Y + STA $12 + LDY SprX + LDA |$0000,X + STA [$10],Y + INY + INY + LDA |$0002,X + STA [$10],Y + INY + INY + LDA |$0004,X + STA [$10],Y + INY + INY + LDA |$0006,X + STA [$10],Y + PLY + INY + TXA + CLC + ADC #8 + TAX +L1C66 CPX #$FFFF + BNE L1C32 + LDA SprX + CLC + ADC #8 + STA SprX + INC L1BFA+1 + BRL L1BFA + +*-------------------------- +* Routines sonores +*-------------------------- + +initSOUND PHA + _SoundToolStatus + PLA + BPL L1C8A + INC fgNOSOUND + RTS + +L1C8A TDC + CLC + ADC #$0100 + PHA + _SoundStartUp + + PHA ; load click sound + PHA + PEA $BDBD + PEA $0000 + PEA $0001 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrSOUND1 + LDY #$0002 + LDA [$03],Y + STA ptrSOUND1+2 + PLD + PLA + STA haSOUND1 + PLA + STA haSOUND1+2 + BCC L1CC7 + INC fgNOSOUND1 + +L1CC7 PHA ; load tada sound + PHA + PEA $BDBD + PEA $0000 + PEA $0002 + _LoadResource + PHD + TSC + TCD + LDA [$03] + STA ptrSOUND2 + LDY #$0002 + LDA [$03],Y + STA ptrSOUND2+2 + PLD + PLA + STA haSOUND2 + PLA + STA haSOUND2+2 + BCC L1CF7 + INC fgNOSOUND2 +L1CF7 RTS + +*--- + +sndOFF LDA fgNOSOUND + BNE L1D04 + _SoundShutDown +L1D04 RTS + +*--- + +playSND LDA fgNOSOUND + ORA fgNOMUSIC + BNE L1D53 + CPX #$0001 + BEQ L1D22 + LDA fgNOSOUND1 + BNE L1D53 + LDX ptrSOUND1+2 + LDY ptrSOUND1 + LDA #$0028 + BRA L1D30 +L1D22 LDA fgNOSOUND2 + BNE L1D53 + LDX ptrSOUND2+2 + LDY ptrSOUND2 + LDA #$00EB +L1D30 STY pZIKptr + STX pZIKptr+2 + STA pZIKptr+4 + + PushWord #%01111111_11111111 + _FFStopSound + PEA $0201 + PEA ^pZIKptr + PEA pZIKptr + _FFStartSound +L1D53 RTS + +pZIKptr DS 4 + DS 2 + DW $01B7 + DW $8000 + DW $0006 + DS 4 + DW $00FF + +fgNOSOUND DS 2 +fgNOSOUND1 DS 2 +fgNOSOUND2 DS 2 +fgNOMUSIC DS 2 + +haSOUND1 DS 4 +haSOUND2 DS 4 +ptrSOUND1 DS 4 +ptrSOUND2 DS 4 + + ASC 8D8D + ASC 'True is not out there... here it is : http://www.cyberstation.fr/~zardini'8D8D + +*--- Mouse routines - See blockade.Mice.s pour plus d'informations + +moREAD JSR moTOOL + LDA moX + CMP oldX + BNE moREAD1 + LDA moY + CMP oldY + BNE moREAD1 + RTS + +moREAD1 JSR moBACK + LDX moX + STX oldX + LDY moY + STY oldY + JSR moFORE + RTS + +moCONTROL + LDA window + ASL + TAX + LDA windowS+2,X + ASL + PHA + LDA windowS,X + ASL + TAX +L1E01 LDA moX + CMP FlecheX1,X + BCC L1E1B + CMP FlecheX2,X + BCS L1E1B + LDA moY + CMP FlecheY1,X + BCC L1E1B + CMP FlecheY2,X + BCC L1E25 +L1E1B INX + INX + TXA + CMP $01,S + BCC L1E01 + LDX #$FFFF + +L1E25 PLA + LDA moBTN0 + AND #$00C0 + CMP #$0040 + BEQ L1E40 + CMP #$0080 + BEQ L1E88 + CMP #$00C0 + BNE L1E3E + BRL L1EB1 +L1E3E SEC + RTS + +*- is up, was down + +L1E40 CPX #$FFFF + BNE L1E63 + LDX windowC + LDA FlecheStatut,X + AND #$0002 + BNE L1E61 + LDA FlecheStatut,X + AND #$0001 + BEQ L1E61 + LDA FlecheStatut,X + AND #$FFFE + STA FlecheStatut,X +L1E61 SEC + RTS + +L1E63 CPX windowC + BNE L1E61 + LDA FlecheStatut,X + AND #$0002 + BNE L1E61 + LDA FlecheStatut,X + AND #$0001 + BEQ L1E84 + LDA FlecheStatut,X + AND #$FFFE + STA FlecheStatut,X + JSR inverseNON +L1E84 TXA + LSR + CLC + RTS + +L1E88 CPX #$FFFF + BEQ L1EAF + LDA FlecheStatut,X + AND #$0002 + BNE L1EAF + STX windowC + LDA FlecheStatut,X + AND #$0001 + BNE L1EAF + LDA FlecheStatut,X + AND #$FFFE + ORA #$0001 + STA FlecheStatut,X + JSR inverseOUI +L1EAF SEC + RTS + +L1EB1 CPX windowC + BEQ L1EDC + LDX windowC + CPX #$FFFF + BEQ L1EDA + LDA FlecheStatut,X + AND #$0002 + BNE L1EDA + LDA FlecheStatut,X + AND #$0001 + BEQ L1EDA + LDA FlecheStatut,X + AND #$FFFE + STA FlecheStatut,X + JSR inverseNON +L1EDA SEC + RTS + +L1EDC CPX #$FFFF + BEQ L1F00 + LDA FlecheStatut,X + AND #$0002 + BNE L1F00 + LDA FlecheStatut,X + AND #$0001 + BNE L1F00 + LDA FlecheStatut,X + AND #$FFFE + ORA #$0001 + STA FlecheStatut,X + JSR inverseOUI +L1F00 SEC + RTS + +inverseOUI + PHX + LDA Fleches2,X + BEQ L1F2D + JSR moBACK + PLX + PHX + LDA FlecheY1,X + STA firstY3 + LDA FlecheY2,X + STA lastY3 + LDA FlecheAffiche,X + STA L1F24+1 + TXY + LDA FlecheSprOui,X + TAX +L1F24 JSR $FFFF + JSR refreshLINE + JSR moFORE +L1F2D PLX + RTS + +inverseNON PHX + LDA Fleches2,X + BEQ L1F5A + JSR moBACK + PLX + PHX + LDA FlecheY1,X + STA firstY3 + LDA FlecheY2,X + STA lastY3 + LDA FlecheAffiche,X + STA L1F51+1 + TXY + LDA FlecheSprNon,X + TAX +L1F51 JSR $FFFF + JSR refreshLINE + JSR moFORE +L1F5A PLX + RTS + +waitMOUSEUP + JSR moTOOL + LDA moBTN0 + CMP #$0040 + BNE waitMOUSEUP + RTS + +*-------------------------------------- + +maximumX = 64 +maximumY = 64 + +*--- + +moTOOL ldal $e0c026 + bpl moTOOL1 + and #%00000010_00000000 + beq moTOOL2 + ldal $e0c024 +moTOOL1 rts + +moTOOL2 ldal $e0c024 + tax + and #%00000000_10000000 + eor #%00000000_10000000 + lsr moBTN1 + eor moBTN1 + and #%00000000_11000000 + sta moBTN1 + + ldal $e0c024 + tay + and #%00000000_10000000 + eor #%00000000_10000000 + lsr moBTN0 + eor moBTN0 + and #%00000000_11000000 + sta moBTN0 + +*- Occupe toi de X + + txa + and #%00000000_00111111 + pha + txa + and #%00000000_01000000 + beq moTOOL3 + + lda moX + clc + adc 1,s + sec + sbc #64 + bcc moTOOL4 + sta moX + bra moTOOL4 + +moTOOL3 lda moX + clc + adc 1,s + cmp #maximumX + bcs moTOOL4 + sta moX + +*- Occupe toi de Y + +moTOOL4 pla ; Recupere la pile + + tya + and #%00000000_00111111 + pha + tya + and #%00000000_01000000 + beq moTOOL6 + + lda moY + clc + adc 1,s + sec + sbc #64 + bcc moTOOL5 + sta moY +moTOOL5 pla + rts + +moTOOL6 lda moY + clc + adc 1,s + cmp #maximumY + bcs moTOOL7 + sta moY +moTOOL7 pla + rts + +*-------------------------------------- + +moBACK LDX #$0000 + LDY oldY +L2003 PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $14 + LDA lineBANK1+2,Y + STA $16 + LDY oldX + LDA moDATA,X + STA [$14],Y + INY + INY + LDA moDATA+2,X + STA [$14],Y + INY + INY + LDA moDATA+4,X + STA [$14],Y + INY + INY + LDA moDATA+6,X + STA [$14],Y + INY + INY + LDA moDATA+8,X + STA [$14],Y + INY + INY + LDA moDATA+$A,X + STA [$14],Y + INY + INY + LDA moDATA+$C,X + STA [$14],Y + PLY + INY + TXA + CLC + ADC #$000E + TAX + CPX #$00C4 + BEQ L2054 + BRL L2003 +L2054 LDA oldX + STA offsetX + LDA oldY + STA firstY2 + CLC + ADC #$000E + STA lastY2 + JSR refreshCURSOR + RTS + +*-------------------------------------- + +moFORE LDX #$0000 + LDY moY +L2071 PHY + TYA + ASL + ASL + TAY + LDA lineBANK1,Y + STA $14 + LDA lineBANK1+2,Y + STA $16 + LDY moX + LDA [$14],Y + STA moDATA,X + AND moMASK,X + ORA moSPRI,X + STA [$14],Y + INY + INY + LDA [$14],Y + STA moDATA+2,X + AND moMASK+2,X + ORA moSPRI+2,X + STA [$14],Y + INY + INY + LDA [$14],Y + STA moDATA+4,X + AND moMASK+4,X + ORA moSPRI+4,X + STA [$14],Y + INY + INY + LDA [$14],Y + STA moDATA+6,X + AND moMASK+6,X + ORA moSPRI+6,X + STA [$14],Y + INY + INY + LDA [$14],Y + STA moDATA+8,X + AND moMASK+8,X + ORA moSPRI+8,X + STA [$14],Y + INY + INY + LDA [$14],Y + STA moDATA+$A,X + AND moMASK+$A,X + ORA moSPRI+$A,X + STA [$14],Y + INY + INY + LDA [$14],Y + STA moDATA+$C,X + AND moMASK+$C,X + ORA moSPRI+$C,X + STA [$14],Y + PLY + INY + TXA + CLC + ADC #$000E + TAX + CPX #$00C4 + BEQ L20FA + BRL L2071 +L20FA LDA moX + STA offsetX + LDA moY + STA firstY2 + CLC + ADC #$000E + STA lastY2 + JSR refreshCURSOR + RTS + +offsetX DS 2 +moX DS 2 +moY DS 2 +moBTN0 DS 2 +moBTN1 DS 2 +oldX DS 2 +oldY DS 2 + +moDATA HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 + HEX 0000000000000000000000000000 +moSPRI HEX 0000000000000000000000000000 + HEX 00FFFFFF00000000000000000000 + HEX 00FFFFFFFFFFFF00000000000000 + HEX 00FFFFFFFFFFFFFFFFFF00000000 + HEX 0000FFFFFFFFFFFFFFFFFFFFFF00 + HEX 0000FFFFFFFFFFFFFFFFFF000000 + HEX 0000FFFFFFFFFFFFFF0000000000 + HEX 000000FFFFFFFF00000000000000 + HEX 000000FFFFFFFF00000000000000 + HEX 000000FFFFFF0000000000000000 + HEX 00000000FFFF0000000000000000 + HEX 00000000FF000000000000000000 + HEX 00000000FF000000000000000000 + HEX 0000000000000000000000000000 +moMASK HEX 00000000FFFFFFFFFFFFFFFFFFFF + HEX 00000000000000FFFFFFFFFFFFFF + HEX 00000000000000000000FFFFFFFF + HEX 00000000000000000000000000FF + HEX FF00000000000000000000000000 + HEX FF000000000000000000000000FF + HEX FF00000000000000000000FFFFFF + HEX FFFF00000000000000FFFFFFFFFF + HEX FFFF000000000000FFFFFFFFFFFF + HEX FFFF0000000000FFFFFFFFFFFFFF + HEX FFFFFF00000000FFFFFFFFFFFFFF + HEX FFFFFF000000FFFFFFFFFFFFFFFF + HEX FFFFFF000000FFFFFFFFFFFFFFFF + HEX FFFFFFFF00FFFFFFFFFFFFFFFFFF + +window DW $0000 ; on'a qu'une fenêtre +windowC DW $FFFF +windowS DW $0000 ; on part du bouton 0 et + DW $0024 ; on a 36 boutons sur le plateau + +*--- Les coordonnees des flèches sur l'écran + +FlecheX1 DW $002A ; X de départ + DW $004D + DW $0070 + DW $0093 + DW $00B6 + DW $00D9 + DW $00FC + DW $011F + DW $0142 + DW $0164 + DW $0164 + DW $0164 + DW $0164 + DW $0164 + DW $0164 + DW $0164 + DW $0164 + DW $0164 + DW $002A + DW $004D + DW $0070 + DW $0093 + DW $00B6 + DW $00D9 + DW $00FC + DW $011F + DW $0142 + DW $0011 + DW $0011 + DW $0011 + DW $0011 + DW $0011 + DW $0011 + DW $0011 + DW $0011 + DW $0011 + +FlecheX2 DW $004C ; X de fin + DW $006F + DW $0092 + DW $00B5 + DW $00D8 + DW $00FB + DW $011E + DW $0141 + DW $0164 + DW $0177 + DW $0177 + DW $0177 + DW $0177 + DW $0177 + DW $0177 + DW $0177 + DW $0177 + DW $0177 + DW $004C + DW $006F + DW $0092 + DW $00B5 + DW $00D8 + DW $00FB + DW $011E + DW $0141 + DW $0164 + DW $0025 + DW $0025 + DW $0025 + DW $0025 + DW $0025 + DW $0025 + DW $0025 + DW $0025 + DW $0025 + +FlecheY1 DW $0006 ; Y de départ + DW $0006 + DW $0006 + DW $0006 + DW $0006 + DW $0006 + DW $0006 + DW $0006 + DW $0006 + DW $001F + DW $0042 + DW $0065 + DW $0088 + DW $00AB + DW $00CE + DW $00F1 + DW $0114 + DW $0137 + DW $0158 + DW $0158 + DW $0158 + DW $0158 + DW $0158 + DW $0158 + DW $0158 + DW $0158 + DW $0158 + DW $001F + DW $0042 + DW $0065 + DW $0088 + DW $00AB + DW $00CE + DW $00F1 + DW $0114 + DW $0137 + +FlecheY2 DW $001A ; Y de fin + DW $001A + DW $001A + DW $001A + DW $001A + DW $001A + DW $001A + DW $001A + DW $001A + DW $0041 + DW $0064 + DW $0087 + DW $00AA + DW $00CD + DW $00F0 + DW $0113 + DW $0136 + DW $0159 + DW $016C + DW $016C + DW $016C + DW $016C + DW $016C + DW $016C + DW $016C + DW $016C + DW $016C + DW $0041 + DW $0064 + DW $0087 + DW $00AA + DW $00CD + DW $00F0 + DW $0113 + DW $0136 + DW $0159 + +*--- Statut des flèches pour la routine de la souris (doit vouloir dire cliquable) + +FlecheStatut + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + DW $0004 + +*--- Sprite d'une fleche non appuyée + +FlecheSprNon + DA LA029 ; flèche haut/bas + DA LA029 + DA LA029 + DA LA029 + DA LA029 + DA LA029 + DA LA029 + DA LA029 + DA LA029 + DA LB037 ; flèche gauche/droite + DA LB037 + DA LB037 + DA LB037 + DA LB037 + DA LB037 + DA LB037 + DA LB037 + DA LB037 + DA LA83F + DA LA83F + DA LA83F + DA LA83F + DA LA83F + DA LA83F + DA LA83F + DA LA83F + DA LA83F + DA LB7F3 + DA LB7F3 + DA LB7F3 + DA LB7F3 + DA LB7F3 + DA LB7F3 + DA LB7F3 + DA LB7F3 + DA LB7F3 + +*--- Sprite d'une fleche appuyée (ou l'inverse) + +FlecheSprOui + DA LA2DB + DA LA2DB + DA LA2DB + DA LA2DB + DA LA2DB + DA LA2DB + DA LA2DB + DA LA2DB + DA LA2DB + DA LB2CB + DA LB2CB + DA LB2CB + DA LB2CB + DA LB2CB + DA LB2CB + DA LB2CB + DA LB2CB + DA LB2CB + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LAAF1 + DA LBA87 + DA LBA87 + DA LBA87 + DA LBA87 + DA LBA87 + DA LBA87 + DA LBA87 + DA LBA87 + DA LBA87 + +*--- Routines d'affichage des flèches + +FlecheAffiche + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintNS + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA PrintEO + DA $0000 + DA $0000 + + ASC 8D8D + ASC 'Cogito for Second Sight : The most beautiful game ever made on Apple IIgs !!! ' + ASC '(ok ok, we perfectly know that beautiful doesn'27't mean interesting... :-()'8D8D + +*---------------------------------------- +* +* Bibliotheque des appels SecondSight +* +* (c) 1995, Brutal Deluxe +* +*---------------------------------------- + +ssCOMMAND = $E0C0B0 +ssWRITEDATA = $E0C0B1 +ssREADDATA = $E0C0B2 +ssHANDSHAKE = $E0C0B8 + +*---------------------------------------- + +initSS JSR calcPTRLIGNES + JSR calcLIGNES + + PEA $03D4 ; Probably Start Address Low Register + PEA $000D ; pour dire où l'image est dans + PEA $03D5 ; la mémoire de la Second Sight + PEA $0000 + JSL _xSetVGAReg + + PEA $03D4 ; Probably Start Address High Register + PEA $000C + PEA $03D5 + PEA $0000 + JSL _xSetVGAReg + + PEA $0000 ; color to set the pixels to + PEA $0000 ; address to start setting pixels at + PEA $0000 + PEA $0007 ; two times 640x400x256 + PEA $D000 + JSL _xClearScreen + + PEA ^thePALETTE ; uploads a complete new palette + PEA thePALETTE + JSL _xSetPalette + + PEA $0061 ; mode $61 - 640x400x256 + PEA $0001 + JSL _xSetMode + RTS + +*--- Prepare les numéros de ligne + +calcPTRLIGNES + LDX #0 + TXA +]lp STA lineBANK1,X + STA lineBANK2,X + STA lineBANK3,X + STA lineBANK4,X + TAY + LDA ptrBANK1+2 + STA lineBANK1+2,X + LDA ptrBANK2+2 + STA lineBANK2+2,X + LDA ptrBANK3+2 + STA lineBANK3+2,X + LDA ptrBANK4+2 + STA lineBANK4+2,X + TYA + CLC + ADC #640 + INX + INX + INX + INX + CPX #400 + BNE ]lp + RTS + +*--- Calcule l'adresse de départ des lignes + +calcLIGNES + LDX #0 + STZ temp + STZ temp+2 +]lp LDA temp + STA Ligne,X + LDA temp+2 + STA Ligne+2,X + LDA temp + CLC + ADC #640 + STA temp + LDA temp+2 + ADC #0 + STA temp+2 + INX + INX + INX + INX + CPX #1600 ; 400*4 + BNE ]lp + RTS + +*--- Refresh une colonne de pions + +refreshCOLUMN + LDA firstY1 +]lp PHA + ASL + ASL + TAY + PEA $0001 + LDA Ligne,Y + CLC + ADC scrX1 + TAX + LDA Ligne+2,Y + ADC #$0000 + PHA + PHX + PEA $0000 + PEA $0022 + LDA lineBANK1,Y + CLC + ADC scrX1 + TAX + LDA lineBANK1+2,Y + ADC #$0000 + PHA + PHX + JSL vgaCOLUMN + PLA + CLC + ADC #$0001 + CMP lastY1 + BCC ]lp + BEQ ]lp + RTS + +*--- Draw the mouse cursor onto the VGA buffer + +refreshCURSOR + LDA firstY2 +]lp PHA + ASL + ASL + TAY + PEA $0001 + LDA Ligne,Y + CLC + ADC offsetX + TAX + LDA Ligne+2,Y + ADC #$0000 + PHA + PHX + PEA $0000 + PEA $000E + LDA lineBANK1,Y + CLC + ADC offsetX + TAX + LDA lineBANK1+2,Y + ADC #$0000 + PHA + PHX + JSL vgaMOUSE + PLA + CLC + ADC #$0001 + CMP lastY2 + BCC ]lp + BEQ ]lp + RTS + +*--- Refresh une ligne de pions + +refreshLINE + LDA firstY3 +]lp PHA + ASL + ASL + TAY + PEA $0001 + LDA Ligne+2,Y + PHA + LDA Ligne,Y + PHA + PEA $0000 + PEA $0190 + LDA lineBANK1+2,Y + PHA + LDA lineBANK1,Y + PHA + JSL vgaLINE + PLA + CLC + ADC #$0001 + CMP lastY3 + BCC ]lp + BEQ ]lp + RTS + +*--- Refresh the panel area + +refreshPANEL + LDA firstY4 +]lp PHA + ASL + ASL + TAY + PEA $0001 + LDA Ligne,Y + CLC + ADC PanelX + TAX + LDA Ligne+2,Y + ADC #$0000 + PHA + PHX + PEA $0000 + PEA $0050 + LDA lineBANK1,Y + CLC + ADC PanelX + TAX + LDA lineBANK1+2,Y + ADC #$0000 + PHA + PHX + JSL vgaPANEL + PLA + CLC + ADC #1 + CMP lastY4 + BCC ]lp + BEQ ]lp + RTS + +*--- Refresh full screen + +refreshSCREEN + LDA firstLINE +]lp PHA + ASL + ASL + TAY + PEA $0001 + LDA Ligne+2,Y + PHA + LDA Ligne,Y + PHA + PEA $0000 + PEA $0280 + LDA lineBANK1+2,Y + PHA + LDA lineBANK1,Y + PHA + JSL vgaSCREEN + PLA + CLC + ADC #1 + CMP lastLINE + BCC ]lp + BEQ ]lp + RTS + +*---------------------------------------- +* Low-Level VGA routines +*---------------------------------------- + +vgaCOLUMN + TSC ; Recopie de 34 pixels + SEC + SBC #$0006 + TCS + PHD + TCD + STZ $05 + PHP + SEI + LDA #$0000 + SEP #$20 + LDA #$02 + STAL ssCOMMAND + LDA #$01 +L2848 CMPL ssHANDSHAKE + BNE L2848 + LDA $16 + STAL ssWRITEDATA + LDA $12 + STAL ssWRITEDATA + LDA $13 + STAL ssWRITEDATA + LDA $14 + STAL ssWRITEDATA + LDA $0E + STAL ssWRITEDATA + LDA $0F + STAL ssWRITEDATA + LDA $10 + STAL ssWRITEDATA + LDA $0A + STAL ssWRITEDATA + LDA $0B + STAL ssWRITEDATA + LDA $0C + STAL ssWRITEDATA + LDA #$00 +L288C CMPL ssHANDSHAKE + BNE L288C + LDA #$01 +L2894 CMPL ssHANDSHAKE + BNE L2894 + REP #$20 + PHB + LDA $0C + LDX $0A + SEP #$20 + PHA + PLB + REP #$20 + PHD + LDA #$C000 + TCD + LDA |$0000,X + STA $B1 + LDA |$0002,X + STA $B1 + LDA |$0004,X + STA $B1 + LDA |$0006,X + STA $B1 + LDA |$0008,X + STA $B1 + LDA |$000A,X + STA $B1 + LDA |$000C,X + STA $B1 + LDA |$000E,X + STA $B1 + LDA |$0010,X + STA $B1 + LDA |$0012,X + STA $B1 + LDA |$0014,X + STA $B1 + LDA |$0016,X + STA $B1 + LDA |$0018,X + STA $B1 + LDA |$001A,X + STA $B1 + LDA |$001C,X + STA $B1 + LDA |$001E,X + STA $B1 + LDA |$0020,X + STA $B1 + PLD + PLB + SEP #$20 + LDA #$00 +L2907 CMPL ssHANDSHAKE + BNE L2907 + PLP + MX %00 + LDA $08 + STA $16 + LDA $07 + STA $15 + PLD + TSC + CLC + ADC #$0014 + TCS + RTL + +*---------------------------------------- + +vgaMOUSE + TSC ; Recopie de 14 pixels + SEC + SBC #$0006 + TCS + PHD + TCD + STZ $05 + PHP + SEI + LDA #$0000 + SEP #$20 + LDA #$02 + STAL ssCOMMAND + LDA #$01 +L2937 CMPL ssHANDSHAKE + BNE L2937 + LDA $16 + STAL ssWRITEDATA + LDA $12 + STAL ssWRITEDATA + LDA $13 + STAL ssWRITEDATA + LDA $14 + STAL ssWRITEDATA + LDA $0E + STAL ssWRITEDATA + LDA $0F + STAL ssWRITEDATA + LDA $10 + STAL ssWRITEDATA + LDA $0A + STAL ssWRITEDATA + LDA $0B + STAL ssWRITEDATA + LDA $0C + STAL ssWRITEDATA + LDA #$00 +L297B CMPL ssHANDSHAKE + BNE L297B + LDA #$01 +L2983 CMPL ssHANDSHAKE + BNE L2983 + REP #$20 + PHB + LDA $0C + LDX $0A + SEP #$20 + PHA + PLB + REP #$20 + PHD + LDA #$C000 + TCD + LDA |$0000,X + STA $B1 + LDA |$0002,X + STA $B1 + LDA |$0004,X + STA $B1 + LDA |$0006,X + STA $B1 + LDA |$0008,X + STA $B1 + LDA |$000A,X + STA $B1 + LDA |$000C,X + STA $B1 + PLD + PLB + SEP #$20 + LDA #$00 +L29C4 CMPL ssHANDSHAKE + BNE L29C4 + MX %00 + PLP + LDA $08 + STA $16 + LDA $07 + STA $15 + PLD + TSC + CLC + ADC #$0014 + TCS + RTL + +*---------------------------------------- + +vgaLINE + TSC ; Recopie de 400 pixels + SEC + SBC #$0006 + TCS + PHD + TCD + STZ $05 + PHP + SEI + LDA #$0000 + SEP #$20 + LDA #$02 + STAL ssCOMMAND + LDA #$01 +L29F4 CMPL ssHANDSHAKE + BNE L29F4 + LDA $16 + STAL ssWRITEDATA + LDA $12 + STAL ssWRITEDATA + LDA $13 + STAL ssWRITEDATA + LDA $14 + STAL ssWRITEDATA + LDA $0E + STAL ssWRITEDATA + LDA $0F + STAL ssWRITEDATA + LDA $10 + STAL ssWRITEDATA + LDA $0A + STAL ssWRITEDATA + LDA $0B + STAL ssWRITEDATA + LDA $0C + STAL ssWRITEDATA + LDA #$00 +L2A38 CMPL ssHANDSHAKE + BNE L2A38 + LDA #$01 +L2A40 CMPL ssHANDSHAKE + BNE L2A40 + REP #$20 + PHB + LDA $0C + LDX $0A + SEP #$20 + PHA + PLB + REP #$20 + PHD + LDA #$C000 + TCD + LDA |$0000,X + STA $B1 + LDA |$0002,X + STA $B1 + LDA |$0004,X + STA $B1 + LDA |$0006,X + STA $B1 + LDA |$0008,X + STA $B1 + LDA |$000A,X + STA $B1 + LDA |$000C,X + STA $B1 + LDA |$000E,X + STA $B1 + LDA |$0010,X + STA $B1 + LDA |$0012,X + STA $B1 + LDA |$0014,X + STA $B1 + LDA |$0016,X + STA $B1 + LDA |$0018,X + STA $B1 + LDA |$001A,X + STA $B1 + LDA |$001C,X + STA $B1 + LDA |$001E,X + STA $B1 + LDA |$0020,X + STA $B1 + LDA |$0022,X + STA $B1 + LDA |$0024,X + STA $B1 + LDA |$0026,X + STA $B1 + LDA |$0028,X + STA $B1 + LDA |$002A,X + STA $B1 + LDA |$002C,X + STA $B1 + LDA |$002E,X + STA $B1 + LDA |$0030,X + STA $B1 + LDA |$0032,X + STA $B1 + LDA |$0034,X + STA $B1 + LDA |$0036,X + STA $B1 + LDA |$0038,X + STA $B1 + LDA |$003A,X + STA $B1 + LDA |$003C,X + STA $B1 + LDA |$003E,X + STA $B1 + LDA |$0040,X + STA $B1 + LDA |$0042,X + STA $B1 + LDA |$0044,X + STA $B1 + LDA |$0046,X + STA $B1 + LDA |$0048,X + STA $B1 + LDA |$004A,X + STA $B1 + LDA |$004C,X + STA $B1 + LDA |$004E,X + STA $B1 + LDA |$0050,X + STA $B1 + LDA |$0052,X + STA $B1 + LDA |$0054,X + STA $B1 + LDA |$0056,X + STA $B1 + LDA |$0058,X + STA $B1 + LDA |$005A,X + STA $B1 + LDA |$005C,X + STA $B1 + LDA |$005E,X + STA $B1 + LDA |$0060,X + STA $B1 + LDA |$0062,X + STA $B1 + LDA |$0064,X + STA $B1 + LDA |$0066,X + STA $B1 + LDA |$0068,X + STA $B1 + LDA |$006A,X + STA $B1 + LDA |$006C,X + STA $B1 + LDA |$006E,X + STA $B1 + LDA |$0070,X + STA $B1 + LDA |$0072,X + STA $B1 + LDA |$0074,X + STA $B1 + LDA |$0076,X + STA $B1 + LDA |$0078,X + STA $B1 + LDA |$007A,X + STA $B1 + LDA |$007C,X + STA $B1 + LDA |$007E,X + STA $B1 + LDA |$0080,X + STA $B1 + LDA |$0082,X + STA $B1 + LDA |$0084,X + STA $B1 + LDA |$0086,X + STA $B1 + LDA |$0088,X + STA $B1 + LDA |$008A,X + STA $B1 + LDA |$008C,X + STA $B1 + LDA |$008E,X + STA $B1 + LDA |$0090,X + STA $B1 + LDA |$0092,X + STA $B1 + LDA |$0094,X + STA $B1 + LDA |$0096,X + STA $B1 + LDA |$0098,X + STA $B1 + LDA |$009A,X + STA $B1 + LDA |$009C,X + STA $B1 + LDA |$009E,X + STA $B1 + LDA |$00A0,X + STA $B1 + LDA |$00A2,X + STA $B1 + LDA |$00A4,X + STA $B1 + LDA |$00A6,X + STA $B1 + LDA |$00A8,X + STA $B1 + LDA |$00AA,X + STA $B1 + LDA |$00AC,X + STA $B1 + LDA |$00AE,X + STA $B1 + LDA |$00B0,X + STA $B1 + LDA |$00B2,X + STA $B1 + LDA |$00B4,X + STA $B1 + LDA |$00B6,X + STA $B1 + LDA |$00B8,X + STA $B1 + LDA |$00BA,X + STA $B1 + LDA |$00BC,X + STA $B1 + LDA |$00BE,X + STA $B1 + LDA |$00C0,X + STA $B1 + LDA |$00C2,X + STA $B1 + LDA |$00C4,X + STA $B1 + LDA |$00C6,X + STA $B1 + LDA |$00C8,X + STA $B1 + LDA |$00CA,X + STA $B1 + LDA |$00CC,X + STA $B1 + LDA |$00CE,X + STA $B1 + LDA |$00D0,X + STA $B1 + LDA |$00D2,X + STA $B1 + LDA |$00D4,X + STA $B1 + LDA |$00D6,X + STA $B1 + LDA |$00D8,X + STA $B1 + LDA |$00DA,X + STA $B1 + LDA |$00DC,X + STA $B1 + LDA |$00DE,X + STA $B1 + LDA |$00E0,X + STA $B1 + LDA |$00E2,X + STA $B1 + LDA |$00E4,X + STA $B1 + LDA |$00E6,X + STA $B1 + LDA |$00E8,X + STA $B1 + LDA |$00EA,X + STA $B1 + LDA |$00EC,X + STA $B1 + LDA |$00EE,X + STA $B1 + LDA |$00F0,X + STA $B1 + LDA |$00F2,X + STA $B1 + LDA |$00F4,X + STA $B1 + LDA |$00F6,X + STA $B1 + LDA |$00F8,X + STA $B1 + LDA |$00FA,X + STA $B1 + LDA |$00FC,X + STA $B1 + LDA |$00FE,X + STA $B1 + LDA $0100,X + STA $B1 + LDA $0102,X + STA $B1 + LDA $0104,X + STA $B1 + LDA $0106,X + STA $B1 + LDA $0108,X + STA $B1 + LDA $010A,X + STA $B1 + LDA $010C,X + STA $B1 + LDA $010E,X + STA $B1 + LDA $0110,X + STA $B1 + LDA $0112,X + STA $B1 + LDA $0114,X + STA $B1 + LDA $0116,X + STA $B1 + LDA $0118,X + STA $B1 + LDA $011A,X + STA $B1 + LDA $011C,X + STA $B1 + LDA $011E,X + STA $B1 + LDA $0120,X + STA $B1 + LDA $0122,X + STA $B1 + LDA $0124,X + STA $B1 + LDA $0126,X + STA $B1 + LDA $0128,X + STA $B1 + LDA $012A,X + STA $B1 + LDA $012C,X + STA $B1 + LDA $012E,X + STA $B1 + LDA $0130,X + STA $B1 + LDA $0132,X + STA $B1 + LDA $0134,X + STA $B1 + LDA $0136,X + STA $B1 + LDA $0138,X + STA $B1 + LDA $013A,X + STA $B1 + LDA $013C,X + STA $B1 + LDA $013E,X + STA $B1 + LDA $0140,X + STA $B1 + LDA $0142,X + STA $B1 + LDA $0144,X + STA $B1 + LDA $0146,X + STA $B1 + LDA $0148,X + STA $B1 + LDA $014A,X + STA $B1 + LDA $014C,X + STA $B1 + LDA $014E,X + STA $B1 + LDA $0150,X + STA $B1 + LDA $0152,X + STA $B1 + LDA $0154,X + STA $B1 + LDA $0156,X + STA $B1 + LDA $0158,X + STA $B1 + LDA $015A,X + STA $B1 + LDA $015C,X + STA $B1 + LDA $015E,X + STA $B1 + LDA $0160,X + STA $B1 + LDA $0162,X + STA $B1 + LDA $0164,X + STA $B1 + LDA $0166,X + STA $B1 + LDA $0168,X + STA $B1 + LDA $016A,X + STA $B1 + LDA $016C,X + STA $B1 + LDA $016E,X + STA $B1 + LDA $0170,X + STA $B1 + LDA $0172,X + STA $B1 + LDA $0174,X + STA $B1 + LDA $0176,X + STA $B1 + LDA $0178,X + STA $B1 + LDA $017A,X + STA $B1 + LDA $017C,X + STA $B1 + LDA $017E,X + STA $B1 + LDA $0180,X + STA $B1 + LDA $0182,X + STA $B1 + LDA $0184,X + STA $B1 + LDA $0186,X + STA $B1 + LDA $0188,X + STA $B1 + LDA $018A,X + STA $B1 + LDA $018C,X + STA $B1 + LDA $018E,X + STA $B1 + PLD + PLB + SEP #$20 + LDA #$00 +L2E46 CMPL ssHANDSHAKE + BNE L2E46 + MX %00 + PLP + LDA $08 + STA $16 + LDA $07 + STA $15 + PLD + TSC + CLC + ADC #$0014 + TCS + RTL + +*---------------------------------------- + +vgaPANEL + TSC ; Recopiede 80 pixels + SEC + SBC #$0006 + TCS + PHD + TCD + STZ $05 + PHP + SEI + LDA #$0000 + SEP #$20 + LDA #$02 + STAL ssCOMMAND + LDA #$01 +L2E76 CMPL ssHANDSHAKE + BNE L2E76 + LDA $16 + STAL ssWRITEDATA + LDA $12 + STAL ssWRITEDATA + LDA $13 + STAL ssWRITEDATA + LDA $14 + STAL ssWRITEDATA + LDA $0E + STAL ssWRITEDATA + LDA $0F + STAL ssWRITEDATA + LDA $10 + STAL ssWRITEDATA + LDA $0A + STAL ssWRITEDATA + LDA $0B + STAL ssWRITEDATA + LDA $0C + STAL ssWRITEDATA + LDA #$00 +L2EBA CMPL ssHANDSHAKE + BNE L2EBA + LDA #$01 +L2EC2 CMPL ssHANDSHAKE + BNE L2EC2 + REP #$20 + PHB + LDA $0C + LDX $0A + SEP #$20 + PHA + PLB + REP #$20 + PHD + LDA #$C000 + TCD + LDA |$0000,X + STA $B1 + LDA |$0002,X + STA $B1 + LDA |$0004,X + STA $B1 + LDA |$0006,X + STA $B1 + LDA |$0008,X + STA $B1 + LDA |$000A,X + STA $B1 + LDA |$000C,X + STA $B1 + LDA |$000E,X + STA $B1 + LDA |$0010,X + STA $B1 + LDA |$0012,X + STA $B1 + LDA |$0014,X + STA $B1 + LDA |$0016,X + STA $B1 + LDA |$0018,X + STA $B1 + LDA |$001A,X + STA $B1 + LDA |$001C,X + STA $B1 + LDA |$001E,X + STA $B1 + LDA |$0020,X + STA $B1 + LDA |$0022,X + STA $B1 + LDA |$0024,X + STA $B1 + LDA |$0026,X + STA $B1 + LDA |$0028,X + STA $B1 + LDA |$002A,X + STA $B1 + LDA |$002C,X + STA $B1 + LDA |$002E,X + STA $B1 + LDA |$0030,X + STA $B1 + LDA |$0032,X + STA $B1 + LDA |$0034,X + STA $B1 + LDA |$0036,X + STA $B1 + LDA |$0038,X + STA $B1 + LDA |$003A,X + STA $B1 + LDA |$003C,X + STA $B1 + LDA |$003E,X + STA $B1 + LDA |$0040,X + STA $B1 + LDA |$0042,X + STA $B1 + LDA |$0044,X + STA $B1 + LDA |$0046,X + STA $B1 + LDA |$0048,X + STA $B1 + LDA |$004A,X + STA $B1 + LDA |$004C,X + STA $B1 + LDA |$004E,X + STA $B1 + PLD + PLB + SEP #$20 + LDA #$00 +L2FA8 CMPL ssHANDSHAKE + BNE L2FA8 + MX %00 + PLP + LDA $08 + STA $16 + LDA $07 + STA $15 + PLD + TSC + CLC + ADC #$0014 + TCS + RTL + +*---------------------------------------- + +vgaSCREEN + TSC ; Recopie une ligne de 640 pixels + SEC + SBC #$0006 + TCS + PHD + TCD + STZ $05 + PHP + SEI + LDA #$0000 + SEP #$20 + LDA #$02 + STAL ssCOMMAND + LDA #$01 +L2FD8 CMPL ssHANDSHAKE + BNE L2FD8 + LDA $16 + STAL ssWRITEDATA + LDA $12 + STAL ssWRITEDATA + LDA $13 + STAL ssWRITEDATA + LDA $14 + STAL ssWRITEDATA + LDA $0E + STAL ssWRITEDATA + LDA $0F + STAL ssWRITEDATA + LDA $10 + STAL ssWRITEDATA + LDA $0A + STAL ssWRITEDATA + LDA $0B + STAL ssWRITEDATA + LDA $0C + STAL ssWRITEDATA + LDA #$00 +L301C CMPL ssHANDSHAKE + BNE L301C + LDA #$01 +L3024 CMPL ssHANDSHAKE + BNE L3024 + REP #$20 + PHB + LDA $0C + LDX $0A + SEP #$20 + PHA + PLB + REP #$20 + PHD + LDA #$C000 + TCD + LDA |$0000,X + STA $B1 + LDA |$0002,X + STA $B1 + LDA |$0004,X + STA $B1 + LDA |$0006,X + STA $B1 + LDA |$0008,X + STA $B1 + LDA |$000A,X + STA $B1 + LDA |$000C,X + STA $B1 + LDA |$000E,X + STA $B1 + LDA |$0010,X + STA $B1 + LDA |$0012,X + STA $B1 + LDA |$0014,X + STA $B1 + LDA |$0016,X + STA $B1 + LDA |$0018,X + STA $B1 + LDA |$001A,X + STA $B1 + LDA |$001C,X + STA $B1 + LDA |$001E,X + STA $B1 + LDA |$0020,X + STA $B1 + LDA |$0022,X + STA $B1 + LDA |$0024,X + STA $B1 + LDA |$0026,X + STA $B1 + LDA |$0028,X + STA $B1 + LDA |$002A,X + STA $B1 + LDA |$002C,X + STA $B1 + LDA |$002E,X + STA $B1 + LDA |$0030,X + STA $B1 + LDA |$0032,X + STA $B1 + LDA |$0034,X + STA $B1 + LDA |$0036,X + STA $B1 + LDA |$0038,X + STA $B1 + LDA |$003A,X + STA $B1 + LDA |$003C,X + STA $B1 + LDA |$003E,X + STA $B1 + LDA |$0040,X + STA $B1 + LDA |$0042,X + STA $B1 + LDA |$0044,X + STA $B1 + LDA |$0046,X + STA $B1 + LDA |$0048,X + STA $B1 + LDA |$004A,X + STA $B1 + LDA |$004C,X + STA $B1 + LDA |$004E,X + STA $B1 + LDA |$0050,X + STA $B1 + LDA |$0052,X + STA $B1 + LDA |$0054,X + STA $B1 + LDA |$0056,X + STA $B1 + LDA |$0058,X + STA $B1 + LDA |$005A,X + STA $B1 + LDA |$005C,X + STA $B1 + LDA |$005E,X + STA $B1 + LDA |$0060,X + STA $B1 + LDA |$0062,X + STA $B1 + LDA |$0064,X + STA $B1 + LDA |$0066,X + STA $B1 + LDA |$0068,X + STA $B1 + LDA |$006A,X + STA $B1 + LDA |$006C,X + STA $B1 + LDA |$006E,X + STA $B1 + LDA |$0070,X + STA $B1 + LDA |$0072,X + STA $B1 + LDA |$0074,X + STA $B1 + LDA |$0076,X + STA $B1 + LDA |$0078,X + STA $B1 + LDA |$007A,X + STA $B1 + LDA |$007C,X + STA $B1 + LDA |$007E,X + STA $B1 + LDA |$0080,X + STA $B1 + LDA |$0082,X + STA $B1 + LDA |$0084,X + STA $B1 + LDA |$0086,X + STA $B1 + LDA |$0088,X + STA $B1 + LDA |$008A,X + STA $B1 + LDA |$008C,X + STA $B1 + LDA |$008E,X + STA $B1 + LDA |$0090,X + STA $B1 + LDA |$0092,X + STA $B1 + LDA |$0094,X + STA $B1 + LDA |$0096,X + STA $B1 + LDA |$0098,X + STA $B1 + LDA |$009A,X + STA $B1 + LDA |$009C,X + STA $B1 + LDA |$009E,X + STA $B1 + LDA |$00A0,X + STA $B1 + LDA |$00A2,X + STA $B1 + LDA |$00A4,X + STA $B1 + LDA |$00A6,X + STA $B1 + LDA |$00A8,X + STA $B1 + LDA |$00AA,X + STA $B1 + LDA |$00AC,X + STA $B1 + LDA |$00AE,X + STA $B1 + LDA |$00B0,X + STA $B1 + LDA |$00B2,X + STA $B1 + LDA |$00B4,X + STA $B1 + LDA |$00B6,X + STA $B1 + LDA |$00B8,X + STA $B1 + LDA |$00BA,X + STA $B1 + LDA |$00BC,X + STA $B1 + LDA |$00BE,X + STA $B1 + LDA |$00C0,X + STA $B1 + LDA |$00C2,X + STA $B1 + LDA |$00C4,X + STA $B1 + LDA |$00C6,X + STA $B1 + LDA |$00C8,X + STA $B1 + LDA |$00CA,X + STA $B1 + LDA |$00CC,X + STA $B1 + LDA |$00CE,X + STA $B1 + LDA |$00D0,X + STA $B1 + LDA |$00D2,X + STA $B1 + LDA |$00D4,X + STA $B1 + LDA |$00D6,X + STA $B1 + LDA |$00D8,X + STA $B1 + LDA |$00DA,X + STA $B1 + LDA |$00DC,X + STA $B1 + LDA |$00DE,X + STA $B1 + LDA |$00E0,X + STA $B1 + LDA |$00E2,X + STA $B1 + LDA |$00E4,X + STA $B1 + LDA |$00E6,X + STA $B1 + LDA |$00E8,X + STA $B1 + LDA |$00EA,X + STA $B1 + LDA |$00EC,X + STA $B1 + LDA |$00EE,X + STA $B1 + LDA |$00F0,X + STA $B1 + LDA |$00F2,X + STA $B1 + LDA |$00F4,X + STA $B1 + LDA |$00F6,X + STA $B1 + LDA |$00F8,X + STA $B1 + LDA |$00FA,X + STA $B1 + LDA |$00FC,X + STA $B1 + LDA |$00FE,X + STA $B1 + LDA $0100,X + STA $B1 + LDA $0102,X + STA $B1 + LDA $0104,X + STA $B1 + LDA $0106,X + STA $B1 + LDA $0108,X + STA $B1 + LDA $010A,X + STA $B1 + LDA $010C,X + STA $B1 + LDA $010E,X + STA $B1 + LDA $0110,X + STA $B1 + LDA $0112,X + STA $B1 + LDA $0114,X + STA $B1 + LDA $0116,X + STA $B1 + LDA $0118,X + STA $B1 + LDA $011A,X + STA $B1 + LDA $011C,X + STA $B1 + LDA $011E,X + STA $B1 + LDA $0120,X + STA $B1 + LDA $0122,X + STA $B1 + LDA $0124,X + STA $B1 + LDA $0126,X + STA $B1 + LDA $0128,X + STA $B1 + LDA $012A,X + STA $B1 + LDA $012C,X + STA $B1 + LDA $012E,X + STA $B1 + LDA $0130,X + STA $B1 + LDA $0132,X + STA $B1 + LDA $0134,X + STA $B1 + LDA $0136,X + STA $B1 + LDA $0138,X + STA $B1 + LDA $013A,X + STA $B1 + LDA $013C,X + STA $B1 + LDA $013E,X + STA $B1 + LDA $0140,X + STA $B1 + LDA $0142,X + STA $B1 + LDA $0144,X + STA $B1 + LDA $0146,X + STA $B1 + LDA $0148,X + STA $B1 + LDA $014A,X + STA $B1 + LDA $014C,X + STA $B1 + LDA $014E,X + STA $B1 + LDA $0150,X + STA $B1 + LDA $0152,X + STA $B1 + LDA $0154,X + STA $B1 + LDA $0156,X + STA $B1 + LDA $0158,X + STA $B1 + LDA $015A,X + STA $B1 + LDA $015C,X + STA $B1 + LDA $015E,X + STA $B1 + LDA $0160,X + STA $B1 + LDA $0162,X + STA $B1 + LDA $0164,X + STA $B1 + LDA $0166,X + STA $B1 + LDA $0168,X + STA $B1 + LDA $016A,X + STA $B1 + LDA $016C,X + STA $B1 + LDA $016E,X + STA $B1 + LDA $0170,X + STA $B1 + LDA $0172,X + STA $B1 + LDA $0174,X + STA $B1 + LDA $0176,X + STA $B1 + LDA $0178,X + STA $B1 + LDA $017A,X + STA $B1 + LDA $017C,X + STA $B1 + LDA $017E,X + STA $B1 + LDA $0180,X + STA $B1 + LDA $0182,X + STA $B1 + LDA $0184,X + STA $B1 + LDA $0186,X + STA $B1 + LDA $0188,X + STA $B1 + LDA $018A,X + STA $B1 + LDA $018C,X + STA $B1 + LDA $018E,X + STA $B1 + LDA $0190,X + STA $B1 + LDA $0192,X + STA $B1 + LDA $0194,X + STA $B1 + LDA $0196,X + STA $B1 + LDA $0198,X + STA $B1 + LDA $019A,X + STA $B1 + LDA $019C,X + STA $B1 + LDA $019E,X + STA $B1 + LDA $01A0,X + STA $B1 + LDA $01A2,X + STA $B1 + LDA $01A4,X + STA $B1 + LDA $01A6,X + STA $B1 + LDA $01A8,X + STA $B1 + LDA $01AA,X + STA $B1 + LDA $01AC,X + STA $B1 + LDA $01AE,X + STA $B1 + LDA $01B0,X + STA $B1 + LDA $01B2,X + STA $B1 + LDA $01B4,X + STA $B1 + LDA $01B6,X + STA $B1 + LDA $01B8,X + STA $B1 + LDA $01BA,X + STA $B1 + LDA $01BC,X + STA $B1 + LDA $01BE,X + STA $B1 + LDA $01C0,X + STA $B1 + LDA $01C2,X + STA $B1 + LDA $01C4,X + STA $B1 + LDA $01C6,X + STA $B1 + LDA $01C8,X + STA $B1 + LDA $01CA,X + STA $B1 + LDA $01CC,X + STA $B1 + LDA $01CE,X + STA $B1 + LDA $01D0,X + STA $B1 + LDA $01D2,X + STA $B1 + LDA $01D4,X + STA $B1 + LDA $01D6,X + STA $B1 + LDA $01D8,X + STA $B1 + LDA $01DA,X + STA $B1 + LDA $01DC,X + STA $B1 + LDA $01DE,X + STA $B1 + LDA $01E0,X + STA $B1 + LDA $01E2,X + STA $B1 + LDA $01E4,X + STA $B1 + LDA $01E6,X + STA $B1 + LDA $01E8,X + STA $B1 + LDA $01EA,X + STA $B1 + LDA $01EC,X + STA $B1 + LDA $01EE,X + STA $B1 + LDA $01F0,X + STA $B1 + LDA $01F2,X + STA $B1 + LDA $01F4,X + STA $B1 + LDA $01F6,X + STA $B1 + LDA $01F8,X + STA $B1 + LDA $01FA,X + STA $B1 + LDA $01FC,X + STA $B1 + LDA $01FE,X + STA $B1 + LDA $0200,X + STA $B1 + LDA $0202,X + STA $B1 + LDA $0204,X + STA $B1 + LDA $0206,X + STA $B1 + LDA $0208,X + STA $B1 + LDA $020A,X + STA $B1 + LDA $020C,X + STA $B1 + LDA $020E,X + STA $B1 + LDA $0210,X + STA $B1 + LDA $0212,X + STA $B1 + LDA $0214,X + STA $B1 + LDA $0216,X + STA $B1 + LDA $0218,X + STA $B1 + LDA $021A,X + STA $B1 + LDA $021C,X + STA $B1 + LDA $021E,X + STA $B1 + LDA $0220,X + STA $B1 + LDA $0222,X + STA $B1 + LDA $0224,X + STA $B1 + LDA $0226,X + STA $B1 + LDA $0228,X + STA $B1 + LDA $022A,X + STA $B1 + LDA $022C,X + STA $B1 + LDA $022E,X + STA $B1 + LDA $0230,X + STA $B1 + LDA $0232,X + STA $B1 + LDA $0234,X + STA $B1 + LDA $0236,X + STA $B1 + LDA $0238,X + STA $B1 + LDA $023A,X + STA $B1 + LDA $023C,X + STA $B1 + LDA $023E,X + STA $B1 + LDA $0240,X + STA $B1 + LDA $0242,X + STA $B1 + LDA $0244,X + STA $B1 + LDA $0246,X + STA $B1 + LDA $0248,X + STA $B1 + LDA $024A,X + STA $B1 + LDA $024C,X + STA $B1 + LDA $024E,X + STA $B1 + LDA $0250,X + STA $B1 + LDA $0252,X + STA $B1 + LDA $0254,X + STA $B1 + LDA $0256,X + STA $B1 + LDA $0258,X + STA $B1 + LDA $025A,X + STA $B1 + LDA $025C,X + STA $B1 + LDA $025E,X + STA $B1 + LDA $0260,X + STA $B1 + LDA $0262,X + STA $B1 + LDA $0264,X + STA $B1 + LDA $0266,X + STA $B1 + LDA $0268,X + STA $B1 + LDA $026A,X + STA $B1 + LDA $026C,X + STA $B1 + LDA $026E,X + STA $B1 + LDA $0270,X + STA $B1 + LDA $0272,X + STA $B1 + LDA $0274,X + STA $B1 + LDA $0276,X + STA $B1 + LDA $0278,X + STA $B1 + LDA $027A,X + STA $B1 + LDA $027C,X + STA $B1 + LDA $027E,X + STA $B1 + PLD + PLB + SEP #$20 + LDA #$00 +L3682 CMPL ssHANDSHAKE + BNE L3682 + MX %00 + PLP + LDA $08 + STA $16 + LDA $07 + STA $15 + PLD + TSC + CLC + ADC #$0014 + TCS + RTL + +*---------------------------------------- + +_xGetStatus tsc + sec + sbc #$0006 + tcs + phd + tcd + php + sei + lda $0A + sta $03 + lda $0C + sta $05 + lda #0 + sta $01 + sep #$20 + stal ssCOMMAND + ldx #-1 +]lp ldal ssHANDSHAKE + cmp #$01 + beq _xGetStatus1 + dex + bne ]lp + rep #$20 + lda #-1 + sta $01 + bra _xGetStatus8 + + mx %10 + +_xGetStatus1 ldx #5 + ldal ssREADDATA +]lp ldal ssREADDATA + sta [$0A] + inc $0A + bne _xGetStatus2 + inc $0B +_xGetStatus2 dex + bne ]lp + lda [$03] + cmp #'G' + bne _xGetStatus3 + ldy #$0001 + lda [$03],Y + cmp #'S' + bne _xGetStatus3 + iny + lda [$03],Y + cmp #'V' + bne _xGetStatus3 + iny + lda [$03],Y + cmp #'G' + bne _xGetStatus3 + iny + lda [$03],Y + cmp #'A' + beq _xGetStatus4 +_xGetStatus3 lda #$FF + sta $01 + sta $02 + bra _xGetStatus7 +_xGetStatus4 lda #$00 + xba + ldal ssREADDATA + tax + sta [$0A] + inc $0A + bne _xGetStatus5 + inc $0B +_xGetStatus5 ldal ssREADDATA + sta [$0A] + inc $0A + bne _xGetStatus6 + inc $0B +_xGetStatus6 dex + bne _xGetStatus5 +_xGetStatus7 rep #$20 +_xGetStatus8 plp + ldy $01 + lda $08 + sta $0C + lda $07 + sta $0B + pld + tsc + clc + adc #$000A + tcs + tya + rtl + +*---------------------------------------- + +_xSetMode tsc + phd + tcd + php + sei + lda #1 + jsr _WriteCmd + jsr WaitHSOn + lda $06 ; $04 + jsr _WriteData + lda $04 ; $06 + jsr _WriteData + jsr WaitHSOff + jsr WaitHSDone + plp + lda $02 + sta $06 + lda $01 + sta $05 + pld + tsc + clc + adc #$0004 + tcs + rtl + +*---------------------------------------- + +_xSetPalette tsc + phd + tcd + php + sei + lda #6 + jsr _WriteCmd + jsr WaitHSOn + lda $04 + jsr _WriteCmd + lda $05 + jsr _WriteCmd + lda $06 + jsr _WriteCmd + jsr WaitHSOff + jsr WaitHSOn + ldy #0 +]lp lda [$04],y + jsr _WriteData + iny + cpy #768 + bne ]lp + jsr WaitHSOff + plp + lda $02 + sta $06 + lda $01 + sta $05 + pld + tsc + clc + adc #$0004 + tcs + rtl + +*---------------------------------------- + +_xClearScreen tsc + phd + tcd + php + sei + lda #10 + jsr _WriteCmd + jsr WaitHSOn + lda $0C ; $04 + jsr _WriteData + lda $08 ; $06 + jsr _WriteData + lda $09 ; $07 + jsr _WriteData + lda $0A ; $08 + jsr _WriteData + lda $04 ; $0A + jsr _WriteData + lda $05 ; $0B + jsr _WriteData + lda $06 ; $0C + jsr _WriteData + jsr WaitHSOff + jsr WaitHSDone + plp + lda $02 + sta $0C + lda $01 + sta $0B + pld + tsc + clc + adc #$000A + tcs + rtl + +*---------------------------------------- + +_xSetVGAReg tsc + phd + tcd + php + sei + lda #12 + jsr _WriteCmd + jsr WaitHSOn + lda $0A ; $04 + jsr _WriteCmd + lda $0B ; $05 + jsr _WriteCmd + lda $08 ; $06 + jsr _WriteCmd + lda $06 ; $08 + jsr _WriteCmd + lda $07 ; $09 + jsr _WriteCmd + lda $04 ; $0A + jsr _WriteCmd + jsr WaitHSOff + plp + lda $02 + sta $0A + lda $01 + sta $09 + pld + tsc + clc + adc #$0008 + tcs + rtl + +*---------------------------------------- + +_WriteCmd sep #$20 + stal ssCOMMAND + rep #$20 + rts + +*---------------------------------------- + +_WriteData sep #$20 + stal ssWRITEDATA + rep #$20 + rts + +*---------------------------------------- + +WaitHSOn lda #1 + sep #$20 +]lp cmpl ssHANDSHAKE + bne ]lp + rep #$20 + rts + +*---------------------------------------- + +WaitHSOff lda #0 + sep #$20 +]lp cmpl ssHANDSHAKE + bne ]lp + rep #$20 + rts + +*---------------------------------------- + +WaitHSDone sep #$20 +]lp ldal ssHANDSHAKE + cmp #$A5 + beq WaitHSDone1 + cmp #$A6 + bne ]lp +WaitHSDone1 rep #$20 + rts + +*---------------------------------------- + +* +* Cogito: The Return +* +* (c) 1997, Jérôme Crétaux +* (c) 1997, Atreid Concept +* (c) 1997, Brutal Deluxe Software +* + +bufferSS DS 28 +fgSS DS 2 +thePALETTE DS 768 + +firstY1 DS 2 +lastY1 DS 2 +firstY2 DS 2 ; first Y of VGA buffer to refresh +lastY2 DS 2 ; last Y of VGA buffer to refresh +firstY3 DS 2 +lastY3 DS 2 +firstY4 DS 2 +lastY4 DS 2 +firstLINE DS 2 +lastLINE DS 2 + + ASC 8D8D8D8D + +myID DS 2 +temp DS 4 +SStopREC DS 4 +ptrMEM DS 4 +haMEM DS 4 + +ptrBANK1 DS 4 +ptrBANK2 DS 4 +ptrBANK3 DS 4 +ptrBANK4 DS 4 +ptrPANEL1 DS 4 +ptrPANEL2 DS 4 +ptrPANEL3 DS 4 +ptrPANEL4 DS 4 + +ptrIMAGE1 DS 4 +ptrIMAGE2 DS 4 +ptrIMAGE3 DS 4 +ptrIMAGE4 DS 4 + +*-------------------------- +* All the datas +*-------------------------- + +*--- Parametres du jeu + +Probleme ds 162 +Plateau ds 162 + +Niveau DS 2 +NbCoups DS 4 +NbCompute DS 2 +Temps DS 6 + +CurDecor DS 2 + +*--- Tables des adresses des datas + +AdrCalcDec DA Decor1,Decor2,Decor3,Decor4,Decor5 + DA Decor6,Decor7,Decor8,Decor9,Decor10 + + DW $0002 ; utilité ? + DW $0004 + DW $0001 + DW $0003 + DW $0000 + +*--- Coordonnees du panneau + +PanelX1 ADRL $01DF ; coordonnees X1 + ADRL $01EB + ADRL $01C7 + ADRL $01E4 +PanelY1 ADRL $00C4 ; coordonnees Y1 + ADRL $00D0 + ADRL $00CF + ADRL $00D5 +PanelX2 ADRL $022E ; coordonnees X2 + ADRL $023A + ADRL $0216 + ADRL $0233 +PanelY2 ADRL $00F5 ; coordonnees Y2 + ADRL $0101 + ADRL $0100 + ADRL $0106 + +*--- Coordonnees des chaînes du panneau + +zeTEMPS3 DW $0217 + DW $0223 + DW $01FF + DW $021C +zeTEMPS2 DW $01FF + DW $020B + DW $01E7 + DW $0204 +zeTEMPS1 DW $01E7 + DW $01F3 + DW $01CF + DW $01EC +zeTEMPSY DW $00C7 + DW $00D3 + DW $00D2 + DW $00D8 + +zeCOMPCPX + DW $020D + DW $0219 + DW $01F5 + DW $0212 +zeMOICPX DW $01F2 + DW $01FE + DW $01DA + DW $01F7 +zeMOICPY DW $00E6 + DW $00F2 + DW $00F1 + DW $00F7 +zeNIVEAU DW $01E5 + DW $01F1 + DW $01CD + DW $01EA +zeCOMPCPY + DW $00D7 + DW $00E3 + DW $00E2 + DW $00E8 + +PanelX DS 2 +PanelY DS 2 +FlecheX DS 2 +FlecheY DS 2 + +*--- Couleurs + +colorA DS 2 +colorB DS 2 +colorC DS 2 + +*--- Pour les textes + +LgStrPtr ASC '12345'00 +StrPtr ASC '123'00 +StrTime ASC '12'00 + DW $0000 ; en cas de débordement de mémoire + +*--- Pour deplacements + +scrX1 DS 2 +scrX2 DS 2 +MyArrow DS 2 +MyColumn DS 2 +MyDepart DS 2 +MyDepart2 DS 2 +MyArrivee DS 2 +MyArrivee2 DS 2 + +WhichDep DS 2 +WhichDecor DS 2 +NbMelange DS 2 +Melange DS 2 + +noINTER DS 2 +fgTIME DS 2 + +ldFlag DS 2 +Diabolic DS 2 +fgINTER2 DS 2 ; utilité ? + +*--- Messages + +errSTR1 STR 'Error with tools' +errSTR2 STR 'SecondSight not detected !' +memSTR1 STR 'Can'27't allocate memory' +memSTR2 STR 'Can'27't load resources' +memSTR3 STR 'Press a key to quit.' +memSTR4 STR '' + +*--- Prodos + +proOpen DW $000C ; Parms for Open + DW $0000 ; ref num + ADRL pTEMP ; path name + DW $0000 ; req access + DW $0000 ; res num + DW $0000 ; access + DW $0000 ; file type + ADRL $00000000 ; aux type + DW $0000 ; storage + DS 8 ; creation date + DS 8 ; modification date + ADRL $00000000 ; option list + ADRL $00000000 ; end of file + +proRead DW $0005 ; Parms for Read + DW $0000 ; ref num + ADRL Probleme ; buffer ptr + ADRL $00000154 ; request count + ADRL $00000000 ; transfer count + DW $0000 ; cache priority + +proClose DW $0001 ; Parms for Close + DW $0000 ; ref num + +proQuit DW $0002 ; Parms for Quit + ADRL $00000000 ; path name + DW $0000 ; flags + +proCreate DW $0007 ; Parms for Create + ADRL pTEMP ; file name + DW $00E3 ; access + DW $005A ; file type + ADRL $00000000 ; aux type + DW $0002 ; storage + ADRL $00000154 ; end of file + ADRL $00000000 ; resource eof + +proKill DW $0001 ; Parms for Destroy + ADRL pTEMP ; file name + +proInfo DW $0004 ; Parms for SetFileInfo + ADRL pTEMP ; file name + DW $00E3 ; access + DW $005A ; file type + ADRL $00000000 ; aux type + +proWrite DW $0005 ; Parms for Write + DW $0000 ; ref num + ADRL Probleme ; buffer ptr + ADRL $00000154 ; request count + ADRL $00000000 ; transfer count + DW $0000 ; cache priority + +*--- Nom des fichiers + +pTEMP STRL '1/Temp' + +VBLCounter0 DS 2 + +*--- Fleches + +Fleches DS 72 + +Fleches2 DS 72 + +*--- Tableau + +TblPlateau dw 0,2,4,6,8,10,12,14,16 + dw 16,34,52,70,88,106,124,142,160 + dw 144,146,148,150,152,154,156,158,160 + +TblPlateau2 dw 0,18,36,54,72,90,108,126,144 + +*--- Tables pour le choix des deplacements + +TblDeplacement da 35,35,80,60,80,60,60,60,35,500,35,30 + +TblMel38 da 9,10,11,12,13,14,15,16,17 + da 0,1,2,3,4,5,6,7,8 + da 27,28,29,30,31,32,33,34,35 + da 18,19,20,21,22,23,24,25,26 + +TblMel5 da 18,19,20,21,22,23,24,25,26 + da 27,28,29,30,31,32,33,34,35 + da 0,1,2,3,4,5,6,7,8 + da 9,10,11,12,13,14,15,16,17 + +TblMel67 da 26,25,24,23,22,21,20,19,18 + da 35,34,33,32,31,30,29,28,27 + da 8,7,6,5,4,3,2,1,0 + da 17,16,15,14,13,12,11,10,9 + +TblMel9 da 8,7,6,5,4,3,2,1,0 + da 17,16,15,14,13,12,11,10,9 + da 26,25,24,23,22,21,20,19,18 + da 35,34,33,32,31,30,29,28,27 + +TblMel11 da 1,2,3,4,5,6,7,8,0 + da 10,11,12,13,14,15,16,17,9 + da 19,20,21,22,23,24,25,26,18 + da 28,29,30,31,32,33,34,35,27 + +TblMel12 da 7,8,0,1,2,3,4,5,6 + da 16,17,9,10,11,12,13,14,15 + da 25,26,18,19,20,21,22,23,24 + da 34,35,27,28,29,30,31,32,33 + +*--- Correspondance niveau/deplacement + +ChoixDeplace da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + da 1,2,3,4,5,6,7,8,9,10,11,12 + +ChoixDecor da 1,1,1,1,1,1,1,1,1,1,1,1 + da 2,2,2,2,2,2,2,2,2,2,2,2 + da 3,3,3,3,3,3,3,3,3,3,3,3 + da 4,4,4,4,4,4,4,4,4,4,4,4 + da 5,5,5,5,5,5,5,5,5,5,5,5 + da 6,6,6,6,6,6,6,6,6,6,6,6 + da 7,7,7,7,7,7,7,7,7,7,7,7 + da 8,8,8,8,8,8,8,8,8,8,8,8 + da 9,9,9,9,9,9,9,9,9,9,9,9 + da 10,10,10,10,10,10,10,10,10,10,10,10 + +*--- + +AdrDecor5 da 1,1,1,1,1,1,1,1,1 + da 1,2,2,2,6,3,3,3,1 + da 1,2,2,2,6,3,3,3,1 + da 1,2,2,2,6,3,3,3,1 + da 1,6,6,6,6,6,6,6,1 + da 1,4,4,4,6,5,5,5,1 + da 1,4,4,4,6,5,5,5,1 + da 1,4,4,4,6,5,5,5,1 + da 1,1,1,1,1,1,1,1,1 + +AdrDecor6 da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + da 1,2,3,4,5,6,1,2,3 + +AdrDecor7 da 2,4,4,6,5,6,4,4,2 + da 4,2,4,6,5,6,4,2,4 + da 4,4,2,6,3,6,2,4,4 + da 6,6,6,2,1,2,6,6,6 + da 5,5,3,1,2,1,3,5,5 + da 6,6,6,2,1,2,6,6,6 + da 4,4,2,6,3,6,2,4,4 + da 4,2,4,6,5,6,4,2,4 + da 2,4,4,6,5,6,4,4,2 + +AdrDecor8 da 2,2,2,5,5,5,4,4,4 + da 2,2,2,5,5,5,4,4,4 + da 2,2,2,5,5,5,4,4,4 + da 3,3,3,6,6,6,3,3,3 + da 3,3,3,6,6,6,3,3,3 + da 3,3,3,6,6,6,3,3,3 + da 4,4,4,1,1,1,2,2,2 + da 4,4,4,1,1,1,2,2,2 + da 4,4,4,1,1,1,2,2,2 + +AdrDecor9 da 1,1,1,1,1,1,1,1,1 + da 3,1,1,1,1,1,1,1,4 + da 3,3,6,6,6,6,6,4,4 + da 3,3,6,1,1,1,6,4,4 + da 3,3,6,6,6,6,6,4,4 + da 3,3,6,2,2,2,6,4,4 + da 3,3,6,6,6,6,6,4,4 + da 3,2,2,2,2,2,2,2,4 + da 2,2,2,2,2,2,2,2,2 + +*--- Adresse des lignes dans les 4 bancs d'une image + +lineBANK1 DS 400 +lineBANK2 DS 400 +lineBANK3 DS 400 +lineBANK4 DS 400 + +Ligne DS 1600 ; Adresse des lignes 0-399 + +bufLIGNE DS 40 ; Buffer d'une ligne qui bouge + +*--- Coordonnees des cases des deux plateaux + +scrBigX DW $0028 ; Coordonnes X sur le grand plateau + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + DW $0028 + DW $004B + DW $006E + DW $0091 + DW $00B4 + DW $00D7 + DW $00FA + DW $011D + DW $0140 + +scrBigY DW $001D ; Coordonnees Y sur le grand plateau + DW $001D + DW $001D + DW $001D + DW $001D + DW $001D + DW $001D + DW $001D + DW $001D + DW $0040 + DW $0040 + DW $0040 + DW $0040 + DW $0040 + DW $0040 + DW $0040 + DW $0040 + DW $0040 + DW $0063 + DW $0063 + DW $0063 + DW $0063 + DW $0063 + DW $0063 + DW $0063 + DW $0063 + DW $0063 + DW $0086 + DW $0086 + DW $0086 + DW $0086 + DW $0086 + DW $0086 + DW $0086 + DW $0086 + DW $0086 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00A9 + DW $00CC + DW $00CC + DW $00CC + DW $00CC + DW $00CC + DW $00CC + DW $00CC + DW $00CC + DW $00CC + DW $00EF + DW $00EF + DW $00EF + DW $00EF + DW $00EF + DW $00EF + DW $00EF + DW $00EF + DW $00EF + DW $0112 + DW $0112 + DW $0112 + DW $0112 + DW $0112 + DW $0112 + DW $0112 + DW $0112 + DW $0112 + DW $0135 + DW $0135 + DW $0135 + DW $0135 + DW $0135 + DW $0135 + DW $0135 + DW $0135 + DW $0135 + +scrSmallX DW $01C9 ; Coordonnees X pour le petit plateau + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + DW $01C9 + DW $01D7 + DW $01E5 + DW $01F3 + DW $0201 + DW $020F + DW $021D + DW $022B + DW $0239 + +scrSmallY DW $010C ; Coordonnees Y pour le petit plateau + DW $010C + DW $010C + DW $010C + DW $010C + DW $010C + DW $010C + DW $010C + DW $010C + DW $011A + DW $011A + DW $011A + DW $011A + DW $011A + DW $011A + DW $011A + DW $011A + DW $011A + DW $0128 + DW $0128 + DW $0128 + DW $0128 + DW $0128 + DW $0128 + DW $0128 + DW $0128 + DW $0128 + DW $0136 + DW $0136 + DW $0136 + DW $0136 + DW $0136 + DW $0136 + DW $0136 + DW $0136 + DW $0136 + DW $0144 + DW $0144 + DW $0144 + DW $0144 + DW $0144 + DW $0144 + DW $0144 + DW $0144 + DW $0144 + DW $0152 + DW $0152 + DW $0152 + DW $0152 + DW $0152 + DW $0152 + DW $0152 + DW $0152 + DW $0152 + DW $0160 + DW $0160 + DW $0160 + DW $0160 + DW $0160 + DW $0160 + DW $0160 + DW $0160 + DW $0160 + DW $016E + DW $016E + DW $016E + DW $016E + DW $016E + DW $016E + DW $016E + DW $016E + DW $016E + DW $017C + DW $017C + DW $017C + DW $017C + DW $017C + DW $017C + DW $017C + DW $017C + DW $017C + +*--- + +SprX DS 2 +SprY DS 2 + +*--- Adresse des gros sprites (35x35) + +SprBig DA L566B + DA L5B34 + DA L5FFD + DA L64C6 + DA L698F + DA L6E58 + +*--- Adresse des petits sprites (14x14) + +SprSmall DA L7321 + DA L73E5 + DA L74A9 + DA L756D + DA L7631 + DA L76F5 + +*--- Les chiffres en rouge (8x12 pixels) + +sprNumR DA L77B9 + DA L7819 + DA L7879 + DA L78D9 + DA L7939 + DA L7999 + DA L79F9 + DA L7A59 + DA L7AB9 + DA L7B19 + +*--- Les chiffres en jaune + +sprNumJ DA L7B79 + DA L7BD9 + DA L7C39 + DA L7C99 + DA L7CF9 + DA L7D59 + DA L7DB9 + DA L7E19 + DA L7E79 + DA L7ED9 + +*--- + + DA sprPanel1 + DA sprPanel2 + +*--- Les flèches haut et bas (30x23) + + DA L9D77 + DA LA029 + DA LA2DB + DA LA58D + DA LA83F + DA LAAF1 + +*--- Les flèches gauche et droite (22x30) + + DA LADA3 + DA LB037 + DA LB2CB + DA LB55F + DA LB7F3 + DA LBA87 + +*--- Le début du gros fichier de données par niveau + +L566B DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L5B34 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L5FFD DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L64C6 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L698F DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L6E58 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L7321 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L73E5 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L74A9 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L756D DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L7631 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 +L76F5 DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + DB $00 + +*--- Les chiffres + +L77B9 DS 96 ; en rouge avec le 0 +L7819 DS 96 +L7879 DS 96 +L78D9 DS 96 +L7939 DS 96 +L7999 DS 96 +L79F9 DS 96 +L7A59 DS 96 +L7AB9 DS 96 +L7B19 DS 96 ; ..9 +L7B79 DS 96 ; en jaune avec le 0 +L7BD9 DS 96 +L7C39 DS 96 +L7C99 DS 96 +L7CF9 DS 96 +L7D59 DS 96 +L7DB9 DS 96 +L7E19 DS 96 +L7E79 DS 96 +L7ED9 DS 96 ; ..9 + +*--- Les deux panneaux (79x49 pixels = $F1F) + +sprPanel1 + DS 79*49 +sprPanel2 + DS 79*49 + +*--- Les flèches haut et bas (30x23) + +L9D77 DS 30*23 ; fond neutre +LA029 DS 30*23 ; fleche +LA2DB DS 30*23 ; fleche enfoncee +LA58D DS 30*23 +LA83F DS 30*23 +LAAF1 DS 30*23 + +*--- Les flèches gauche et droite (22x30) + +LADA3 DS 22*30 +LB037 DS 22*30 +LB2CB DS 22*30 +LB55F DS 22*30 +LB7F3 DS 22*30 +LBA87 DS 22*30 + +*--- + +refPALETTE DS 768 + +*--- Enfin, j'y suis arrivé ! + + ASC 8D8D + ASC '-------------- Cogito -------------'8D + ASC 'Programme original: Jerome Cretaux '8D + ASC 'Version Apple //gs: Antoine Vignau '8D + ASC ' Olivier Zardini'8D + ASC '------------ 01 01 1998 -----------'8D8D