From 33f00570f0b44d3230d72f1d85ee9c74e229556f Mon Sep 17 00:00:00 2001 From: Antoine Vignau <34219772+antoinevignau@users.noreply.github.com> Date: Sat, 29 Oct 2022 21:26:10 +0200 Subject: [PATCH] Adding Cogito & Cogito 2 (SecondSight) Antoine's Cogito & Cogito 2 (for the Second Sight) source code --- .DS_Store | Bin 10244 -> 10244 bytes cogito/About.gif | Bin 0 -> 14311 bytes cogito/Cogito.Bout.s | 3076 ++++++++ cogito/Cogito.Main.s | 2581 +++++++ cogito/Cogito.s | 3174 +++++++++ cogito/Happyland.gif | Bin 0 -> 36869 bytes cogito/Ludyland.gif | Bin 0 -> 31787 bytes cogito/Planet.gif | Bin 0 -> 30932 bytes cogito/ReadMe.rtf | Bin 0 -> 5448 bytes cogito/Title.gif | Bin 0 -> 85240 bytes cogito/Xenoland.gif | Bin 0 -> 61659 bytes cogito/cogito2.s | 15551 +++++++++++++++++++++++++++++++++++++++++ 12 files changed, 24382 insertions(+) create mode 100644 cogito/About.gif create mode 100644 cogito/Cogito.Bout.s create mode 100644 cogito/Cogito.Main.s create mode 100644 cogito/Cogito.s create mode 100644 cogito/Happyland.gif create mode 100644 cogito/Ludyland.gif create mode 100644 cogito/Planet.gif create mode 100644 cogito/ReadMe.rtf create mode 100644 cogito/Title.gif create mode 100644 cogito/Xenoland.gif create mode 100644 cogito/cogito2.s diff --git a/.DS_Store b/.DS_Store index a2b992c8ba06f5ef35d727f8680c0b8d1d497c2f..7edd7c74c4bbdd5dbc40826df952a79862ae137f 100644 GIT binary patch delta 169 zcmZn(XbG6$&*-x;U^hRb&t@KhZl-!RhGd3(hIEEZh7yMSoOHwB(446G^5Sunn5qizDnO)%*%jQZEW@Z3ZKPy`R delta 37 tcmZn(XbG6$&*-r+U^hRb$7UXZZl=xh!Y_CxHgs%eSNO%Uxl@#x836p)4B`L) diff --git a/cogito/About.gif b/cogito/About.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4dcb3a887b805ecab79e86aafc6aadc1c5823d1 GIT binary patch literal 14311 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 J$p-^8{~zZ@n}z@Y literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ccb5e9f4a639079f63bf8335b7cd4c664a9cd5a8 GIT binary patch literal 36869 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 literal 0 HcmV?d00001 diff --git a/cogito/Ludyland.gif b/cogito/Ludyland.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe924b97dde6f57e0cabe3a7b7c2b8ef9f93ec77 GIT binary patch literal 31787 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

