antoine-source/cogito/Cogito.Bout.s

3077 lines
72 KiB
ArmAsm

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<X1
LI1 LDA LIX0 ; DX=X1-X0 < 0
SEC
SBC LIX1
STA LIDX
BRA LI3
LI2 LDA LIX1 ; DX=X1-X0 > 0
SEC
SBC LIX0
STA LIDX
LI3 LDA LIY0
CMP LIY1
BMI LI4 ; Y0<Y1
LDA LIY0 ; DY=Y1-Y0 < 0
SEC
SBC LIY1
STA LIDY
BRA LI5
LI4 LDA LIY1 ; DY=Y1-Y0 > 0
SEC
SBC LIY0
STA LIDY
LI5 LDA LIDX
CMP LIDY
BPL LIDX0 ; DX>DY
JMP LIDY0 ; DX<DY
******* 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
***************************************************************