dq(TfF5^f} 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 literal 0 HcmV?d00001 diff --git a/cogito/Planet.gif b/cogito/Planet.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ea21a6158a2006795bb790cece1442eb09757a0 GIT binary patch literal 30932 zcmW)nc|6qL_s3_$*k`PRFk>I<*q6{4+t?Xvw(Q0(No>vZO*|SC)`9 zDoPq9sZ=U`=GXW4yytQ5ecXHQfA>D#@AJC%+S=I|83&US|A0ZEXeiY9e>DsSh2eN1LV|)~Feu>vJ76#v0tQ3F5Cj+s0YintP{}Yf0fr8R zp=mJfP?&ZyOq&KXjuC?@{)KqC-n6apQJ(8eLO|M@(GaWVpD zjKC2PxPJ|rjEn|~-v|W*p#FhIqtMAHG!2EWLusQ?+V&`89LhKpg+rroF(`W+%Ko2E zN7>U*zV;|zUsMbZjR2q#F!VpPwb9zfXl)!?+ZU}JgVs(*YnPynOVBuNG{IOM?x3Mz zrHue+qyO2zSd{kvF#cDxalYEPWNrIaZ9=+ssIhjswxL*{F$!Re2K*Z|#^H8K)bYnfc))PvcMkobkU&_BdP~&fXqJ zNXPlw<3ee;&~98Z4wp>8(Qx)?fW5J?y*APvG=9fhZ5{VOYB3t?PHSdlL_|8 zWA^EJ_B4AZ8xLn$8bKRC_!s>T-%x^YD7jWg zp?R%gDoxR0NiqK;IVPDFlb0MHpMN^$d~!N1nU;4J+m)W2oc=%Z(rN#!gp@|7001-^ zEz76>^5r@@`ASY0An$(+h92Io0#mD`mV0lN8R1s zy}i#KGG09D9)3DJKh^toW@ct~_VwK4>eABE$`oLA^~1~APp@9R+IYcwzxkQP`n<>b z@$=_THUPj54P~>jY&MC_X0qAaY&QGeB><3#<^Yg_003;_zDMW3pH z{5K9z|6lumdjSAt1Ax$Dco>$hkS?@mCse~2z6_JMuf%t}8ByTiu%a_Et%OAEdhty8 z774|$){1NXt1S|3#l4AfgG4wpufiz#!+QC1CKik($LGOnh;&KY7=@Eh^|JX*ui=ZH zF7gOIYxX%SgGme8fT()x(uMRncgv(g6I>CxHZ2-KX_|JOW37Al6E;v7Ylq_2ruR1vw|`fq{>c{w&|s$sjJ7C9%B!2>Udd zaATX53mb$Yz^#*Jup(*GYiiti47;uZDvCt%+cz}s+1oTrz|!g1@@|cybs^F73Q_N4E&27H9*A#Lcr=V)oPC;zOF}UOdYL$ zTjgYK^?I&|&7c~Et9%%VEE9c(!D|3!8K7RxHP{zv4dxHJw5}#9oX#0&@fsV3jr=>8 zzqlrI{k%JLe!afHBrSCB@6U~N_BmAP^@RU^u^R6F_j|X~<>G78CzZdjsC@_PaABh# z%HYV3@5%MGR1UqIC1jL8h49!Rs4m3t(Tnh$XwObbrjN%7v)v#FpbWd8@<#vFL>5oz zW|8!aP2sk2E$}94w!yW#MprsaFs<5V8;^h|stil(bO!%PnHZM&y?+_I8;oMdLP-fb zRu?(A2l=7(7$L8_%RnFmK333n) zbpJSFRi(m$b5l5my1(E-J#TC*%#q~oFMR3|HG$6liv5)$)>^Y=x2$7V3XXApDJsmX zRZ!j;MoG@mjVwYezH*g9pb8M~)DWL~q9)Leg2|?2_CZzneSDxKmp|T=+In z(U1ZZL3j=hB9YOJ5AI=g@yuKQxwnnMMm%KqYdMwYEppF1NAg{rvaBsLJ-#l8TF2uq z)ND)G0g5T8#XN&?*z->lt%dN@PNzoDFo_H9$ah@|$1mG2)JQHS?PWwNY5#;hb0b;* zJVp&ZV=#9~m3a0EDRURbbK7b<-izr&42J4uxt9$edjgx|nnyGyE+%^)Xe)gIY_z{| zqowJFBXW+(k*24xSd6cq&x1ivxKKpq!5SsxzU%Ylb(*)4^n}3!-I|-K_v9=VH{A>; zS7*|eia5yct+wo7&){QM6?g{2bgUX(6;;UBNt5d3#(po@I$auIlf092zDU*epd9yR zNsFF)-Z>ecdcC;`f#*Ee^PpSqWjxh-V@Y?G@Cm%Vz1JPzbaoV(pYuT7Y)Me(E!qQl zO5}@th+Lk0^#iAK2Lg|?+B!%2UAh#cB#qbc_^9h{u0b>X9T3C~#$aqTN-w2t@P~Ob zgz``vm+gR;>hTs?dP}I0bO3(=W_ej8yix$Yd}^(j&vANVM38$>tf`~mtOvCt$?-Hw z{d6#$F0Q=wcgIra<13jzhvO`2LWUad)E}WRP^??7)`{~qFbtE>aEw=gGkoLH9KpRC z5km%uGJyHP5LpaN6o%Q$csNLh6HQLzpZw z@c91Fg3U&S&K3LViTdUn`PYSyJQ9}E&(L$kn|(zsdX!Q)JFZ9~bI8Zi<*s@5q}_D- zlG7>vV(ubTDBCY)+#`-}*$M!1Jpl60M}j`FOUHyG_M?x_9_NTconj4xV$i>PA(p64lV(W(9`)!H>hiy|E0Jtf5qGaiDtz! z0l!OPTwUr`Z#814zScCM%9pZN){WkNS2Nci&!rc4RM9B==QA z?p^ku!Xwj;nr0mDm3g`7vp*wW(v7v*UmK5ea?+0h3ALm-Quw)P&UFHiMG>~vO3Tz!{dWI;6L0O*Cq3N>U*FOvjP&5Oi+1yC;jKsbtNXJUyE z!3LOuFs4*AID|ipL+^c%SXA&uD8qsq>G>Z};ua+7zd_|KApFlc$Kw{HVMVFpCAEM5 zVtwzWj_YJ}&85T0vJWX#{ooAPV4}c%lHeiD6>khzA%C$xe`nEu@w%I9iEiX+&0wp5 zp^a1buOdKiYz+a{a`z#(J&=gnQzp+VD=X$%ofefD7&Q5$Q_>vLY&jVzXeA>fq(}D zpGspnact7z9b6k2!G*$%Yd-l)Dn{4o*|ldghehp4kr(O-stG=x)e0$4fc4!7+qxgh z2dJbYw`eDrX{`=;9(hGY?lKs~Z*^boGG6XAQDV|3^|H4F2q~X4PUnErsb$jK?VhoZr3f#@(K$_dM>We6d_)0jtraREHDcd8#DE z-mo3){53lr6!;$-3SYv&hGx$#dY>XixcFI|$ZC`qAp5or$#J^UP2n`rxyVSlqFhV< zg;{65-Xfo0Bxy8R*6xJ3&m~c}IAUtS`^yEVl#{=40-)`pVR&FB_9|xw`asOIvdo=I zmlo32#2WkWj>l;p(xK;aCE&pI&C3EPGk!EYE2<>F(QT3+?5oFP$BV_Z>tvZDTcMPqqI(}RkZ)rwbF%d^B>0)E-qwSz;Mu(cklP?2s- zgUiA@J^93oa$LybApTQXQMYKuKjvU<23)>q?O2PbdcC@+8NdhJSRCORwP=hd^; zZb|9Zvc+Gl3O2(D)&XJRT#<-M>vaS2%|+YWg4$q`VHMVs*ziEa?&oc+WG&95RtzrO zuxfZz9-?|yE}+_%$2}=HnBewQZ0kCsCWt?lUO6(FB!Rat^(Oy-oSsGB6fTk;x2~~< zrc$rV8km@+*3=v=Q)BIQ4R|75AJC51TP`MPS-ohu_`8AhTYk-5;{)b~n6JOHWPwPK zfFD~48H>7_a8A?c=XKN_+4^w8!gi$?iq2&WldMm$ZBI~>Y%~Fi2+etOwL9Glj=bqx zPvV9XR*mfJo4S0Pd(xUgZ~@jTvEzK|Pg<0LZu&MMhiwsa_M6qk;y89uh!382{0{xm zSAf@s{;(x{jZ?xh`#O0+>d|u3Q|$0jzsH zF%#%S)NGT2hs5vH++XJaUd&)=>xNzNVwrDFj^#Ixd`dXE0D=#sPgpxY$}##7-6rDK zA;v4kdT1o9Cc88)wvF|Ix?k`~%@A=tOTF*})4Ia{JDg@pifJdw-4OYV0%A(%PZ;rs5## zxrcYMex5lIV`Q<`8FIWwEWNWYr=hgyEK&lF7mo-%xZsj3EoRgOMaT;Tb6FH$ijpMV zuL8JMf%Y6;P!qtWG*ee zo7?WuDL^{lXY2tgLmAOh?b`|{}RpQeq6x9(34ASwq>3_W7S5P72Vj-MtsU3X8dGsZ>V=vuUyk*dIeb^|k_X@Os-Y>6lQfk=2-2^oV zjC8zdqWMIh$N?NQ%n@e7m`l7&eIQ@g9N_iH;O9rf=EufDDun}EhLvffEi9Rn)`B*5{mp1`e2E7Ou@~|efPA-N{6%8r@pE`dzM#g z>^E}PZAkk^yZ7Ma%tt9*O#NOg6K*lXNJ7p7^ps0yL_?Z04vIrU*{dV95Wcuzl=Cqtd(3? zs<6uUthxe~aK_yM#YhDEPMh2jzNGIJig7X*ax&O-TvV`WCHsn^MwQm{PD)SuO)u9t zbzJNp(5c89SQmYL@T{zQAun6><`GQaM-yU$^sA}p1^v=*g230#_*>p;ow^;c zp6mDG!wp#-%8Q@24Nfn7BEc(bgKDxQdB>v_Q_8YH(VCqZIEB5imZ}aLtV|FvT%V0y zXKD0I1Sp*|T@tRI34V%U=g}>Fgx8N0lpHi|vtQOAftMq3hA(WZ$Ud-h*V7{gsFkmH z0(-XOo*`n@dNT6Tw_e0o2zLeqcK>yR120X#CPxSL2EJ&WSsCuVuuysOG>_u?9*xDUu{(ku|xKn(;R%>d6##G>q4d4H^FFbwM z=XOd62}+57&$S_3#8)d4*qi`X?TLe<61DXm#N>3~Z`pDE6?q$J{O=3QYm=%ZIFUdU zMx=BAUZM&7u>MLnx`wMt(rV>>Dy2Fs*bx=P{jD9+E$4Yz6V80;ekIiazPcgwm(>%f zR8$~Z5-6e&^d5x;p^zY(&5sqYR{JdO_r93vElyNhkkk>r_H=Wxg zBu~O{V%X`_wStBRGJBlQq&Qv+3%S03T(!5mx5tVX(MN*x_jgZ{CFFj}tG&AUQeOg9 zlbX{0S?&}wiz}(MII&W5J^tdpx~wesDPc~)mqE77mu>TJ=QKeEh2IQFyX2SkSyOV; z@w^rMpLUU7|IG03-vsnvgW=kf=P$h5di9lXCG>5Zw9ehVa~Hqs7k;xxg6tU(gLV$F zTN2+i7Lq(Z-#?sN0Q1>A{=AF*`sm()<_^=t9IkcZd+M_@YIh~#YW9S$h?gaWN1RW6dqDU~%E+`BT4r z`hT9Z5YZRh?H4%QnfXqC%;CWBiDW_|+reHIKZ18v!BJc}IxFc+u64$*x-a}r#Ubf{ znna)2hS#im_K~T@Z@BgjU&8zTncut4UknN%r`TG5Qrp3i?HrM=&`8(+6acLvn+gFP zZ{9rl_NAlby}#JsA#%VwPm;FynbYC|N#c=by)-ys-?m$YeP)9O&u$NBY%R^A4FAcN zieS#EC2Kc{Pb(6-Sx?I(xB+P38k6mV@#>^mYbCpfQ90sHnrZlXkVN8X5yC5u)T8_Ww9QdSbFMO(8KVf@) zH96o(iL#%8s>O#WxI#_6Sg`!ZC5@n;B~EPjiNa4f1KNkybka}%4SB&!^~RxFpWo`{ zD|77!=SllbgoETWTuY_}d&IOJAM-s!m>(IvqI~Mr(XaYfkMHxHIMDdeB-he2^K|iJ zm2Nn{#8Bt!`Tsh@?tvS6R%)7+#^a-7jJgFBoK1E}Z+K0LVrwWjKR`m>*F(Cby_Iyqd|hrDBqk!P-&h);R9sQG&u=icY)c&W7rh zyV{7@r^a@%z#Szwok}h%x$%9NL$&WQ_?YOhNV21j(?OCMhK$R%xr1*UGJI;5L?d!#pc zaNzE0`8Uda&g6TP>YS=oMZW-sOhzhsMZIdzu9fp4#i!a!IvoW zV%$kO%+kT$2Lj66rm?#^6ZpC*54X<66hD_%>DG}Ng+f4+Ms1oZ=#KyMxka-d^f+E` ze3Y&DxyZ#ud~qXUwlm1=ZL1GMDAoCCh~-MCjB-p;+q`3LG;^(v`7R|SN6iKvvacYM zGp+wF<2#?_?n3gCf70B$u#(7^ZPx$ZZx1TST5hpB;_YY8)Od)D33>E3 zL~38O3oXCul@@h7FG6sKvBU=)XG?Z{_>i}X?WryC?=@c)Zyz>ay>`th+Gv|IU5#g> zJDE}_@3y=0Kq)yXnkm3YsLIZ%sf^(Es|Sl`>|Z4$ec7pxsI^~|Y%1W7S({n$eRg+H zCaWy?;;+%`SB2Z2c=sfKJ?iYdRkEYm7dI!>@G#-wYH4r7;#7hV_x-;=)}p+*_iwuT zO>@F~d2(mW!t^C}PtnmfzuxKotP{z&;jq>?4C`$OC+}SsL>DvuyGV$Ede?H7}^e_Si0eWFHxs{t-QBTv2k-mw(v&ddoQoe za^ur=stlTd!roJI;(AA!fb(U-W$?PoacUxfnIB}%cu0b7nUr0x#Z}HJ1|Sy8!t?!Xi_@hYUO7$}Tj0@P=x6D~f#v9YiXbf;B9zS;l^;ZLTk+|k@y zMGC00Iw>h6P{Z@7z?<7oG%wFP1aW#W0-{5H8T4Ka$zewS{Bos59c6s-np|-u@7U7A zrH1|%H;35O->7 z(_i(|%}>7EflbPfEt&9^>kI5(MW59;d9wKhXu?8ZCm7;7A3L_Y@@*`HIcr{O+aJ}^G~_$g8C_=@Jszqq$@&aQkED0Fb_$3{HRTUX zEV_*kt6pIPl9sM{{-@gV;1uytyp)9jj4_Vsl_~&LML(T)<2{AAj}Tc#B$q$Q$k)x4 z7`@}vjMriiI1!^gTmz1jVz`om)X8V8$xeVvufBU_b<%(eWaX(%F()fl<#abG#$77H zxZP-)IFMzmlD~b{|MwIzz9VgQ_XTf;&P>IZ_i+wM@A|)NX>CQ3T>tb%`UvhVT4XcD zcJK4}zSAnMYagkGn}OqJzbMzdx<`DM{sMFNaK3crK!4?*C~W#?bvDbOLc?iCr_*Sx zQM8#87kA3!7T4m5lllQ4lX^~$`@XbuxbG^*5S2;{=k=7alj+`4iO1Wmn4bT3WBPY^ zc+87c_T0siYdk{&G{Z-$l_{t5Mqhk(d)BS|U|QV8o}c9TY*pp0f!(9!zo+BRAL*Xw z`%%+gd%bJKpr^n*uGagA-`-Dhle6L1ApBx}X5{htbtMv~mGtSGdb@8%I;>rwqW#4R z4-4eD&Of&pJ#!JArmT9YlhfnlS0}$T8IBW&Mtwf{UI38bnUz7Y-?MqqMDVdWrK#!U z!0m&iwKa3Dw1|D3GdHd13D%G8+HruZbHDgj{%BTW&WYn1l&eBqUx!J3ix(>RxCN4A zbew$M{Kld4CGsP{R@=WLo3M`(&BBA>LT>bwj!oMYdYGMkM7Ym7n5xGd>>o$@9+mrj@m#g}P{poHqh^{Fe|GdU0xY`?nF} zG~J*tMEGtyL_Y9wwgGksc7bRm2Y^Ef2#|371{GB~%b{F}lk&f1aD1LG)Ib+_Exj-M zcJ_o?3CB?J#|@!^<0cHG@sPaGcCtB-x&q5mcqjDs_}hY;K=`%WruRa$jF~+&6{D2K zEN7KW4}7LKk;6&lgyRPI1b}L=LUV#bumG9?i>ir%7(&g=6U`i0AafST2f#&5HHehb z)$!}RSJMX+DJ}adTyBKD|BHWPSpJSKPhD;v?^X$43s!riQ%n6Cro`y>A^#3tm(9uO zdm5@0uFEyOWxDw!qxgJmxnr z1rN%xzI^z=d!uypRpVTZd5}?z1D!I@GPnsfTmFfGAX0z(ntP$qiEvEN@aFs2(BB=2BK>Z?u9h3Jmt=R`>4psx)LjJ zUXOc#%)GEQK5(0xB!X|)m7+|QiT)B7)GaaK8|*69GghZ36CrYCV5||<7z46kQLR{@ zf@7da4~Omyu=y;_V}+)-LbD>$G?^BqVH7g}RkrMj5{se~L{VBHOCLG}U>-4 zWCjD-xH{+qsD=RWtS;n4p_K)R=Fv!FA8i2945|zaB)CtKVF6_jKqaK3646Qmclf&jf~mQ%W1uCu0zDir<|AOc1~ z(a9(TWsQ$w1EblnAW{&pz7N4X5$rMxiRyy5v_r)7Xr36F0RXH8qevqtvaCsI7P(x( zQD%iKqym&_2eJvNB`-q9tJeA%D&2$6^G<_{g63vwC$mKY+{{1qHkwMhW*4s1bigvS zb>!)`b6Hl7Km>GNnGQsiSy)ugJ7GAMk{t|*)B^_&2RyC!0D{L70Gr?f5sDa$f+PX8 z_9;rR=R%3jdS>o2co2nQcD7}vtHLdjH%Fq7cD4{=`pH?x!{y|zd+1`x3F}JjA`yx2 zqmz&3VqnuY0IHblB5I$4f`LH#94>SR?+vN}($%n?_AkfL!_GUAAjKZuPM9YT9l?>i zK&|g2St3wtg(S`-Ne5B5G=NGfKq0`2VxuQJ^s?Zm2ZnJ|yXA$sg`6=PoD?6f_;yZq zR4=q(R=awCX8LeE?C*^bGp|Bx)e!z`M?%~Z`Wn~49Ie7oq6*0T5O}QD%dB@vITdV! z&Gg4`xFqyNe1xQgkp-?PG-e&s9AkKN#wh#T%A+&!Bi zLR6ute|IzQbuvq(zF3EtuG6j@P!U!Tt9`sfA~?!p&MH9A9`ARO$e?1^X`Wb`Ef(U=r2RUci8xx_4yV<80(GuarBlJE)M?M}6yzaU zbDv_o0+PWyGk3{DU1YeCyOau*3^zB zu0oT>c%oplU#H*7KtY4MWKGu@B^CGQf0w0~fE#c!b@k1Mt{KDQez!=Ds%IQ6gS#sb z8_EI`rpbOFD*>>9hGn;2^2);y0K_Jds+USu_XG?4hsS34JG|TAH|Ox)2ol()zBm9| zwNL9oaj3&^)FIF_d{ZlYQ!Hgu962>~w5%H!0l|lHBRI+JU7~LddMRO5g<+l<*l&sY z>t=n90+C{WBfeQ#zFE1~uA?!PY(Q?z^4P~?%RtMqU_&U*(G_f{Vl}-O?w1m37~g-( z8ls;H)=C5yK&Z+@pmO5By}9k#ZNzdh>OKDMnf~e4&QCAON+8bnRxJOR?;p7Xx?2cbXLZ@V*6a%EE4Sq6h z8_cg1TASi;7?|m0Lt9fHL6$^o?UPP9FN)!vvGJf*4f3(Q<$D7}nE|3~DG5vm5XziW z{MCxg{d&;S5B_TxMGN)yd}MFm!1DO);Ot0h1{$_Lw&d9?cO?#GD1~=|U(R-wFi;*J1WyFJV2F8PW)kWn zIuX$)<3Au5sMH9S3=x>Q2UI3fL>Pe9mmkDg-khY*u0upf8GzeW^mJ6*@0SmqO*Mpx zG2asXHhv7f;@>Zm*(ce(-(4F>*<00fC8Cg&H|pM_anz*N$Z>1P3DSnz_*X>9V51jR zLv$8?H(HSR@1mp=S)2jjV^K2dNdL}=xK)6nWuGO+i=-lRp;%jX%+}@Mh+964wIwlm z<*#R@&fGFOnHl!}>^{{H3X#nOA`XFasbd}hs?{tFn;KlehZ_&486K|oDlGbMgS!tX z$}o!5Auvnx)Q|tjJORKK(Ky|gWC$sN)PJ_K?aT2i05CpA`tEjjlh&yr8B66eK59R1 zBD9`aC6>k!(!?l;RI((Phd&Pb7jZ zk>A+}`k^coV!)u zfteO(IoUvISUgS1hY;xj4v2s_VE=uhH%7DGp33sbH25rX2o%JVMJ}D=!=Jx@pDa4D ztY`QeF?8h1UU1Im z#sZk*=fEeoMrd01KiJjCzDGr7ybL(Hfjyi!5g6CI=L1+qkjMxXkVz02kM;lQKpWzl zC#O(7iBvCaX2|Xib!_RB(rI_k?;;bVpDtwn2@)S;R(#^c^#sad-lDV&xq=HSBy5F8 zs%!#=z?^a_m4;VdK8#^tMOCmQCV&%QkhIJCB9AYW#TBbZeN`BjP#GkMu{Y`~XA#E$fk;4R$bCQ$-{ocbQZ+n;a)k^3MpLz6h8lEEME+55XNk0%Z>8zNr}0$$b%e$ zN=|{h8*XpzLCM0L_WvYT>=147Sm0Hty|XpHxR74=lZCe*mrU~ITK^L6?5;mN_igXf zAHzgISKRWL^sz_^P@LCMV|oTvM7vh*{%f@H+IHy|6tfk;J{SGjvXZNiS% zIfcP(TBP4gCh}+K9Xo9+@e`GUZt9iGRWJ4laa6uo=4i)_0bKK77#Rv0-RL9m$bIB5 z8k5-N2GNyj^=h(}Zp2dXehG)0T=Hq8&2d-)-{z=b&;ff9#77C=u;9^1P29eSIocTH zl|R_W2`aAa(U zO|IU4G@4bJo8w(f1eWS_9T6)6k9wPk#XOjkPf(ZrX>`>Ev&wZ*$Ojy+U9q>#ica zBn6AJSA7s$oQv+rI;Se%>x|xoX>@(32B9(R!XbXN&jvX}N`-Sc#3B}p6cky(3_(p} z*IId?7(9+vea&GLI2=Tjv=$F9(Q;EAeWdkR^B1rF(#aV9JAHY9{cw&4agstH@iLgG zr>F5&wsI-U-WwJRDYil0sjabBZSK4GMa`~$88270zd0tA4^X3tpMs}TInW9YD`gX! zJu89*tqh7F0>c13<9|^|;>XEjDYQ!zuXqT`NMw#78qhA8>w#?|EMqSA>+e1IIN zhlKE9@D3Ki==M_xPDJAV(DcD|He(o~y4!x9`?V5-#)=JsWgSC;cr7G}a_xH06X^ku zCbJg^pyF5X_vZxrkes@yLOd_VDCQDU&YV5RT+M8yQg|V} zPQ0!Cl~Twe-2(s;%4(;{>S>p2{+q2vvItUPj3^RFK$-*}rzsWz`Hlq2(QonClSq>g zjWbZXYa}1>;jE9MrEoRAy2?vvH7Zfjqq%}>O=aBpLjiU4$wH1w`yEJ0YtU3V-S`+G z-^=t0+>!{{_zmE8!ODp)=vrg!H*=&?C~c(_hyLBf{z zu@fZ#-pWr`>N=j9GB$5x_2gh=u$8QyTaI_3d-2_}FoDobg`JZ_X{~sOBg5vE8XJLia4Dy)e#caujsM_-1O}>vyqUQ3G z76K;pifn}Sf$tD}BHPReU0<@8Wp6c{XqTxN{Vs<fVS&%E1!gGvq=28e0D9?liw-iKul-qX6 zlVGD$i?(i;eNgd#D~Y~8rcz7iscI0&atcV56J33>srGOd>fVbJ>&da!44JdrFBCQn zz*wR9w9SzakqZ;|NF4ijTBC8h1c3l;-VaZn{(FcpT1>Fu zArR&GGZ_el#=2W!JDu5R`YnP)ko=71wWf}#H;@u0X|5XE-8`*0&oki)D*c|v-@>w8 zQCZ&foo*X6!%!~cg2Ju789GXo$y#Ji`*%@9VtwY77}uf7MbAYZwL{SK*=#E|R1Ox$ zjFL-94?oMz??^PVOAuEy)J0=G&Wm(Eq#&G9+?-u!>XRXGkec2cqB6y{nhI-hZ zDP*+CLBxWE(-`&IamZT@eI04SLGn_WVqoy6TNdO>PcS~H+or7$IG9HIFTSw{@M?l< zY_E1-uV3HUb4GAZNhrx#c$F}tHO{eVO=ZL*-jop?WU#$3nZ*mS95o=Dn(j}!)kbPjtxdoC=iB|O4+}r%(uwve0lIj2?;TA_DA2v z2qu&-?F%(!(jwKqEBb-P4_nJL)X`0@k0i7sQU32)fg}qUfJTPzkDva*t_6&+%U@;lnoMjAJ%^Bv zrLfZ zq=Zgq=^Y^*XA*$d*O`e3C=e?_sxcF0=se@BxZ>-=ga|RL^Ld@Rg^Z+E^Tne67K?t0 zXpIB;KPxI*p8O;WFH+fk4PSdczy@daf0_u)VMr$3^!WV!rSa&{6^tWV4<|dtZ>l)t z+D*C;MiMq6iyI9JrVjGxor2Xed4m9*M-4cxV5LC)}bkaSFZm%5VsJX?aD0V$pW8ma^S0x}INxi{#ST4r_ zi3>&-hT#SEZgq`Z$$v7neaHKLNwq|2FnfW3t9-rk>q%tdT8#88kO+QQ<|!HQ!sZy( z8H%VORyeV4O?pa{{6(U+onhNnOg)a$A`y5_4(iBN9b!4~PD-8#Qs@IHw9iVka3PLJ z9kp0Nqe0TFop9{tjTOX+>g(0nw-`5r?`KR#l%TkgR*`h+->WqmVz3YSmeO7o+oPT$$z$+l+_7Vih_zVp~ncqg~gmM_m=U|u|d9zk6mS1*(=rcGqR*B-Sl)Snf z%HI*i;*n3x7S$p23S1f`^o}#nGlAQb-(U+uP$I%rO7J;F{~(Q3YaAb7Eg^L-L$0NN_0v zRMRBfLJ5Wwp%fQYO7gQqT}0#)@LN7#M||t+qFy;fwc%y6!{8CZPFsFziN#79!46^| zv^dgW_ABVh^m&0$M zTrFArAVT;U{SQPW?-MCheGz;1wX1o3vOV2ms|M$&>@F5Y^8x^`6=g9vKmJ0c7DJ#H zh&f@3vIbb|BuILba!$`gHYW!W1OPD=zZi|ADB5M3g{Wabm7)}>TA&;f2W!dkg%Gj& zgU~MSa1VAC_HS)k^^%J~c&}bVuT`VWQ1Ds%#Heycc z&gH@==PnhzjzDLqXqSVf`>a$%%A{< zJy?B*xy>l;mjgsAMqB79#{}%q>>Ff#}e^FU$?QzV|>coMKp<_%8YE=8Fe2^1r6!$(#$}0A=Bck3A#o;uj%) ztU{*v;3ui=H|sc-_a?=1Bkolaz=p521m3nWrkS7-tMfNF{mr#$H|wF6VVQ$LnXuR} zGdbB_TX9CSDW{5{PyEwT>~<-$@`7|B@TB+?xw(>=Yc|9kp{;T9HJoJ2v97j{4|Dx0 zAb%C*cb{thu2A_zDRH9RNm!@vN%QqhgLRJLLVhVFKZZcwv1r{o`fmQxv zQHlT_qA2eR@t9FYNvWo0)!u~X$m)LUG5*_ga-Syaw77UV(j(rTrWeZI%qj>H{#-Tq zxr*#7a@RLid^Mi@F3=`yBAb8ZNhSBldw>Lwp5%Du%N@}$4i9u@V8csuww2Y^Cu==V z0Mo`cKN1;IGM~~e(ws2Q!$=isb?Ia2^IQp3iBMB zsD%?#;7Z{5g{*P2#Bqy6$j3J`Kb9F8pFh&H@TC3zAdHJ1^Oy7Kjrw|GbW^;-xPJ6% zN(f#tPf%uq>|1!nHD8dAtK??bUgf(dSAMPVfL0+Z%Y{W%(;-?imKdKqfzpyK7~nn5 z3wLy8;zi|kG~Zg;#D{xd4EHIBNc4G|WcBHY0{-s}P_WVh#o9V7bm<%Vs2j6anN8wX zAxq`zP#IWgB^E+^DScJb=x!2$GG-jBRJ|K_RbLyhE0(?Y`u70aQ**r2PUS0~qk{ac z5i=?cYB##~Bz#B&ETh-SlQ1a3M0A`_+D`k*|Jm`NSVzFn7pgu2rhi+Pi#a3a%C9+V zMO5MHb2d3%hS#%(o?)GPHG-P#?5cS$+DzAv*H&nrwrm*^!wh1Vxn*Edg0X{+&-9!V z$owjJ7EnSzats2?&lHldR_^ALWQt9d4vqnU{v`Div-q$?&T|mKf#iT{J@3aaHEz?8 z4p%Yn=|?6bMi`(t?1uC3N3ozmD62~dh7q*7Tge~^z?>pr`hm7}v=^}izk?VFS7_P( zv+Xz${CC?^uAJBP>=IwtojY58ui?*!v6U`8araDv95#}Q<(;nrNt_Bl9=Fhs0?ztHbthODgmp%m=k7R_+{o|k(w`0= z@}LT-kexs31!$eKWUp{9kRUWH6bf12Cd3#v?Z{cBc#ZxE2#s6&aXT-;E~q{JZRhbz z-3iIxLqFO85Z5__-lk;bSR%n^*09O8cU`og`hO7IK87?Aea-S$DVB*rYsiNzs89?^ zzxXGI=h?IbSc2cl^xFsNAIC?lkAhOGATITSv zY7B&-8P%wXF*X7?e%~WCeB7z7h&aq_P%MmLAIhIg<-XL5S-@uV&O%hqvn-$`T!$Lg zfQxpLdCxw@+&}fUVsVmO`0u!GO49RWD_m)~BZ5He|2_@|Y5JP-N5sFwzu&AUai zs3ZZO5ClQQIk6r@Lwy?oT{NGE03DLXc2-&eNHvZ(BpuQ6PDqWTGkPJSDVnpTN2Heq zSVZocMr+Q)IBdbD6Khn`Ad9&ea8NYCG_KQSDg zC9F?tv<7!j=%AVxIT}fXL3dSb_S13q!(`hB+{}&54@{D3wF1 zI)b&c-+DEfZ~GL#`cm*jSS!`73l9OD5rcm?I3&TxJ({HDIUE|$*gx8YE>RL&5-h+ASFYu)v_Fx^9bk)+9kQ2*b+P@;d+fdb|9~r!U~r zzykn4+2@8Wyd?vefQ{h#W!JZxuLCYb{Lq7y7-8ncmoA0i!iNir9YzHKM8NjPAN*^~dhZlwKNZiH&62Cg%F3A;Jk;X+a-1kn%s z0Ue|rgYyC40yY`(HPk!91Ae4Odq*UJU6R5c;KBLvI|l8+*7ro@Oa9zNYvt3x9X!At zY{c1rrbtLb!PmO2Lwkq!^RANV`8J3evmI}k`7i_8L?Wt=3p=*R59zX~L z12j|vG&Dmnkir?%z*REStPel&vmBYi%L4!e4H`!P91-{cKthEG5h`@3u)#x#0IW@% zD1ZS20tGm71O@6^$aU=Il`N^PRfq#C4Xj)l;Q-8-1|k?}X_IBm5V*9NoX2k6x{%jC zg6dd+0D%D+6&?T(0vfn;;J{Tw)@uKck{S^#PW;fd>sPR2$(AJ>@nJ-&%GkDb`xb7Y zLT2gKwR;zDUcGzy_VxQ0aNvY%;TA3|7w?0E0IUF@(a<4euxP=~;5LJ<1`SD*$|+D3 zq)3uJ!3oRb67|cO5m?JSkVhCepC!!=1qm8yQq3A98fZpUsy1!SDj~y@q-H{~f|>uN zY>}{G>1+`$L^n9D>(9yH2 zA|sV2iI@aDAc;MSt46lj*kQ+<+K9Rh6wf-kK!Xc1V&I`Yv;l`C1hs)Cm_l?2p(X>o zI}w289HQ*G!N3V`y75q)k;eZTZM^YD@L+sPMzih!AiX0V7_y;=8W_^7h(4HM3_EPG zMH*|kS!bSgxUoi>C+!$x1{D)ZfB`Ty+Q>f8J`(Ag1!r56%{3PkN~n-poOz}iE|^M`Akiiq4RuJz9oy>h&_*476jDbMRa6;9$vVP{^T;>|vInd{vLR0y z0+Q7A9%}Es`0BcV!laJ+tf-;%Q?pGsfr|4Q2hBW6j-*(sf00si~& zqK!ZNvsX8|dGY@Xe5b2Ghe@dA20EFB!4Wq zk9dDQxfz1lbs)oKclWUFs(FB$H`_>f^-3Pk{+2xD<%R$PyTDSKW)`PJAPION!EwwG zg3FaCb9nh2lWf5ac5uTMTmqk8oYEKdxg~ArQ{f8Dcfv)nZ!C(bAIoG{s)J18F>)IS zK@_7uhuA?d0SHt71~4!q_AP*~Iv@ZGU;=?H&H_ux6JA0vK_%GWf?C54_bxL+z?6_L zE~E|&Sy)Chnof+BA|qJX#*iFhN{0X-!ywEhkb#_wW%85Av$)orFfo9L{#%?8UBwvy z9&$4p$XWj&#neErIBo$oNsfs!=q%2OEsZHW<0d&7sZ6dBEbBtgkgPz48X_cJ0vUut zCebMXfDc~GDH#72xWFRnMqmmQm?DWt#6NH3K9Oqgcx*_Ro1>Qs)Yrshwu3 zXoS_A=05ppD1F++3WNC6>=g1NR1QL*I7AQpuoZwWWds4gWI#j0t zQIB$mqh=A6?(nC>wXF@0198kYP4$p-Vr!Wi{3ylt64II86sIP9(KAs9N{f^yT-sd7 z+7ACRkT{-lo284XM3#!vmj=eBIhE>E%@WnISYZ-nI06}BCJ;C(h9KpnVX3m!RH|Of zs%KT}TGQH<2aKXTYg?)O$Z#%96@-SM8dXbaB$lUwY&n0mmRYO1Q=X1-t%+5vGY^Yc zy14BirMzE4$k3R|p44@*+e;E~fr}()hYFoMXS4+CPs1KolZ#dDG}{UmPuURwcc`ot z?vSn?f~zmMs75t#!5zY`)<&%b?r=LPT=k3sQ}4S24ajf=f$Fh2x?RwM&T$TNShqph zweEJS+g;!Qr@GrH);YMLjbaH$8|6jsdf6+SX}lM{(3l1^=u6*XK;yp6C`L2*+h70x z8iKgtJ1tLB8(;&U&$!=G$omZP7$H$MAuU1+M!~|_=`skr4dQNf!AoBAs#m@2orX5z zTi^Wd*T4PE#fn+n;#{<16|FGDjA?9$O5C^-dC)Nvc+3O<)3iH+E$xXCd|)G^uE^!0 z!4&{d1{xr@ZP%HuIT)nf>v|Ww+$dIv+e=~+zgHP1hKA%)tYR0t7{;wobB%3mV;nPq z5Iy#>jfSk3K7w&u1Ab+P${gxeIl~*Cid3}RXGT0Qhb&OLhdk$PmTWzx@E~> zUCyx}b95Tm!4~$giCt`Cv$@BnHsey4^IM6)i`A}{Hdslp9^gCiRoGJ3!V4vm5vJmJ)+ zhBcy54P{vU;ShJYF`|L-u3H@A#_&ZijL~s3%y}%Ky(tg{+*rq^9Pa-jJ2_xZN(OMN zt1Q)JP`P>DcXhXW9Ow{-IfPDcq948A*+~3`m<|qtCp_xAt@_ogk@aXqyz7|{`{u*m zi;gpa3Lxhs$pOH-w!2-{aaTQ!=Khya-get5nn-o2T<&!6oZad!$2rhJ_;C~--}gSc z(l>;S@`9uBkB_{em2UBp!o{i@tm$2q)y?aq3Wu^`JPYfrce5s zf%A+(7>t4JI*tmmuP;b%Ynq}j?&kEsujR%M1c_|rI>x8WuXF#vN2pvTZeGSA#DeyI zZRg%k-QrCg1P}OzF5mX;__U!Lx zvLOhYP8ceI01>e2`mpk{j_agP`W{ditgjcefz(28s=Dx9I`9g$5E6rH1WN`Bt%C*> zs%63@hv-HjH0;-IPX>3-9OTUgh3@`}P7aZ7L+X&=@URj%Zt5Ja@+8ml0&)6`!2t(R z0x_-^dNCWYPxSNx1G5EH;KK?DtP&$p8ULd7{^All<)r^?OO%l01Fj3_)NtL}ZQe@J z6p4--63^dwkQJvv2%#Ylg(2arfngLb8l(XUw+F5yY?l1t) zQR>vO02S~ZyG|LR&+F*1^X$L}4O|F+LVDA$t-mcycTbfC{Lf zArr#eawv|(D)y}L6LpUi#o-(Z&+vpV9FeXE>oEDu@fD-)01;3Dp-&|ra2E^FC9|Od zE${+EhWm2zG8_>ZeG)F211P~lD2ei?Ov#RFixdCh1^_D35dIDw02Ktr|7a!0NT@o{4QYQQ2 zGq>Y8?}7u5anDrKG_Mm;P;+z)Wk{}IFVl}yXmj17G9%{=H&Jm1s{-kK^A!;eI3@4- z{_x>!Q4o=H7ccWN@sSGjkuJ_j?PlaNhq3gs)9usxWgtUU5P~-4 zZ!qVt@N#qbiY~o+Q!xY3>Ckcc_;9yU5)l8D0SUcMEb9?J^K(DZk}qOPK(7M>y-zd? zH2e^>H0P4;YHl{O%Mj#GFv}A-j7}TAA-#-cJv(&1KJ-1k((2^17Aey{?-M^)0UynP zKb>=v*p515%{p;3M->#B%0|2Xk_`t_D!m~$iPRg4bVC#`8`jh5785v)5K8AW^E6LN zdC@ZQQya`+KQ~kM=z>ej$mGOyeZW*ve-cr9$~w9*EmI`JepE0Ck1+F%D*BBo;*|e* zFiziVPD8RiX>k_8QXW&(`joR5R{w4kj~UuaQ#HFS3M z?Z(CvDYf?qQyk9I=)%$HI@MF-)EWO;5gdx47|yXP?-U;OR4h|zkbtBB{M8_QCqjQ7jR(} zv|&HP)gfdR02H(?xl{(uh^wZR*@fk=@K9H`-5?{ymT z6#)0^9KX_3^>iLvQdKXrTf6mJu~bk8HGd$*OJcN3t!-j`wPMvqsQ#i%pHeE%6BYT5 z2f@Mks-a}F!Qf7IzKQ_=_w^O~5Km7vMX7XKaiJGj;ZKtQVf6wS%m-2lbX|Y8SA*6e z;zJ_;g7(hA5YV*nkoFtpu;2g6OTFy%UZGBE^{Z-|fm$U~N&%K@tCU-D0c^qbX6vGC zv4v;dvO3jvQQ3CZc+@V2Rb%N5LzA^gtFl>37V4rF`S>ev^AH#CR3&w>B?Y!yy_OZg z_Fx;AE|P&5p~_rulyXDRaxLO)edr-Dc5W}VV~;NB?6tf^7aO3~Z%darzC&i+h5OG6l>7Z+^NdQ}vAS(RH^fnd9LY-chdhLQrt;1aCC7KV}vD1aYp z1TzX%Mf{2`+?Rcg3@HEiQaiZI5Z(_4v3!@p$k^_m_Vq&wl|>7y@{DjnjGq zR%U}Cac^N2SYaEyw}HuG45&a9M8Ot-K^nLL7;GVlL+E!;ghqABM%gulDK>YpSRq7d zWwIk~hj-|P4)OX8WQD^A)eCB6IN@Tk8vZs9zvG4lSZga&MZ0ztZXtGKw|gf5d`oT& zlz0phpaJ&a8@3<;#^6aLflC^tio1`@AHUH|hQ}uUriI60% z4vuZO8C;V|R!dpoqI-3>4W88eloNK{*;AARBovo|F5gGtaJA zlChH~UB{>}w=e&?D}Gft|M+d+l#XeWP8<3*l=pB%7Y_Mu*oK7xm0e+L>2X_E!H4sB zk6FPIhS+=mI3aG?7G^*K%+MhuUYKRA+)*))@R6Y)YA@WO=aE%-2XH{bM{ z;S`iZ*^SxJ`5e!izXKP*IhChWV0#gk6*rbyVHJjW1dza;;aQ#~!W%PuO+@qa5ioRPDY6PH^%+N0Mw z2_~SHB?5`S+8XW&z!J=8=ddqoLb0MA8S%}5fkIjM#6d82bVInrCtNCI{n&e5MWJ;>!O0vWj zwxmlEG^WS8CqY;+cCxz+;S|5o2dnaFv6*?@Gp>t}I4v(K0yvJrp`ux#66~0-wHKE6 z*b-KO6oy!;{}_qK;9`nG- zd4D>agHsx;wd)XMj&0Z#r1y?v_LVz2h;tjHr`jPXz!pYeBBa42h&drfKoqzpa@nIT z!`cIz+b22OoWR0Mz~Rb38{hUVZ;ho>`wyFEI5;bhWw)-VD;fYhOM1omjuDqt(K&W4 zfffHqVHGNYod>%t#vmECfS445zI}q2lVA&gL16`SExjZ(t(dt1d>I8?E;$Ur5n2_k z(g*XGjYHG`OEv52`n5YNsSkHWS>bEdTb*?qs(V`@nnV(!7#M&d8Kj|!zu_C!!5l`S zR!V{-g5nz{TN;vK%b{2lBwSvE!Xch zPL(d{)R?;=T=L{P35Wf{h2hv~yPUn2Rnr;7b359lU2LnJutlLW6+*a)`ympbf^mdP zEeMh`8{M-|-Ti{Ya6OvCu?Ktln&;if3-BbPLCI|x7f>15oxFz=7vOb!6+S`434Q_$ z-qZ6tW9Gpt0@PA0Q0D&a z;eMao*R1AY6_AO5JHt$QjyCd8PEf0WAp78lp#S7p`8baIreM$`b#pRirF^TJBmL z<5n%3K*aO89AE%htH~*Hy$juI-saS+TfdGyyY}tQqkErT{ehLgH2TUtxAmN% zZi=~ObKE$aWXb|FXO_mfGegi5!HvFHnn$RCL=rBytkTL#uFd~8TO{C!a9eJ={Ul0n zwn+00Fcyw626uYRP*q*tK?k0PCZ335iYl(ylZYeQRU&m(96`fhb14Rndfg!ASU2&} zSD$4D5u{Ll4KegtME(7jQAZpJNMK0^Cg>U|Fu^q29-llIAzK_$F@`AIh(f`aEUv{I zRW7~=R*Yx931^&g&Z*OyY)VJgb$r=47kc1qql_!L3`%G&x)`cUqR0%xXrsdv11Y4< zOiC#<%|L@`rqgV?seJ@#BVVZRIp)|l+H8Yrs;PS8O<@pDAYofnNJ9Yx2C$VTojHMM z=bg&9scW#p4ofUsz1|6Ia)KqtO^)Ymb53KVPCG59(`5fz3^dtN%55`+emiI@2)1HK zx#m`4NF|lz!EPQ*y!);hR3u?W6873VK@t#xfLmPB7;x*Ex$2bWz-ArGX0pXD%y7fQ zBK)Glaf$$yHqS=u*g4crON}+X}hnzN~H~Ovnsxyz|yO zZxSQmyDzM9C1aMs4nsVm#10>gbkZIY{av0&pYu($8fz>q$Bu!lj5gR>T5`84f4fR9 z;=Wuix-qL;GZSVoK`-0*CXsK?2gKSIFb)e{7Squgt#sdh|NWNUBsz^E-c=<*cH)XJ z&UoXFKMuL#aoKHF2uW=RqE%>R-kq;s@eO$BqL2Ts)pMSA1-gm{?3Cs_uD=d@?6S{J zd+oN*vkva-?5@r_y{iMf@4%~L4)MmDW6n9rCx1@!=taHNH-&Ab>Yu4nvkf)cZ=V@v zBYzK#$RZa*vF30Y&U)UapPoAD?!T|J;CK*$u%%gw*?5y)Y01j_>#Y5im zl&8FKjKdt@VBj~TCq2Yij~d{h1~;;|J?#OC8VadJ___iMOu=GNdKiW)coB+RU?LPO ztb`s4@xnUDuntvtR~4$T1S+6l2_%q#2v&C;^p%BI>+@Xu;D^K{KCFnoI-;EL2SwTK zkAM5?9{>T!4s)<$fWSkZJP^3NaELJ+-w6N5R;~dKG!h0?)VK!rFo;18R)ZSKpoRy% z5<*xcBN&%p)Cog@LKcPshLsqL6AD4YMBWgGIYa>!dI&_USdMiPl=rD zB(X9nmO_w&9PgM%Goolp*qt(pt8`r}@%Ktp%94Ln)E^fAr;aVkLwE(0hXI#2js=d< zjB0$01l#Bs4Q3D;+whP>`0;Lm~B0heC`&hBaJdBW*y1 z6ZkNaRLRvPqf!(~;2{YS5I_U~Kmubi5m}q`q(A@pCQ!Di5X>OuJD3rVcfdoT3vFma z8H!Ma9yFm2l_)$OdeMk3RHF>FC`SL`p;1+uY@{S5sW6%mk(8=5BDr9xw^BAJT;xKg zqxlvtPB9uw%+wONAjK(K(h^IMVyHwd1Sy;_)Gidl3418S4)*ZWCOowYd#J(|th$6H zR3Qml)fwC-0M@Whz;Yj0Ko23r&Poz&Dq0|gFaVH;R%ihaS|EW0hS;KgCaj+T?WTW?u{2>$Dbig}4JVZaWHX+;+FT?JYBMyIbJ;cDTRQEpClV+};Wo zv$3rXG-O~Cc4FlN1>;F8PKy7FW>iDFc@PFAT9F4_NFbkSneDIm+T8T2_h5RBSRrU& zh4@0C8S%ZtJl;{*JKUkZ^_}m2tuWvE-Z#JhEwF#(OJ6J47r)HVFMkz$VCJrOF3PAt z4P+qQoTwE!Ix#Il#^D(4Lc_GApoA7spn$su;4J2K;)Gw^+!mvE9*1Ryf^AzC8W;A) z%*b(#c^nl9!}u-GsKE$AkYTkHCA-ydOf|;QWP%7|sI7=V9&)l;7Pq%(=pC|`)hlDE z4A{mv&M|`(++#EExXe%y@|V|Aj3fWhd}yJ>q%4LDN{pi-!q5gXND+Y~;35wKzyn>j z+_X0<`o&?6N;7Z^fi(Y@<LN)pv5mF2q53(*VqW9KiWs4hry6(xC@9=8|qkGuurb@EMEfr8hC@ljUZIiVT z%wTFm&&_DXLh?+BBxqsQTCO#1;f-)kmYXL!w(+lj{O}#So6`xe3bW_TVW|x4D&HkY zVW_Q*?M{lsTCkS{vdmtCpSR*Hci+O1edcsaoZT~r=et{;6HqsMx@+aITbtqJC#yO$ zlhQUN@<4(l2w?xk1vj{haSru4y<8^^U$T!;VpPh(}He zJP4q!s`a+YpWgMjuW0Hy!88QU5&~#I8ZCC;x+&$Z6P;tcoyX3J7Q#!ZJZPiD&4_ks zadFQ)44mLiuQl8Ok9oj;dvIb7b~CI#l@J7n*sBJ8RY?E&soWgr7Z1BxlHLjuOezng zxON^;+GhaJ_2^ny3*9phd=~w_>TH(E7K8x}U>{V!l0JQnnV)fFQyla1o`CDiq6G<1 z0vW={t}u{62`P(L0Qsy2J$=9V`2~OdaT@-Qp)ZvX>;W3!P(GQ9ulo1npX$>GeCvY- z6?vd^ltBLpTC-hAkWYVx42CvZZSi~T2Z7rmW200`v27)1$XV;BfU7f4E~G&{xy zc!C#pLX#^Xuv*`R3)&!BqmcxZ005LA0NO`+wB~f-7J)ff9Wqu>?=VpkRdqdBQ5WS< z@DLC2V1KqnN<(;29kozFxP%ZzQLEQ-UuS)!mJ`rG0;JFiLq!Rs01o2-bT%MQcn|@| z004KzTIr`rI_QR)_jZFdN|tq5XI4;@g;+k=a8_`Kc!*eI#)pb!Syae!#o$AO#}*QR z3-*!+cyM&wCV)t{04RrYHfVV`_=cGnIBXb7wsl;)wTGUVT)h>Fqv%_us9eTHh!saZ z^M?N`Iw1fEs0F=uFY{zq^|Xm`sENBs9Wn-A2qs|9_lpHqU&N?jRX2@K%*rdF+FU=!lSN!ifVVX74wT`L|{d*^m*r zY4r$r)rgPzh-D`SSG|W%hUS0^DOd?flIW+4js|HGDHV37k|Rw7L>y_ls(6P7AbcanH)DM7vzXZB57+rDV0+(eCJ4VNme_G6`?@c#XoBmMeFciAk0QIgwcTmid)+TFG#7*>&V20S@4LVW}NZ zdwq9ldl#CO2AD_54kFl<4&VTUXB}$gl$_a_y9kuU#uJm&d9+ECxVdTjgPLt zg;$yY$P=2m6XXb+v6+c^$(H~idV8=3TL4-N7ju1Sl+w39Z)J}mFag1Nol^%T1U=OK|K0nKFTIN8Xc~qKQTI& zA@G~QGL~b>pEydM6S@R?UX|pnp3UiFdWjW#=x$d;t5CP?JvC0C@_mfLETxdaQ66uEuI^|0ACZYB_c)j#06!pT!}Z6OKD!t=O7!>e#Kp z`m5C0o_pD<>$tCNrmUIQ3=^;b87Z82H=P}Fu)Jy(+bXR0Dw_{$ZsJO3If1NDF-f^{ zv0`Sf?b>n-Isxj+nrP7gwm_|J!L1M*b)gu5uLgUh{?K3xsZ9#FjfnY99Pi* zGr$cqaI&asuPVEo63cMU7nwbQp3tD4NBghlwma+Kv4t1{1*`vYBg+##3l!YI4%}c1 zV*s>mft*H5v^n^n20A-GHlR?XwrIRJZ=O099)pB@4Lg8X{yn zxKkR3L<$yFhq@!8x?n*;B1%VJ(Ynwfxix#UBCr6RrMG&aup}!LDOkirSM0H?+arz|9=y+gMGYZJkFs#C$YJpm%$TPLI&yuin&n;NK{ z3aQMCzLaXIn7Y0;CaLMW1ZU6$ThOSFx`*@YzDXdt$kYFumAL>5@StLOuxpsF<-4ck z86SK)`FP7eF%=VTr|X{AD2Qvaou`8Wy6-qsLJ9!wcZYS4$nCYojtu z$WZsK{W`3g+-4FS6=bYDQH*(fjEK%g72>-SfSmt1`KgeWe90|W!=yQynZ|cI3>AxP z#sZ7Gk*q6&{K||b$DYT@3@6OFS$b13x#Q5tILF5!JDks29URQSzbw3R?2zt>X4s5l z2D1(el)a-oz`QIMs9canM4{Ad#BwZ;dkJL6y3SBRJYuxWEyu^0=^+-}%5RL$EH{B4 z7)#H`f%pT^ANaNn7SO2#qGL4AEH|(Y5HQ{=x)BW*LF>!=9AgvOgFpC$b{K_CNQ6#U zN*wJ`3^jxyy<&nN$iQVrEq?OVdN4r1gV3wqSe0m#jv)Jy$W zz8GHsmS79EW6xM%#;Ddd#@5BCjDX122c`~%aS8$(0`~mOVVxr6NJOqo*6HlZp$Lzi zyk>_zv5Bpc>L5MWAj*K(44CQ1r`pEa8pHZL*fg!q1O}7(+F*)pZtAAkTfG&QAh4JD z&?%B8n4Q^Wx!DL8%bE7sJi(H)tZ7kk*WUoysm<5B`_e5O7nw8GvF%Ss9Ki0z#HYu^ zx#HN@z=FP=ne?`|Fnye2{FH)i+=blPj>)ef%*hON+5)SZNNpnF7{0~5-3n*Ti9D<= zi_KJ_4$ZO+s142x8$_pk-C0}7n!W$tZ)V7dT*t2J-XCBN;eaZUEq9ZB0IR(s+WNif z{ohEG$w~Xb-VM*GV&9Uz0Qjvd;V9t~{ywvPcessrdMC?L!9b|8;R}wL4t~IYJ-*s4 z;_HRn!;EajTouoWdYWtw8cyCGJ{N6Fl`>u9>eW1jjn(eij>d<4Nx02W@#EN&lcW6N zL&Ftgq2*i7%y(?bwo{$aPy#u`cVgPV2QU>*qk~u5%95@Ig&9 zSU$*69u3kNMNt|(>>tHZ2xWvv$ZI7{>eu(df<%2$mhnDp$RNm5_ z9w&hNnp^<@%Agj%a+oUT@DC615iju*Pw^FR@fR-^KpMN|?9|95)ldD@ACFuiZ;HaT z>zlry4t?#x?G}`r-8q*Q43F_MPxCcz^EZ$4IbZRGP(j;M=08tczlhe#Nc7P7UjfF9 zN$=JNHuOqg^mlMz(W3u7obKWco*aIi9CZ>ov zb%K~rqd`>f!wuf6#%VBE@4MZx6AEt@T~GFX@ArQX_<^4=T+t3`&th$VG`l|a0&4&S z-yB39!#tt)Si$##Z~2#x`I%qyJg*FekAwP|<>xFXicbxDu%HGY05D#d*#V^pFZpFr z`I;~LvrqfAPa=eG_`>j{J0S`CiTD#Of!YHN)4sW3rx#Ql?Fv zHZ5l0fPtq~2Y%S8uqMKR3?oYX`cP)YmSxSJMVnUbTDEOTzKp4pproBRErqyMOhLvBixY zH(O)+IxYwf8Z>F7VBf}_n_#m80;uX<8d>6G%3xo9MxI>xa^{;u-?hmVKxxBz`3k=c zPMR`mU4Z|82XB?Pf#2bUN*~@(Xk~$yo4Lk|_HO@gr7;~X6ew6dygph*T9Edj-}DKArGkV`?4Bot9mM@96dV?;}84{+w8 zM$Z3Cc>*UHV(@&mR-uIa6I0GTmkvX`8UM zTAP}Iz_*>SinOq9h4M;RamOXMC2FWqCX@lKjg}W!wy-wdf;QcDPOa?9DPMi}<+opd z{{=W;fd?kIV1o}vIAMhsX1HO8ABGs&*h4ZzQNE|)??+qihu-K z=)oxYa0n|5?-^D73}V9*g1CQVo|D;+QZskk&AT&Vit(Y!V=W z1Z=Q_CV0UMYQO;wsu@%{EaDVKq=`tY@_~jn%@)$I1~=9*k9B-d8YVsA41TxAgs{$a zg5(d5iUdfWpvD$6u;W0KMi2?ipfz~p7*drQH*OiIo`rD2S<(MWpw5A8PjLff2tr`f zE#%Y*Z-l}Z^Z?W^tU(txL2Y4FyVM_16|+yJYH|+)A}6BFq@XQ`IY?{T6Fw%MTq3Li zO^R5>GS;z>b&q-yV(}VeKj-y32bUpCN!Z3UeLoKE+NMp#32)k zP{gx7MA4ZZhLD96Y_%GiRXYSwAW1L>_gL68J9rVSNo6j93_t@U(164yrh$72QVl1- zR<`vGl1yK94e<8X>YxJfrDZ7Y{jSJ^*aR;5j`jyJ!< z%o&*0q$=FP9=@@K5qQ>V>a|r^34{bP(_kRK88MOIJBI&4OaR8T<)pk6cjFxIw*>u7 zffok)g*bcx3W{(=-y|~6C63LHMh@D9AKDrzLltTbRp5BP0SuF#ws_!VDpN>IW->p7 zJj#T|7|u`!H@`VN#8BpK9}+d;L?8rkm4F0xJAn~2!4N%AgBpYo12wo|kp!aT;Rd-w zi8>e2i|VF1h4x^pIt7Jj69qR!L4jwpkI=f|bhZcb0D-iZz1#)>G?>r@CY0LL-|>=d z-^b(|hoAyFjf0N@q~H0n@qbD#fPH=UdKljEh^5JVu>b)EoDo6rRe z@E{1bA(4kmbm-~{Je-zQigcg169zCv8mR_a)GmG-jdyz6Qx(K&7m(Da@B2Hc_E zLKRAm^)4ZueXe%5taJS892=klI_S4!1{e3IGP$YI8>B1?LU|Ga1DR|u%%(SvJOHG) z^d^RSLB!1j!4v-EGG^ZcS{?%ZGG50AI6wuqS)#i;dZT}HvO#*!lo=%B?wq%Z=QWA^ zojickRN*#?Qw(*ElO7sX!2aM}pO`pjYG?nZi$M4zVAI{kS^_CY4D+knQH}N-=z>na zzi%`A`6q>MPuY8!1!90Bgn$MSNVDqWIA~ac0^GgrbBtyWK z-@CkHgB!SOt7K3=n+Uii>Og|{jckj6Bly3)GqDJWx{rgtaHE1Hpn?NLz{60$(1Iz$ zvkLX&Jo=L=#4t9cpt~I8iK1f)A~c8(WC|Npkr3<@1IPjZ;IxdR0sk8@05mhd<2YqN z0V+TN9-P64IFSQzfYO0K!Yej}GmZFR!djt=FLa6!$UhP@fCxyjI%Kb$;Wh$9fh8aT zWq<}hECxRm#6Kj&K`e$tM8rf?#6|x+L}+NlVsJ!gXog9Y#7S%hNvysiHMX|bP9xcMSWkB5~D*Tu!1U_K5x?yi2UviB0&`axo>A<%O}gW$Lm zvqAv;wDwxTf+z-V)W&k8$qBj8#&H}+n-s_W;>n$Sxq_Sk^Ls~kghvr@0HVyX1$f7I zq(>3Z$Af&zgN(I;T*!p1%Bet+A(6b$206WlI BB&PrX literal 0 HcmV?d00001 diff --git a/cogito/ReadMe.rtf b/cogito/ReadMe.rtf new file mode 100644 index 0000000000000000000000000000000000000000..0cfc2fc155e04a90968be568ba5181e783c39259 GIT binary patch literal 5448 zcmcIo+j84B5bbkj@(Rl^2x>7~5*Q?^FR|=DOlWns> zy|jscwz)^$p`;7xDpSyT3cCl&>0Z^@>ogB(gU_+4oXF^v%&HqnmpXMLVI)22RZ;uk z@F~5o3Q5tyL5KA}e)PwKd;*r=gGa6H{8eVL&LufbZm293aICzEl~culM3E38lx4CQ z@b7`h<@Xb;8P19g0jo5+N*GzEDMCBeRjuP%8mn}HR{_rrr81Pm`P+Rx7-Um*ByA~U zL@^svBCQ$}GNDu(Ai;Yw)-dr>4TdhjT&qNC>T85ibZ-^}5pNd!&PTL_(wzNYh#h-diLu9nY{=7@!Iqc|`Ngp#QtRy4Z zKRyJK5*=5$gc*+g!&_yylc_Rk7XT*v@5QS{_(GB06E9a#w zj>+=N2rl5 z6V}mYvZ!R3>&^U47Wz)fb-K@M`43toNNIVkbY*=^)(KwLf|mk;i7R6e)H%6z(!tB# z?Dth(a%#*pM@`D)wajb{P?z)ElQ*DoxDLwWYzFhJ-p|ycLf*JwN)2&4QC0~qZDSq8 zMXmcnS|^NShos6N4VJcWTmSF3g{QHYlU=9&v_|MM>swA(R5r-VFtx3d{Zz|-s?_c9 z2iZ_|^cF<&E!7(ee^m{?l{jYjsIkoVL)Jy3p^Ar;i!t>jRaP?LG2>u^;Ae-LW*#2u zQLvLa*OSpmo2x}K;>2Te^{>JGiDD{Fh`EuX27dDyz!gvm=g9P?nDi zVXNj!H?n#9bRN_IuXmb&o{ndky=eXlcN{#Z zHH+@x&WD}kv+-VLfi3DJ?);}Dj;59WFoE{2)#%He)|)sMr1p?`#_G47-k!ApFeR8# z8^hd-M!u}Tt#h@8J{rmH`*@vIIapUv45C4gOGTCUv3S;j`@yO&!T-|t>ai%O%*1$y zW=97Cigq;!+Iv%RYrnRa3u;AHvhy}v%FNkmY=p|p*xqa@GvJ1(OmQ2cGWTq_lv!fK zrCh?BIm?&Teq$pS`1;up)`x3?I-iw3x{A6o9u_Lb$g2vZR_@1|dygmq?Dk;7f9KR+ zF_80XLN}6&1aut;Db-n~N8HzJ)JjCnEjW!rApxSjA9tcQ&Q~k*K8Dg5_ZjOG@G|s^ zv-xp0F`_s0w+55JaXm_VukpiPr$NpAb{I}EU*8%{S3!dj&}Av~V`8a~KpA>uY_W#p z4iI&Y{)ibo41O1Hj)79(vcs%5^p`hBgqaQ(2w)x~M@FIF3xn*bH1H!u?Pqip{3pKx z_L@h%ckc%195gXg6<~x9;Z)H=;)UTg%*8KxppU<`tzMUYr$S{&C04i4liqzV zvbZLSwlLUBI>{Ag>({t30O>BZ9<5db!8z6@k)pa;lz)A3boTOOe)CgaeOGXkE!|y~ zUE>x-R4;J#Fvg0VbSVaZP0-p@qi(K8|B%eMg2qP%ICYgqtR$*Y4z?u6PS79 zCeI-h2I`#7vIq$ty!$oj+Z47;YKA`xkrGgQoxh literal 0 HcmV?d00001 diff --git a/cogito/Title.gif b/cogito/Title.gif new file mode 100644 index 0000000000000000000000000000000000000000..2067c1a12ce0181ef04dab364f0b87f61488162d GIT binary patch literal 85240 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

vDDw-1out$o5VDIx^v>)FB~;Cujr> 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 z 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 literal 0 HcmV?d00001 diff --git a/cogito/Xenoland.gif b/cogito/Xenoland.gif new file mode 100644 index 0000000000000000000000000000000000000000..80b545fc6ee2876fdc7ea5eb891c89461e6b0727 GIT binary patch literal 61659 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 $F}X03!%sA`2-5$pR56gcqIw4tUt) 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%0D#a@g9Zv8MUK<};r}BAlp9s9WZBZ?OPDcb&ZJq> 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 literal 0 HcmV?d00001 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