2023-07-03 10:58:40 +02:00
|
|
|
|
*
|
|
|
|
|
* Tout a disparu
|
|
|
|
|
*
|
|
|
|
|
* (c) 1992, Fran<EFBFBD>ois Coulon
|
|
|
|
|
* (c) 2022, Antoine Vignau & Olivier Zardini
|
|
|
|
|
*
|
|
|
|
|
|
|
|
|
|
mx %00
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-08-11 17:59:57 +02:00
|
|
|
|
* CONSTANTES
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
NB_INDICATEURS = 10
|
|
|
|
|
NB_MOTS = 25 ; on ne peut pas avoir plus de 25 mots par ecran
|
2023-08-13 17:54:50 +02:00
|
|
|
|
NB_TEXTES = 160 ; nombre de textes du jeu
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-19 23:16:55 +02:00
|
|
|
|
linksON = TRUE
|
|
|
|
|
linksOFF = FALSE
|
|
|
|
|
|
|
|
|
|
colorBLACK = 0
|
|
|
|
|
colorWHITE = 15
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* set_language
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
set_language
|
|
|
|
|
PushWord #0
|
|
|
|
|
PushWord #$29
|
|
|
|
|
_ReadBParam
|
|
|
|
|
pla
|
|
|
|
|
cmp #20
|
|
|
|
|
bcc st_ok
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
* index
|
|
|
|
|
* TEXTES : +16
|
|
|
|
|
|
|
|
|
|
st_ok
|
|
|
|
|
jsr st_setit ; try IIgs language
|
|
|
|
|
bcc st_ok99
|
|
|
|
|
|
|
|
|
|
lda #0 ; if not, try EN US
|
|
|
|
|
jsr st_setit
|
|
|
|
|
bcc st_ok99
|
|
|
|
|
|
|
|
|
|
lda #2 ; it not, force FR - It always exists
|
|
|
|
|
jsr st_setit
|
|
|
|
|
st_ok99
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
|
|
|
|
st_setit ; set language code
|
|
|
|
|
sta saveLANGUAGE
|
|
|
|
|
asl
|
|
|
|
|
tax
|
|
|
|
|
lda tblLANG,x
|
|
|
|
|
sta pINDEX+16
|
|
|
|
|
sta pTEXTES+16
|
|
|
|
|
|
|
|
|
|
lda #pINDEX ; check file exists
|
|
|
|
|
sta proOPEN+4
|
|
|
|
|
|
|
|
|
|
jsl GSOS
|
|
|
|
|
dw $2010
|
|
|
|
|
adrl proOPEN
|
|
|
|
|
bcs st_setit99
|
|
|
|
|
|
|
|
|
|
lda proOPEN+2
|
|
|
|
|
sta proCLOSE+2
|
|
|
|
|
|
|
|
|
|
jsl GSOS
|
|
|
|
|
dw $2014
|
|
|
|
|
adrl proCLOSE
|
|
|
|
|
|
|
|
|
|
st_setit99
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
|
|
|
|
tblLANG
|
|
|
|
|
asc 'us' ; 0
|
|
|
|
|
asc 'uk'
|
|
|
|
|
asc 'fr' ; 2
|
|
|
|
|
asc 'nl'
|
|
|
|
|
asc 'es' ; 4
|
|
|
|
|
asc 'it'
|
|
|
|
|
asc 'de' ; 6
|
|
|
|
|
asc 'se'
|
|
|
|
|
asc 'us'
|
|
|
|
|
asc 'ca'
|
|
|
|
|
asc 'nl'
|
|
|
|
|
asc 'he'
|
|
|
|
|
asc 'jp'
|
|
|
|
|
asc 'ar'
|
|
|
|
|
asc 'gr'
|
|
|
|
|
asc 'tr'
|
|
|
|
|
asc 'fi'
|
|
|
|
|
asc 'ta'
|
|
|
|
|
asc 'hi'
|
|
|
|
|
asc 'us' ; 19
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* load_index
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
load_index
|
|
|
|
|
lda #pINDEX
|
2023-08-23 10:58:21 +02:00
|
|
|
|
ldx ptrUNPACK+2
|
|
|
|
|
ldy ptrUNPACK
|
|
|
|
|
jsr loadFILE
|
|
|
|
|
bcs li_err
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
tya
|
|
|
|
|
jsr unpackLZ4
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
PushLong ptrIMAGE
|
|
|
|
|
PushLong ptrINDEX
|
|
|
|
|
PushLong lenDATA
|
|
|
|
|
_BlockMove
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
clc
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
li_err pha
|
2023-07-03 10:58:40 +02:00
|
|
|
|
PushLong #filSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
PushLong #errSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
_TLTextMountVolume
|
|
|
|
|
pla
|
|
|
|
|
brl meQUIT1
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-08-11 17:59:57 +02:00
|
|
|
|
* next_index
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
next_index inc dpINDEX
|
|
|
|
|
bne ni_1
|
|
|
|
|
inc dpINDEX+2
|
|
|
|
|
ni_1 lda [dpINDEX]
|
2023-07-03 10:58:40 +02:00
|
|
|
|
and #$ff
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* load_textes
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
2023-08-26 17:18:50 +02:00
|
|
|
|
load_textes lda #pTEXTES
|
2023-08-23 10:58:21 +02:00
|
|
|
|
ldx ptrUNPACK+2
|
|
|
|
|
ldy ptrUNPACK
|
|
|
|
|
jsr loadFILE
|
|
|
|
|
bcs lt_err
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
tya
|
|
|
|
|
jsr unpackLZ4
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
lda lenDATA
|
|
|
|
|
sta proEOF
|
|
|
|
|
lda lenDATA+2
|
|
|
|
|
sta proEOF+2
|
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
PushLong ptrIMAGE
|
|
|
|
|
PushLong ptrTEXTES
|
|
|
|
|
PushLong lenDATA
|
|
|
|
|
_BlockMove
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
clc
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
|
|
|
|
|
2023-08-23 10:58:21 +02:00
|
|
|
|
lt_err pha
|
2023-07-03 10:58:40 +02:00
|
|
|
|
PushLong #filSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
PushLong #errSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
_TLTextMountVolume
|
|
|
|
|
pla
|
|
|
|
|
brl meQUIT1
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* init_textes
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
init_textes
|
|
|
|
|
stz nbTEXTES ; 0 texts on entry
|
|
|
|
|
|
|
|
|
|
lda proEOF ; is file empty?
|
|
|
|
|
ora proEOF+2
|
|
|
|
|
bne it1
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
it1 lda ptrTEXTES
|
|
|
|
|
sta dpFROM
|
|
|
|
|
clc
|
|
|
|
|
adc proEOF
|
|
|
|
|
sta dpTO
|
|
|
|
|
lda ptrTEXTES+2
|
|
|
|
|
sta dpFROM+2
|
|
|
|
|
adc proEOF+2
|
|
|
|
|
sta dpTO+2
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
*--- Saute le nombre de textes (en little endian)
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
lda dpFROM ; += 2
|
2023-07-03 10:58:40 +02:00
|
|
|
|
clc
|
|
|
|
|
adc #2
|
|
|
|
|
sta dpFROM
|
|
|
|
|
lda dpFROM+2
|
|
|
|
|
adc #0
|
|
|
|
|
sta dpFROM+2
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
|
|
|
|
ldy #1 ; tell to store string
|
|
|
|
|
it2 cpy #1 ; save string pointer?
|
|
|
|
|
bne it3 ; nope
|
|
|
|
|
|
|
|
|
|
lda nbTEXTES ; yes, save the address of the string
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
tax
|
|
|
|
|
lda dpFROM
|
|
|
|
|
sta tblTEXTES,x
|
|
|
|
|
lda dpFROM+2
|
|
|
|
|
sta tblTEXTES+2,x
|
|
|
|
|
dey ; string is saved
|
|
|
|
|
|
|
|
|
|
inc nbTEXTES ; increment the number of strings
|
|
|
|
|
lda nbTEXTES ; into our limit
|
|
|
|
|
cmp #NB_TEXTES
|
|
|
|
|
bcc it3
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
it3 lda [dpFROM] ; is it the end of a string?
|
|
|
|
|
and #$ff
|
|
|
|
|
bne it4 ; nope
|
|
|
|
|
iny ; yes, tell to store string
|
|
|
|
|
|
|
|
|
|
it4 inc dpFROM
|
|
|
|
|
bne it5
|
|
|
|
|
inc dpFROM+2
|
|
|
|
|
|
|
|
|
|
it5 lda dpFROM+2 ; did we reach the end of the file?
|
|
|
|
|
cmp dpTO+2
|
|
|
|
|
bcc it2
|
|
|
|
|
lda dpFROM
|
|
|
|
|
cmp dpTO
|
|
|
|
|
bcc it2
|
|
|
|
|
rts ; we are done!
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* get_textes(textes%)
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
get_textes lda scene_actuelle
|
2023-08-11 17:59:57 +02:00
|
|
|
|
beq get_textes1
|
2023-07-03 10:58:40 +02:00
|
|
|
|
cmp nbTEXTES
|
|
|
|
|
bcc get_textes2
|
|
|
|
|
beq get_textes2
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
PushLong #pgmSTR1
|
|
|
|
|
PushLong #pgmSTR2
|
|
|
|
|
PushLong #errSTR3
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
_TLTextMountVolume
|
|
|
|
|
pla
|
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
get_textes1 sec
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
get_textes2 dec
|
2023-07-03 10:58:40 +02:00
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
tax
|
|
|
|
|
lda tblTEXTES,x
|
|
|
|
|
sta dpTEXTES
|
|
|
|
|
lda tblTEXTES+2,x
|
|
|
|
|
sta dpTEXTES+2
|
2023-08-11 17:59:57 +02:00
|
|
|
|
clc
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* LE JEU
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* GENERIQUE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* generique
|
|
|
|
|
|
2023-08-14 18:47:29 +02:00
|
|
|
|
generique jsr switch_640
|
2023-08-26 17:18:50 +02:00
|
|
|
|
|
|
|
|
|
PushLong #$e19e00
|
|
|
|
|
_InitColorTable
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
jsr tag
|
|
|
|
|
|
|
|
|
|
PushWord #0
|
|
|
|
|
_GetForeColor
|
|
|
|
|
PushWord #0
|
|
|
|
|
_GetBackColor
|
|
|
|
|
|
|
|
|
|
PushWord #15
|
|
|
|
|
_SetForeColor
|
|
|
|
|
PushWord #0
|
|
|
|
|
_SetBackColor
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
@cprint #gen_str1;8
|
|
|
|
|
@cprint #gen_str2;9
|
|
|
|
|
@cprint #gen_str3;10
|
|
|
|
|
@cprint #gen_str4;12
|
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
@cprint #gen_str7;14 ; Apple IIgs
|
|
|
|
|
@cprint #gen_str8;15 ; version by nous :-)
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
@cprint #gen_str5;17
|
2023-07-12 17:15:18 +02:00
|
|
|
|
@cprint #gen_str6;18
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
jsr attente
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
_SetBackColor
|
|
|
|
|
_SetForeColor
|
|
|
|
|
|
2023-08-21 23:00:43 +02:00
|
|
|
|
rts
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
*-----------
|
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
gen_str1 asc 'Un logiciel de Fran'8d'ois Coulon'00
|
|
|
|
|
gen_str2 asc '&'00
|
|
|
|
|
gen_str3 asc 'Sylvie Sarrat, Faustino Ribeiro, Laurent Cotton'00
|
|
|
|
|
gen_str4 asc 'Programmation : Pascal Piat - Noiz'27': Erik Ecqier'00
|
|
|
|
|
gen_str5 asc 'Les logiciels d'27'en face 1992'00
|
|
|
|
|
gen_str6 asc 'Reproduction, location et revente interdites'00
|
|
|
|
|
gen_str7 asc 'Version Apple IIgs par Brutal Deluxe Software'00
|
|
|
|
|
gen_str8 asc 'Antoine Vignau & Olivier Zardini'00
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* TAG - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* tag
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
tag PushLong #old_pattern
|
2023-07-03 10:58:40 +02:00
|
|
|
|
_GetPenPat
|
|
|
|
|
|
|
|
|
|
PushLong #the_pattern ; blue pattern
|
|
|
|
|
_SetPenPat
|
|
|
|
|
|
|
|
|
|
ldx #0
|
|
|
|
|
]lp phx
|
|
|
|
|
lda tag_points,x
|
|
|
|
|
cmp #$ffff
|
|
|
|
|
beq tag_end
|
|
|
|
|
|
|
|
|
|
and #$ff ; keep X
|
|
|
|
|
clc
|
|
|
|
|
adc #194 ; 40 center it
|
|
|
|
|
sta tag_rect+2
|
|
|
|
|
clc
|
|
|
|
|
adc #4
|
|
|
|
|
sta tag_rect+6
|
|
|
|
|
|
|
|
|
|
lda tag_points+1,x
|
|
|
|
|
and #$ff ; keep Y
|
|
|
|
|
sta tag_rect
|
|
|
|
|
clc
|
|
|
|
|
adc #4
|
|
|
|
|
sta tag_rect+4
|
|
|
|
|
|
|
|
|
|
PushLong #tag_rect
|
|
|
|
|
_PaintOval
|
|
|
|
|
|
|
|
|
|
tag_hop plx
|
|
|
|
|
inx
|
|
|
|
|
inx
|
|
|
|
|
bra ]lp
|
|
|
|
|
tag_end plx
|
|
|
|
|
|
|
|
|
|
PushLong #old_pattern
|
|
|
|
|
_SetPenPat
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------
|
|
|
|
|
|
|
|
|
|
old_pattern ds 32
|
|
|
|
|
the_pattern ds 32,$dd
|
|
|
|
|
|
|
|
|
|
*-----------
|
|
|
|
|
|
|
|
|
|
tag_rect ds 2 ; y0
|
|
|
|
|
ds 2 ; x0
|
|
|
|
|
ds 2 ; y1
|
|
|
|
|
ds 2 ; x1
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* CHOIX_AVENTURE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* choix_aventure
|
|
|
|
|
|
|
|
|
|
choix_aventure
|
2023-08-21 23:00:43 +02:00
|
|
|
|
lda #pMENU ; premier chargement
|
2023-07-03 10:58:40 +02:00
|
|
|
|
ldx ptrUNPACK+2
|
|
|
|
|
ldy ptrUNPACK
|
|
|
|
|
jsr loadFILE
|
|
|
|
|
bcc ca_ok
|
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
PushLong #filSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
PushLong #errSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
_TLTextMountVolume
|
|
|
|
|
pla
|
|
|
|
|
brl meQUIT
|
|
|
|
|
|
|
|
|
|
ca_ok tya
|
|
|
|
|
jsr unpackLZ4
|
|
|
|
|
|
|
|
|
|
PushLong ptrIMAGE
|
|
|
|
|
PushLong ptrMENU
|
|
|
|
|
PushLong #32768
|
|
|
|
|
_BlockMove
|
2023-08-21 23:00:43 +02:00
|
|
|
|
|
|
|
|
|
*--- On arrive ici si restart
|
|
|
|
|
|
2023-08-22 00:31:45 +02:00
|
|
|
|
ca_restart lda escape
|
|
|
|
|
cmp #fgLOAD
|
|
|
|
|
beq ca_load
|
|
|
|
|
|
|
|
|
|
jsr switch_320
|
2023-08-21 23:26:13 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
lda #TRUE
|
2023-07-03 10:58:40 +02:00
|
|
|
|
ldx ptrMENU+2
|
|
|
|
|
ldy ptrMENU
|
|
|
|
|
jsr fadeIN
|
|
|
|
|
|
|
|
|
|
*--- On restaure les patterns
|
|
|
|
|
|
|
|
|
|
PushLong #old_pattern
|
|
|
|
|
_GetBackPat
|
|
|
|
|
|
|
|
|
|
PushLong #black_pattern ; black pattern
|
|
|
|
|
_SetBackPat
|
|
|
|
|
|
|
|
|
|
jsr ca_choice ; choix de l'aventure
|
|
|
|
|
sta aventure ; num<75>ro de l'aventure
|
|
|
|
|
|
|
|
|
|
*--- Pr<EFBFBD>pare le pr<EFBFBD>fixe GS/OS 7 pour les images
|
|
|
|
|
|
2023-08-22 00:31:45 +02:00
|
|
|
|
ca_load lda aventure
|
2023-07-03 10:58:40 +02:00
|
|
|
|
sep #$20 ; sauve
|
|
|
|
|
ora #'0'
|
|
|
|
|
sta pathIMAGES+25
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsl GSOS
|
|
|
|
|
dw $2009
|
|
|
|
|
adrl proSETPFX
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
jsr resumeMUSIC ; NTP on
|
|
|
|
|
|
2023-08-22 00:31:45 +02:00
|
|
|
|
lda escape
|
|
|
|
|
cmp #fgLOAD
|
|
|
|
|
bne ca_exit
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ca_exit PushLong #old_pattern
|
2023-07-03 10:58:40 +02:00
|
|
|
|
_GetBackPat
|
|
|
|
|
|
|
|
|
|
lda #2
|
2023-07-12 17:15:18 +02:00
|
|
|
|
jsr nowWAIT
|
|
|
|
|
jmp fadeOUT
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
*----------- Wait for a click
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
ca_choice jsr attente
|
2023-08-21 23:00:43 +02:00
|
|
|
|
cmp #mouseDownEvt
|
|
|
|
|
bne ca_choice
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
lda taskREC+12 ; where did we click?
|
|
|
|
|
cmp #106+1
|
|
|
|
|
bcc ca_clear23
|
|
|
|
|
cmp #212+1
|
|
|
|
|
bcc ca_clear13
|
|
|
|
|
|
|
|
|
|
*----------- Clear accordingly...
|
|
|
|
|
|
|
|
|
|
ca_clear12 jsr ca_clear1
|
|
|
|
|
jsr ca_clear2
|
|
|
|
|
lda #3
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ca_clear23 jsr ca_clear2
|
|
|
|
|
jsr ca_clear3
|
|
|
|
|
lda #1
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ca_clear13 jsr ca_clear1
|
|
|
|
|
jsr ca_clear3
|
|
|
|
|
lda #2
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ca_clear1 PushLong #ca_rect1
|
|
|
|
|
_EraseRect
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ca_clear2 PushLong #ca_rect2
|
|
|
|
|
_EraseRect
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ca_clear3 PushLong #ca_rect3
|
|
|
|
|
_EraseRect
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------
|
|
|
|
|
|
|
|
|
|
ca_rect1 dw 0,0,200,106
|
|
|
|
|
ca_rect2 dw 0,106,200,212
|
|
|
|
|
ca_rect3 dw 0,212,200,320
|
|
|
|
|
|
|
|
|
|
black_pattern
|
|
|
|
|
ds 32,$00
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_ABSOLUE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_absolue
|
|
|
|
|
|
|
|
|
|
initialisation_absolue
|
|
|
|
|
jsr initialisation_resolution
|
|
|
|
|
jsr noircit_ecran
|
|
|
|
|
jsr initialisation_constantes
|
|
|
|
|
jsr initialisation_fonte
|
|
|
|
|
jsr initialisation_fond
|
|
|
|
|
jmp initialisation_souris
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_CONSTANTES - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_constantes
|
|
|
|
|
|
|
|
|
|
initialisation_constantes
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_RESOLUTION - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_resolution
|
|
|
|
|
|
|
|
|
|
initialisation_resolution
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_FONTE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_fonte
|
|
|
|
|
|
|
|
|
|
initialisation_fonte
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_FOND - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_fond
|
|
|
|
|
|
|
|
|
|
initialisation_fond
|
|
|
|
|
lda #pFOND
|
|
|
|
|
ldx ptrUNPACK+2
|
|
|
|
|
ldy ptrUNPACK
|
|
|
|
|
jsr loadFILE
|
|
|
|
|
bcc fo_ok
|
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
PushLong #filSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
PushLong #errSTR1
|
|
|
|
|
PushLong #errSTR2
|
|
|
|
|
_TLTextMountVolume
|
|
|
|
|
pla
|
|
|
|
|
brl meQUIT
|
|
|
|
|
|
|
|
|
|
fo_ok tya
|
|
|
|
|
jsr unpackLZ4
|
|
|
|
|
|
|
|
|
|
PushLong ptrIMAGE
|
|
|
|
|
PushLong ptrFOND
|
|
|
|
|
PushLong #32768
|
|
|
|
|
_BlockMove
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_SOURIS - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_souris
|
|
|
|
|
|
|
|
|
|
initialisation_souris
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITALISATION_RELATIVE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_relative
|
|
|
|
|
|
|
|
|
|
initialisation_relative
|
|
|
|
|
jsr initialisation_textes
|
|
|
|
|
jsr initialisation_tableaux
|
|
|
|
|
jsr initialisation_cache
|
|
|
|
|
jmp debut_aventure
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_TEXTES - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
initialisation_textes
|
|
|
|
|
sep #$20 ; put aventure value
|
|
|
|
|
lda aventure
|
|
|
|
|
ora #'0'
|
|
|
|
|
sta pINDEX+25
|
|
|
|
|
sta pTEXTES+25
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsr load_textes
|
|
|
|
|
jsr init_textes
|
|
|
|
|
|
|
|
|
|
lda nbTEXTES
|
|
|
|
|
dec
|
|
|
|
|
sta nombre_scenes
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_TABLEAUX - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
2023-08-13 17:54:50 +02:00
|
|
|
|
instrSPACE = $20
|
2023-08-11 17:59:57 +02:00
|
|
|
|
instrDIESE = $23
|
|
|
|
|
instrECOMM = $26
|
|
|
|
|
instrPERCE = $25
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
initialisation_tableaux
|
|
|
|
|
jsr load_index ; exit if error
|
2023-08-11 17:59:57 +02:00
|
|
|
|
|
|
|
|
|
lda ptrINDEX ; d<>but du fichier IND
|
|
|
|
|
sta dpINDEX
|
|
|
|
|
lda ptrINDEX+2
|
|
|
|
|
sta dpINDEX+2
|
|
|
|
|
|
|
|
|
|
*--- Initialise les valeurs RVB
|
|
|
|
|
|
|
|
|
|
ldx #1 ; RVB par d<>faut
|
|
|
|
|
sep #$20
|
|
|
|
|
]lp lda #4
|
|
|
|
|
sta rouge1-1,x
|
|
|
|
|
lda #1
|
|
|
|
|
sta rouge2-1,x
|
|
|
|
|
lda #7
|
|
|
|
|
sta vert1-1,x
|
|
|
|
|
sta vert2-1,x
|
|
|
|
|
stz bleu1-1,x
|
|
|
|
|
stz bleu2-1,x
|
|
|
|
|
inx
|
|
|
|
|
cpx #NB_TEXTES
|
|
|
|
|
bcc ]lp
|
|
|
|
|
beq ]lp
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
*--- Decode chaque ligne
|
|
|
|
|
|
|
|
|
|
itab_loop lda [dpINDEX] ; read a byte
|
|
|
|
|
and #$ff
|
|
|
|
|
bne itab_1
|
|
|
|
|
rts ; we reached 0, we exit
|
|
|
|
|
|
|
|
|
|
itab_1 cmp #instrECOMM
|
|
|
|
|
bne itab_2
|
|
|
|
|
|
|
|
|
|
jsr doECOMM ; handle & - "image <20> charger"
|
|
|
|
|
bra itab_4
|
|
|
|
|
|
|
|
|
|
itab_2 cmp #instrPERCE
|
|
|
|
|
bne itab_3
|
|
|
|
|
|
|
|
|
|
jsr doPERCE ; handle % - "couleur de fond du texte"
|
|
|
|
|
bra itab_4
|
|
|
|
|
|
|
|
|
|
itab_3 cmp #instrDIESE
|
|
|
|
|
bne itab_4
|
|
|
|
|
|
|
|
|
|
jsr doDIESE ; handle # - "mot clicable"
|
|
|
|
|
|
|
|
|
|
*--- Next index
|
|
|
|
|
|
|
|
|
|
itab_4 jsr next_index ; move to the first char of the next line
|
|
|
|
|
bra itab_loop ; loop
|
|
|
|
|
|
|
|
|
|
*--- Handle % - les valeurs RVB
|
|
|
|
|
|
|
|
|
|
doPERCE jsr next_index
|
|
|
|
|
dec
|
|
|
|
|
tax ; la scene
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
sep #$20
|
|
|
|
|
sec
|
|
|
|
|
sbc #'0'
|
|
|
|
|
sta rouge1,x
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
sep #$20
|
|
|
|
|
sec
|
|
|
|
|
sbc #'0'
|
|
|
|
|
sta vert1,x
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
sep #$20
|
|
|
|
|
sec
|
|
|
|
|
sbc #'0'
|
|
|
|
|
sta bleu1,x
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
sep #$20
|
|
|
|
|
sec
|
|
|
|
|
sbc #'0'
|
|
|
|
|
sta rouge2,x
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
sep #$20
|
|
|
|
|
sec
|
|
|
|
|
sbc #'0'
|
|
|
|
|
sta vert2,x
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
sep #$20
|
|
|
|
|
sec
|
|
|
|
|
sbc #'0'
|
|
|
|
|
sta bleu2,x
|
|
|
|
|
rep #$20
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
jmp next_index ; skip the final 0
|
|
|
|
|
|
|
|
|
|
*--- Handle & - une image <EFBFBD> charger
|
|
|
|
|
|
|
|
|
|
doECOMM jsr next_index
|
|
|
|
|
dec
|
|
|
|
|
asl ; tableau de words
|
|
|
|
|
tax ; index du nom de l'image
|
|
|
|
|
|
|
|
|
|
jsr next_index ; pointe sur le nom du fichier
|
|
|
|
|
lda dpINDEX ; sauve son adresse dans le tableau
|
|
|
|
|
sta image_a_charger,x
|
|
|
|
|
|
2023-08-13 20:06:02 +02:00
|
|
|
|
]lp jsr next_index ; move to the end of the string (final zero)
|
|
|
|
|
bne ]lp
|
|
|
|
|
rts
|
2023-08-11 17:59:57 +02:00
|
|
|
|
|
|
|
|
|
*--- Handle # - les mots cliquables
|
|
|
|
|
|
|
|
|
|
doDIESE jsr next_index
|
|
|
|
|
dec
|
|
|
|
|
tax ; la scene
|
2023-08-13 17:54:50 +02:00
|
|
|
|
|
|
|
|
|
sep #$20 ; un mot en plus
|
|
|
|
|
inc pointeur_mots,x
|
|
|
|
|
lda pointeur_mots,x
|
|
|
|
|
dec
|
|
|
|
|
sta localPOINT
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
pha ; calcul l'index dans la dimension NB_MOTS
|
|
|
|
|
pha
|
|
|
|
|
phx ; index de sc<73>ne
|
|
|
|
|
PushWord #NB_MOTS ; taille d'une dimension
|
|
|
|
|
_Multiply
|
|
|
|
|
pla
|
|
|
|
|
sta localOFFSET ; 0=>0, 1=>25, 2=>50
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
*-- fonction_mot$(scene|,pointeur_mots|(scene|))=MID$(ligne$,2,espace%-2)
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
|
|
|
|
|
lda localOFFSET ; 0/25/50 => 0/50/100
|
|
|
|
|
asl
|
|
|
|
|
pha
|
|
|
|
|
lda localPOINT ; 0/1/2 => 0/2/4
|
|
|
|
|
asl
|
|
|
|
|
clc
|
|
|
|
|
adc 1,s ; +=
|
|
|
|
|
tax
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
lda dpINDEX ; sauve l'offset du mot
|
|
|
|
|
sta fonction_mots,x
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
|
2023-08-13 18:55:42 +02:00
|
|
|
|
*--- Maintenant, on parcout la cha<EFBFBD>ne jusqu'<EFBFBD> l'espace
|
2023-08-13 17:54:50 +02:00
|
|
|
|
|
|
|
|
|
]lp jsr next_index
|
|
|
|
|
cmp #instrSPACE
|
|
|
|
|
bne ]lp
|
|
|
|
|
|
|
|
|
|
*--- condition&(scene|,pointeur_mots|(scene|)) =
|
|
|
|
|
*--- ASC(MID$(ligne$,espace%+2,1))*VAL(MID$(ligne$,espace%+1,1)+"1")
|
2023-08-20 20:03:38 +02:00
|
|
|
|
*--- Ici, on ne fait pas le calcul de la version Atari
|
2023-08-13 17:54:50 +02:00
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
|
|
|
|
|
lda localOFFSET ; 0/25/50 => 0/50/100
|
|
|
|
|
asl
|
|
|
|
|
pha
|
|
|
|
|
lda localPOINT ; 0/1/2 => 0/2/4
|
|
|
|
|
asl
|
|
|
|
|
clc
|
|
|
|
|
adc 1,s ; +=
|
|
|
|
|
tax
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
lda [dpINDEX] ; prend le mot sur 16-bit
|
|
|
|
|
sta condition,x
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
2023-08-11 17:59:57 +02:00
|
|
|
|
|
2023-08-13 17:54:50 +02:00
|
|
|
|
*--- aiguillage|(scene|,pointeur_mots|(scene|))=ASC(MID$(ligne$,espace%+3))
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
|
|
|
|
|
lda localOFFSET ; 0/25/50 => 0/50/100
|
2023-08-13 18:55:42 +02:00
|
|
|
|
clc
|
|
|
|
|
adc localPOINT ; +=
|
|
|
|
|
tax
|
|
|
|
|
|
|
|
|
|
sep #$20
|
2023-08-14 15:30:29 +02:00
|
|
|
|
lda [dpINDEX] ; prend le caract<63>re 8-bit
|
2023-08-13 18:55:42 +02:00
|
|
|
|
sta aiguillage,x
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
*--- Recopie la phrase si elle existe
|
|
|
|
|
|
|
|
|
|
jsr next_index
|
|
|
|
|
bne doDIESE1 ; on a une cha<68>ne
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
doDIESE1 lda localOFFSET ; 0/25/50 => 0/50/100
|
2023-08-13 17:54:50 +02:00
|
|
|
|
asl
|
|
|
|
|
pha
|
|
|
|
|
lda localPOINT ; 0/1/2 => 0/2/4
|
|
|
|
|
asl
|
|
|
|
|
clc
|
|
|
|
|
adc 1,s ; +=
|
|
|
|
|
tax
|
|
|
|
|
pla
|
|
|
|
|
|
2023-08-13 20:06:02 +02:00
|
|
|
|
lda dpINDEX ; prend le mot sur 16-bit
|
2023-08-13 18:55:42 +02:00
|
|
|
|
sta phrase,x
|
2023-08-13 17:54:50 +02:00
|
|
|
|
|
2023-08-14 11:57:43 +02:00
|
|
|
|
*--- Maintenant, on parcout la cha<EFBFBD>ne jusqu'<EFBFBD> la fin (00)
|
2023-08-13 17:54:50 +02:00
|
|
|
|
|
2023-08-13 18:55:42 +02:00
|
|
|
|
]lp jsr next_index
|
|
|
|
|
bne ]lp
|
|
|
|
|
rts
|
2023-08-13 17:54:50 +02:00
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* INITIALISATION_CACHE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* initialisation_cache
|
|
|
|
|
|
|
|
|
|
initialisation_cache
|
|
|
|
|
rts
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-08-19 23:16:55 +02:00
|
|
|
|
* PREPARE_TEXTE
|
2023-08-14 18:47:29 +02:00
|
|
|
|
*-----------------------
|
2023-08-19 23:16:55 +02:00
|
|
|
|
* prepare_texte
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
|
|
|
|
texteSPACE = $5f
|
|
|
|
|
texteRC = $9c
|
|
|
|
|
|
2023-08-19 23:16:55 +02:00
|
|
|
|
prepare_texte
|
2023-08-19 01:14:06 +02:00
|
|
|
|
stz i ; on commence <20> 0
|
2023-08-22 00:31:45 +02:00
|
|
|
|
stz nb_lignes
|
|
|
|
|
|
2023-08-15 09:46:34 +02:00
|
|
|
|
lda #texte_final
|
|
|
|
|
sta dpTO
|
|
|
|
|
|
|
|
|
|
sep #$20 ; A en 8-bits
|
|
|
|
|
|
2023-08-19 12:58:46 +02:00
|
|
|
|
* 1- clear le texte final
|
|
|
|
|
|
2023-08-20 11:10:34 +02:00
|
|
|
|
ldx #0 ; on initialise les buffers
|
|
|
|
|
]lp lda #texteSPACE
|
|
|
|
|
sta texte_final,x
|
|
|
|
|
lda #colorBLACK
|
2023-08-26 10:28:36 +02:00
|
|
|
|
sta texte_color,x
|
|
|
|
|
* stz texte_index,x
|
2023-08-19 12:58:46 +02:00
|
|
|
|
inx
|
|
|
|
|
cpx #max_colonnes*max_lignes
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
* 2- recopie le texte entier
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
]lp lda [dpTEXTES],y
|
2023-08-19 01:14:06 +02:00
|
|
|
|
sta texte,y
|
2023-08-14 18:47:29 +02:00
|
|
|
|
iny
|
|
|
|
|
cmp #0
|
2023-08-19 01:14:06 +02:00
|
|
|
|
bne ]lp
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
sty longueur_texte
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
* ligne_max$=MID$(texte$,i%,max_colonnes|)
|
|
|
|
|
|
|
|
|
|
at_2 sep #$20
|
|
|
|
|
|
|
|
|
|
ldx i
|
2023-08-15 19:14:03 +02:00
|
|
|
|
ldy #0
|
2023-08-19 12:58:46 +02:00
|
|
|
|
]lp lda texte,x
|
2023-08-15 09:46:34 +02:00
|
|
|
|
sta ligne_max,y
|
|
|
|
|
inx
|
|
|
|
|
iny
|
|
|
|
|
cpy #max_colonnes
|
|
|
|
|
bcc ]lp
|
2023-08-18 19:38:17 +02:00
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
* return$=LEFT$(ligne_max$,INSTR(ligne_max$,"<EFBFBD>")) = index d'un RC
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
ldx #0
|
2023-08-19 01:14:06 +02:00
|
|
|
|
]lp lda ligne_max,x
|
2023-08-15 09:46:34 +02:00
|
|
|
|
cmp #texteRC
|
|
|
|
|
beq at_3 ; on a trouv<75> un RC
|
|
|
|
|
inx
|
|
|
|
|
cpx #max_colonnes
|
|
|
|
|
bcc ]lp
|
2023-08-19 01:14:06 +02:00
|
|
|
|
bcs at_case0 ; pas de RC sur la ligne
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
at_3 stx return ; on a l'index du RC
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
cpx #0
|
2023-08-19 01:14:06 +02:00
|
|
|
|
beq at_case1 ; 1er car est un RC, on sort une ligne blanche
|
|
|
|
|
brl at_default ; on a un RC qq part
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
* CASE 0 - aucun RC, on coupe le texte
|
|
|
|
|
|
|
|
|
|
* ligne_max$=LEFT$(ligne_max$,RINSTR(ligne_max$," "))
|
|
|
|
|
|
|
|
|
|
at_case0 ldx #max_colonnes-1
|
|
|
|
|
]lp lda ligne_max,x
|
2023-08-15 17:35:51 +02:00
|
|
|
|
cmp #instrSPACE ; un vrai espace
|
2023-08-15 09:46:34 +02:00
|
|
|
|
beq at_4
|
|
|
|
|
dex
|
|
|
|
|
bne ]lp
|
2023-08-19 01:14:06 +02:00
|
|
|
|
ldx #1 ; eventuel cas douteux
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
at_4 stx len_max
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
* b$=b$+ligne_max$+SPACE$(max_colonnes|-LEN(ligne_max$))
|
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
ldx #0
|
|
|
|
|
]lp lda ligne_max,x
|
2023-08-15 09:46:34 +02:00
|
|
|
|
jsr set_textefinal
|
|
|
|
|
inx
|
|
|
|
|
cpx len_max
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
2023-08-19 12:58:46 +02:00
|
|
|
|
cpx #max_colonnes
|
|
|
|
|
bcs noSPC
|
|
|
|
|
|
|
|
|
|
lda #instrSPACE
|
|
|
|
|
]lp jsr set_textefinal
|
|
|
|
|
inx
|
|
|
|
|
cpx #max_colonnes
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
noSPC
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
* ADD i%,LEN(ligne_max$)
|
|
|
|
|
|
2023-08-14 18:47:29 +02:00
|
|
|
|
rep #$20
|
2023-08-15 09:46:34 +02:00
|
|
|
|
lda i
|
|
|
|
|
clc
|
|
|
|
|
adc len_max
|
2023-08-19 01:14:06 +02:00
|
|
|
|
inc
|
2023-08-15 09:46:34 +02:00
|
|
|
|
sta i
|
|
|
|
|
sep #$20
|
|
|
|
|
bra at_8
|
|
|
|
|
|
|
|
|
|
* CASE 1 - ligne blanche
|
|
|
|
|
|
|
|
|
|
at_case1 ldx i ; on utilise X pour <20>tre en 16-bits
|
|
|
|
|
inx
|
|
|
|
|
stx i
|
|
|
|
|
|
2023-08-19 12:58:46 +02:00
|
|
|
|
ldx #0
|
|
|
|
|
lda #instrSPACE
|
|
|
|
|
]lp jsr set_textefinal
|
|
|
|
|
inx
|
|
|
|
|
cpx #max_colonnes
|
|
|
|
|
bcc ]lp
|
|
|
|
|
bcs at_8
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
|
|
|
|
* DEFAULT
|
|
|
|
|
|
2023-08-19 12:58:46 +02:00
|
|
|
|
at_default ldx #0 ; ligne_max$=LEFT$(return$,return%)
|
2023-08-19 01:14:06 +02:00
|
|
|
|
]lp lda ligne_max,x
|
2023-08-15 15:20:00 +02:00
|
|
|
|
jsr set_textefinal
|
|
|
|
|
inx
|
|
|
|
|
cpx return
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
* b$=b$+ligne_max$+SPACE$(max_colonnes|-return%)
|
|
|
|
|
|
2023-08-19 12:58:46 +02:00
|
|
|
|
cpx #max_colonnes
|
|
|
|
|
bcs noSPC2
|
|
|
|
|
|
|
|
|
|
lda #instrSPACE
|
|
|
|
|
]lp jsr set_textefinal
|
|
|
|
|
inx
|
|
|
|
|
cpx #max_colonnes
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
2023-08-22 00:31:45 +02:00
|
|
|
|
noSPC2
|
2023-08-15 15:20:00 +02:00
|
|
|
|
|
|
|
|
|
* ADD i%,return%+1
|
|
|
|
|
|
|
|
|
|
rep #$20
|
|
|
|
|
lda i
|
|
|
|
|
clc
|
|
|
|
|
adc return
|
|
|
|
|
inc
|
|
|
|
|
sta i
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
2023-08-15 09:46:34 +02:00
|
|
|
|
* UNTIL i%>=longueur_texte%
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
mx %10
|
|
|
|
|
|
|
|
|
|
at_8 inc nb_lignes
|
2023-08-22 00:31:45 +02:00
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
ldx i
|
2023-08-15 09:46:34 +02:00
|
|
|
|
cpx longueur_texte
|
|
|
|
|
bcs at_9
|
|
|
|
|
brl at_2 ; we loop
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
at_9
|
|
|
|
|
|
2023-08-22 00:31:45 +02:00
|
|
|
|
*--- on centre le texte
|
|
|
|
|
|
|
|
|
|
rep #$20
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
lda #max_lignes ; on est au max, on ne fait rien
|
2023-08-22 00:31:45 +02:00
|
|
|
|
sec
|
|
|
|
|
sbc nb_lignes
|
2023-08-22 13:20:27 +02:00
|
|
|
|
bpl at_10
|
|
|
|
|
lda #0
|
|
|
|
|
at_10 clc
|
|
|
|
|
adc #1
|
|
|
|
|
lsr
|
|
|
|
|
sta printY ; output line
|
2023-08-23 08:30:19 +02:00
|
|
|
|
sta motY
|
2023-08-22 00:31:45 +02:00
|
|
|
|
asl
|
|
|
|
|
tax
|
2023-08-22 13:20:27 +02:00
|
|
|
|
lda y_coord,x
|
|
|
|
|
sta offsetY
|
2023-08-19 23:16:55 +02:00
|
|
|
|
rts
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
mx %10
|
|
|
|
|
|
2023-08-19 23:16:55 +02:00
|
|
|
|
*--- output dans texte final
|
|
|
|
|
|
|
|
|
|
mx %10
|
|
|
|
|
|
|
|
|
|
set_textefinal
|
|
|
|
|
sta (dpTO)
|
|
|
|
|
inc dpTO
|
|
|
|
|
bne set_tf1
|
|
|
|
|
inc dpTO+1
|
|
|
|
|
set_tf1 rts
|
|
|
|
|
|
|
|
|
|
mx %00 ; on revient en 16-bits
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* AFFICHE_TEXTE
|
|
|
|
|
*-----------------------
|
|
|
|
|
* affiche_texte
|
2023-08-15 15:20:00 +02:00
|
|
|
|
|
2023-08-15 09:46:34 +02:00
|
|
|
|
* on imprime le texte (enfin)
|
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
modeForeCopy = $0004 ; QDII Table 16-10
|
|
|
|
|
|
2023-08-19 23:16:55 +02:00
|
|
|
|
affiche_texte
|
2023-08-15 15:20:00 +02:00
|
|
|
|
jsr switch_640 ; switch to 640
|
2023-08-15 09:46:34 +02:00
|
|
|
|
|
2023-08-22 19:07:02 +02:00
|
|
|
|
* on s'occupe des couleurs de la palette
|
2023-08-15 17:35:51 +02:00
|
|
|
|
|
|
|
|
|
lda ptrFOND
|
|
|
|
|
sta dpFROM
|
|
|
|
|
lda ptrFOND+2
|
|
|
|
|
sta dpFROM+2
|
|
|
|
|
|
|
|
|
|
ldx scene_actuelle
|
|
|
|
|
sep #$20
|
|
|
|
|
lda rouge1-1,x
|
2023-08-22 19:07:02 +02:00
|
|
|
|
asl
|
|
|
|
|
sta rvb1+1
|
2023-08-15 17:35:51 +02:00
|
|
|
|
lda vert1-1,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
asl
|
2023-08-22 19:07:02 +02:00
|
|
|
|
asl
|
|
|
|
|
sta rvb1
|
2023-08-15 17:35:51 +02:00
|
|
|
|
lda bleu1-1,x
|
2023-08-22 19:07:02 +02:00
|
|
|
|
asl
|
|
|
|
|
ora rvb1
|
|
|
|
|
sta rvb1
|
2023-08-15 17:35:51 +02:00
|
|
|
|
|
|
|
|
|
lda rouge2-1,x
|
2023-08-22 19:07:02 +02:00
|
|
|
|
asl
|
|
|
|
|
sta rvb2+1
|
2023-08-15 17:35:51 +02:00
|
|
|
|
lda vert2-1,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
asl
|
2023-08-22 19:07:02 +02:00
|
|
|
|
asl
|
|
|
|
|
sta rvb2
|
2023-08-15 17:35:51 +02:00
|
|
|
|
lda bleu2-1,x
|
2023-08-22 19:07:02 +02:00
|
|
|
|
asl
|
|
|
|
|
ora rvb2
|
|
|
|
|
sta rvb2
|
2023-08-15 17:35:51 +02:00
|
|
|
|
|
|
|
|
|
rep #$20
|
|
|
|
|
|
2023-08-22 19:07:02 +02:00
|
|
|
|
lda rvb2
|
|
|
|
|
ldy #$7E02
|
2023-08-15 17:35:51 +02:00
|
|
|
|
sta [dpFROM],y
|
2023-08-22 19:07:02 +02:00
|
|
|
|
ldy #$7E0A
|
|
|
|
|
sta [dpFROM],y
|
|
|
|
|
ldy #$7E12
|
|
|
|
|
sta [dpFROM],y
|
|
|
|
|
ldy #$7E1A
|
2023-08-15 17:35:51 +02:00
|
|
|
|
sta [dpFROM],y
|
|
|
|
|
|
2023-08-22 19:07:02 +02:00
|
|
|
|
lda rvb1
|
|
|
|
|
ldy #$7E04
|
|
|
|
|
sta [dpFROM],y
|
|
|
|
|
ldy #$7E0C
|
|
|
|
|
sta [dpFROM],y
|
|
|
|
|
ldy #$7E14
|
|
|
|
|
sta [dpFROM],y
|
|
|
|
|
ldy #$7E1C
|
|
|
|
|
sta [dpFROM],y
|
2023-08-15 17:35:51 +02:00
|
|
|
|
|
|
|
|
|
* et on affiche enfin
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
lda #TRUE
|
2023-08-15 09:46:34 +02:00
|
|
|
|
ldx ptrFOND+2
|
|
|
|
|
ldy ptrFOND
|
|
|
|
|
jsr fadeIN
|
2023-08-15 15:20:00 +02:00
|
|
|
|
|
|
|
|
|
PushWord #0 ; save current mode
|
2023-08-15 17:35:51 +02:00
|
|
|
|
_GetTextMode
|
2023-08-15 15:20:00 +02:00
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
PushWord #modeForeCopy
|
|
|
|
|
_SetTextMode
|
2023-08-15 15:20:00 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
PushLong #texte_color
|
2023-08-19 12:58:46 +02:00
|
|
|
|
PushLong #texte_final
|
2023-08-22 13:20:27 +02:00
|
|
|
|
PushWord #3 ; x
|
|
|
|
|
PushWord printY ; y
|
|
|
|
|
PushWord #max_colonnes ; largeur
|
2023-08-15 09:46:34 +02:00
|
|
|
|
jsr print
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
_SetTextMode ; restore original mode
|
2023-08-14 18:47:29 +02:00
|
|
|
|
rts
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* DEBUT_AVENTURE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* debut_aventure
|
|
|
|
|
|
|
|
|
|
debut_aventure
|
2023-08-21 14:43:25 +02:00
|
|
|
|
lda #-1
|
|
|
|
|
sta scene_ancienne
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* sta mot_ancien
|
2023-08-21 23:00:43 +02:00
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
lda #$d2 ; initialise la cha<68>ne de commentaire
|
|
|
|
|
sta ligne_commentaire
|
|
|
|
|
|
2023-08-21 23:00:43 +02:00
|
|
|
|
lda escape ; on saute ce que l'on vient
|
|
|
|
|
cmp #fgLOAD ; de charger en m<EFBFBD>moire !
|
|
|
|
|
beq da_1
|
2023-08-21 14:43:25 +02:00
|
|
|
|
|
2023-08-21 23:00:43 +02:00
|
|
|
|
lda #1
|
|
|
|
|
sta scene_actuelle
|
|
|
|
|
lda #TRUE
|
|
|
|
|
sta deplacement
|
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
ldx #1
|
|
|
|
|
sep #$20
|
|
|
|
|
lda #FALSE
|
|
|
|
|
]lp sta scene_visitee-1,x
|
|
|
|
|
inx
|
|
|
|
|
cpx #NB_TEXTES
|
|
|
|
|
bcc ]lp
|
|
|
|
|
beq ]lp
|
|
|
|
|
rep #$20
|
2023-08-21 23:00:43 +02:00
|
|
|
|
|
|
|
|
|
da_1 lda #FALSE
|
|
|
|
|
sta escape
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FIN_AVENTURE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fin_aventure
|
|
|
|
|
|
|
|
|
|
fin_aventure
|
|
|
|
|
jsr noircit_ecran
|
|
|
|
|
|
|
|
|
|
ldx #DEBUT_DATA ; on efface tout
|
|
|
|
|
]lp stz |$0000,x
|
|
|
|
|
inx
|
|
|
|
|
cpx #FIN_DATA
|
|
|
|
|
bcc ]lp
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FIN - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fin
|
|
|
|
|
|
2023-08-20 11:10:34 +02:00
|
|
|
|
fin rts
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* NOUVELLE_SCENE - OK
|
|
|
|
|
*-----------------------
|
2023-08-11 17:59:57 +02:00
|
|
|
|
* nouvelle_scene(scene <EFBFBD> charger)
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
nouvelle_scene
|
2023-08-26 10:28:36 +02:00
|
|
|
|
lda scene_actuelle
|
2023-08-14 11:57:43 +02:00
|
|
|
|
beq ns_99
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* cmp scene_ancienne
|
|
|
|
|
* beq ns_98
|
2023-08-21 14:43:25 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* ldx scene_actuelle
|
|
|
|
|
* stx scene_ancienne
|
2023-08-21 14:43:25 +02:00
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
tax
|
2023-07-03 10:58:40 +02:00
|
|
|
|
lda #TRUE
|
|
|
|
|
sep #$20
|
2023-08-26 10:28:36 +02:00
|
|
|
|
sta scene_visitee-1,x
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rep #$20
|
2023-08-21 14:43:25 +02:00
|
|
|
|
|
|
|
|
|
ns_98 lda #FALSE
|
2023-07-03 10:58:40 +02:00
|
|
|
|
sta deplacement
|
|
|
|
|
|
2023-08-14 11:57:43 +02:00
|
|
|
|
ns_99 rts
|
2023-08-14 18:47:29 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
mx %00
|
2023-08-20 20:03:38 +02:00
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* SURLIGNER_MOT
|
|
|
|
|
*-----------------------
|
|
|
|
|
* surligner_mot(texte$,mot$,pointeur_mot%,cycles)
|
|
|
|
|
|
|
|
|
|
surligner_mot
|
2023-08-23 08:30:19 +02:00
|
|
|
|
pha ; le nombre de cycles
|
|
|
|
|
|
2023-08-22 19:53:42 +02:00
|
|
|
|
_HideCursor
|
2023-08-23 08:30:19 +02:00
|
|
|
|
|
|
|
|
|
pha ; save current mode
|
|
|
|
|
_GetTextMode
|
2023-08-22 19:53:42 +02:00
|
|
|
|
pla
|
2023-08-23 08:30:19 +02:00
|
|
|
|
sta motOFFSET
|
2023-08-22 19:53:42 +02:00
|
|
|
|
|
2023-08-23 08:30:19 +02:00
|
|
|
|
PushWord #modeForeCopy
|
|
|
|
|
_SetTextMode
|
|
|
|
|
|
|
|
|
|
pla ; le nombre de cycles
|
|
|
|
|
|
2023-08-22 19:53:42 +02:00
|
|
|
|
]lp pha
|
|
|
|
|
jsr sm_blink
|
|
|
|
|
pla
|
|
|
|
|
dec
|
|
|
|
|
bne ]lp
|
2023-08-23 08:30:19 +02:00
|
|
|
|
|
|
|
|
|
PushWord motOFFSET
|
|
|
|
|
_SetTextMode
|
2023-08-22 19:53:42 +02:00
|
|
|
|
_ShowCursor
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
2023-08-22 19:53:42 +02:00
|
|
|
|
|
|
|
|
|
* noir puis blanc
|
|
|
|
|
|
|
|
|
|
sm_blink PushWord #colorBLACK
|
|
|
|
|
_SetForeColor
|
|
|
|
|
jsr sm_print
|
|
|
|
|
PushWord #colorWHITE
|
|
|
|
|
_SetForeColor
|
|
|
|
|
|
|
|
|
|
* affiche
|
|
|
|
|
|
|
|
|
|
sm_print PushLong #mot
|
|
|
|
|
PushWord motX
|
2023-08-23 10:58:21 +02:00
|
|
|
|
PushWord motY2
|
2023-08-22 19:53:42 +02:00
|
|
|
|
jsr printc
|
|
|
|
|
|
|
|
|
|
lda #3 ; wait 3 VBLS
|
|
|
|
|
jmp nowWAIT1 ; or 1/20 sec
|
|
|
|
|
|
|
|
|
|
*--- Data
|
|
|
|
|
|
|
|
|
|
motX ds 2
|
|
|
|
|
motY ds 2
|
2023-08-23 10:58:21 +02:00
|
|
|
|
motY2 ds 2
|
2023-08-23 08:30:19 +02:00
|
|
|
|
motOFFSET ds 2
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-07-13 18:38:07 +02:00
|
|
|
|
* PRINT - OK
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
2023-08-22 13:20:27 +02:00
|
|
|
|
* print(couleur$,texte$,colonne&,ligne&,largeur&)
|
2023-07-12 17:15:18 +02:00
|
|
|
|
* 1,s w return address
|
2023-08-22 13:20:27 +02:00
|
|
|
|
* 3,s w width
|
2023-07-12 17:15:18 +02:00
|
|
|
|
* 5,s w Y
|
|
|
|
|
* 7,s w X
|
|
|
|
|
* 9,s l text pointer
|
2023-08-20 11:10:34 +02:00
|
|
|
|
* 13,s l color pointer
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-08-19 01:14:06 +02:00
|
|
|
|
max_colonnes = 75 ; 80 - 75
|
|
|
|
|
max_lignes = 20 ; 20 - 18
|
2023-08-22 13:20:27 +02:00
|
|
|
|
max_colonnes2 = 80 ; 80 - 75
|
2023-07-12 17:15:18 +02:00
|
|
|
|
largeur_caractere = 8
|
|
|
|
|
hauteur_caractere = 10
|
2023-08-19 22:26:44 +02:00
|
|
|
|
marge_gauche = 3 ; nombre de caract<63>res saut<75>s pour la marge
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
2023-08-19 23:16:55 +02:00
|
|
|
|
print lda 15,s
|
|
|
|
|
sta dpTO+2
|
|
|
|
|
lda 13,s
|
|
|
|
|
sta dpTO
|
|
|
|
|
lda 11,s
|
2023-07-12 17:15:18 +02:00
|
|
|
|
sta dpFROM+2
|
|
|
|
|
lda 9,s
|
|
|
|
|
sta dpFROM
|
|
|
|
|
lda 7,s
|
|
|
|
|
sta printX
|
|
|
|
|
lda 5,s
|
|
|
|
|
sta printY
|
2023-08-22 13:20:27 +02:00
|
|
|
|
lda 3,s ; calcule la largeur de texte
|
|
|
|
|
clc
|
|
|
|
|
adc printX
|
|
|
|
|
cmp #max_colonnes2
|
|
|
|
|
bcc printINIT
|
|
|
|
|
lda #max_colonnes2
|
|
|
|
|
printINIT sta printWIDTH
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
|
|
|
|
printLOOP lda [dpFROM]
|
|
|
|
|
and #$ff
|
|
|
|
|
bne print1
|
|
|
|
|
|
|
|
|
|
printEXIT lda 1,s
|
|
|
|
|
plx
|
|
|
|
|
plx
|
|
|
|
|
plx
|
|
|
|
|
plx
|
|
|
|
|
plx
|
2023-08-19 23:16:55 +02:00
|
|
|
|
plx
|
|
|
|
|
plx
|
2023-07-12 17:15:18 +02:00
|
|
|
|
sta 1,s
|
|
|
|
|
rts
|
|
|
|
|
|
2023-08-14 18:47:29 +02:00
|
|
|
|
* 1- print char
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-14 18:47:29 +02:00
|
|
|
|
print1 cmp #instrSPACE ; skip space char
|
2023-08-15 15:20:00 +02:00
|
|
|
|
beq print2
|
|
|
|
|
cmp #texteSPACE
|
2023-08-14 18:47:29 +02:00
|
|
|
|
beq print2
|
2023-08-15 17:35:51 +02:00
|
|
|
|
cmp #texteRC
|
|
|
|
|
beq print3
|
|
|
|
|
|
|
|
|
|
tax
|
|
|
|
|
lda tblATARI,x
|
|
|
|
|
and #$ff
|
2023-08-14 18:47:29 +02:00
|
|
|
|
pha
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
lda printX
|
|
|
|
|
asl
|
|
|
|
|
tax
|
|
|
|
|
lda x_coord,x
|
|
|
|
|
pha
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
lda printY
|
|
|
|
|
asl
|
|
|
|
|
tay
|
|
|
|
|
lda y_coord,y
|
2023-07-03 10:58:40 +02:00
|
|
|
|
pha
|
|
|
|
|
_MoveTo
|
2023-08-19 23:16:55 +02:00
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
* Set font color
|
2023-08-19 23:16:55 +02:00
|
|
|
|
|
|
|
|
|
lda [dpTO]
|
|
|
|
|
and #$ff
|
|
|
|
|
pha
|
|
|
|
|
_SetForeColor
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
_DrawChar
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
* 4- next character
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
print2 inc printX
|
2023-07-12 17:15:18 +02:00
|
|
|
|
lda printX
|
2023-08-22 13:20:27 +02:00
|
|
|
|
cmp printWIDTH
|
2023-08-14 18:47:29 +02:00
|
|
|
|
bcc print4
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
print3 lda 7,s ; reset X-coord
|
2023-07-12 17:15:18 +02:00
|
|
|
|
sta printX
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
inc printY
|
|
|
|
|
lda printY
|
|
|
|
|
cmp #max_lignes
|
2023-08-14 18:47:29 +02:00
|
|
|
|
bcc print4
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
brl printEXIT ; out of SHR screen, we exit
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
* 6- we loop
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
print4 inc dpFROM
|
|
|
|
|
bne print5
|
|
|
|
|
inc dpFROM+2
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
print5 inc dpTO ; next color char
|
2023-08-19 23:16:55 +02:00
|
|
|
|
bne print6
|
|
|
|
|
inc dpTO+2
|
|
|
|
|
|
|
|
|
|
print6 brl printLOOP
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-21 15:18:59 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* PRINTC - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* printc(texte$,colonne&,ligne&)
|
|
|
|
|
* 1,s w return address
|
|
|
|
|
* 3,s w Y
|
|
|
|
|
* 5,s w X
|
|
|
|
|
* 7,s l text pointer
|
|
|
|
|
|
|
|
|
|
printc lda 9,s
|
|
|
|
|
sta dpFROM+2
|
|
|
|
|
lda 7,s
|
|
|
|
|
sta dpFROM
|
|
|
|
|
lda 5,s
|
|
|
|
|
sta printX
|
|
|
|
|
lda 3,s
|
|
|
|
|
sta printY
|
|
|
|
|
|
|
|
|
|
printcLOOP lda [dpFROM]
|
|
|
|
|
and #$ff
|
|
|
|
|
bne printc1
|
|
|
|
|
|
|
|
|
|
printcEXIT lda 1,s
|
|
|
|
|
plx
|
|
|
|
|
plx
|
|
|
|
|
plx
|
|
|
|
|
plx
|
|
|
|
|
sta 1,s
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
* 1- print char
|
|
|
|
|
|
|
|
|
|
printc1 cmp #instrSPACE ; skip space char
|
|
|
|
|
beq printc2
|
|
|
|
|
cmp #texteSPACE
|
|
|
|
|
beq printc2
|
|
|
|
|
cmp #texteRC
|
|
|
|
|
beq printc3
|
|
|
|
|
|
|
|
|
|
tax
|
|
|
|
|
lda tblATARI,x
|
|
|
|
|
and #$ff
|
|
|
|
|
pha
|
|
|
|
|
|
|
|
|
|
lda printX
|
|
|
|
|
asl
|
|
|
|
|
tax
|
2023-08-22 13:20:27 +02:00
|
|
|
|
lda x_coord,x
|
2023-08-21 15:18:59 +02:00
|
|
|
|
pha
|
|
|
|
|
|
|
|
|
|
lda printY
|
|
|
|
|
asl
|
|
|
|
|
tay
|
|
|
|
|
lda y_coord,y
|
|
|
|
|
pha
|
|
|
|
|
_MoveTo
|
|
|
|
|
|
|
|
|
|
_DrawChar
|
|
|
|
|
|
|
|
|
|
* 4- next character
|
|
|
|
|
|
|
|
|
|
printc2 inc printX
|
|
|
|
|
lda printX
|
|
|
|
|
cmp #max_colonnes2
|
|
|
|
|
bcc printc4
|
|
|
|
|
|
|
|
|
|
printc3 lda 7,s ; reset X-coord
|
|
|
|
|
sta printX
|
|
|
|
|
|
|
|
|
|
inc printY
|
|
|
|
|
lda printY
|
|
|
|
|
cmp #max_lignes
|
|
|
|
|
bcc printc4
|
|
|
|
|
|
|
|
|
|
brl printcEXIT ; out of SHR screen, we exit
|
|
|
|
|
|
|
|
|
|
* 6- we loop
|
|
|
|
|
|
|
|
|
|
printc4 inc dpFROM
|
|
|
|
|
bne printc5
|
|
|
|
|
inc dpFROM+2
|
|
|
|
|
|
|
|
|
|
printc5 brl printcLOOP
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* DATA FOR PRINT
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
printWIDTH ds 2
|
2023-07-12 17:15:18 +02:00
|
|
|
|
printX ds 2
|
|
|
|
|
printY ds 2
|
2023-08-22 13:20:27 +02:00
|
|
|
|
offsetY ds 2
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
*---
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-22 13:20:27 +02:00
|
|
|
|
x_coord = * ; For all texts
|
|
|
|
|
]x = 0 ; Premi<6D>re ligne
|
2023-08-21 15:18:59 +02:00
|
|
|
|
lup max_colonnes2
|
|
|
|
|
dw ]x
|
|
|
|
|
]x = ]x+largeur_caractere
|
|
|
|
|
--^
|
|
|
|
|
|
2023-08-22 00:31:45 +02:00
|
|
|
|
y_coord = * ; For all texts
|
2023-07-12 17:15:18 +02:00
|
|
|
|
]y = 0 ; Premi<6D>re ligne
|
|
|
|
|
lup max_lignes
|
|
|
|
|
dw ]y
|
|
|
|
|
]y = ]y+hauteur_caractere
|
2023-07-03 10:58:40 +02:00
|
|
|
|
--^
|
|
|
|
|
|
2023-08-20 16:04:48 +02:00
|
|
|
|
x_text = *
|
|
|
|
|
]x = 0 ; Premi<6D>re colonne
|
|
|
|
|
lup max_colonnes
|
2023-08-20 19:23:51 +02:00
|
|
|
|
dw ]x,]x,]x,]x,]x,]x,]x,]x
|
2023-08-20 16:04:48 +02:00
|
|
|
|
]x = ]x+1
|
|
|
|
|
--^
|
|
|
|
|
|
|
|
|
|
y_text = *
|
|
|
|
|
]y = 0 ; Premi<6D>re ligne
|
|
|
|
|
lup max_lignes
|
2023-08-20 19:23:51 +02:00
|
|
|
|
dw ]y,]y,]y,]y,]y,]y,]y,]y,]y,]y
|
2023-08-20 16:04:48 +02:00
|
|
|
|
]y = ]y+max_colonnes
|
|
|
|
|
--^
|
|
|
|
|
|
2023-08-23 08:30:19 +02:00
|
|
|
|
y_text2 = *
|
2023-08-22 00:31:45 +02:00
|
|
|
|
]y = 0 ; Premi<6D>re ligne
|
|
|
|
|
lup max_lignes
|
2023-08-23 08:30:19 +02:00
|
|
|
|
dw ]y,]y,]y,]y,]y,]y,]y,]y,]y,]y
|
|
|
|
|
]y = ]y+1
|
2023-08-22 00:31:45 +02:00
|
|
|
|
--^
|
|
|
|
|
|
2023-08-15 17:35:51 +02:00
|
|
|
|
*---
|
|
|
|
|
|
|
|
|
|
* Apple Atari
|
2023-08-18 08:48:21 +02:00
|
|
|
|
* 22 " 7E
|
|
|
|
|
* 82 <EFBFBD> 80
|
2023-08-15 17:35:51 +02:00
|
|
|
|
* 88 <EFBFBD> 85
|
|
|
|
|
* 89 <EFBFBD> 83
|
|
|
|
|
* 8D <EFBFBD> 87
|
|
|
|
|
* 8E <EFBFBD> 82
|
|
|
|
|
* 8F <EFBFBD> 8A
|
|
|
|
|
* 90 <EFBFBD> 88
|
|
|
|
|
* 91 <EFBFBD>
|
|
|
|
|
* 94 <EFBFBD> 8C
|
|
|
|
|
* 95 <EFBFBD> 8B
|
|
|
|
|
* 99 <EFBFBD> 93
|
2023-08-19 01:14:06 +02:00
|
|
|
|
* 9E <EFBFBD> 96
|
|
|
|
|
* 9D <EFBFBD> 97
|
2023-08-15 17:35:51 +02:00
|
|
|
|
* CE OE B4
|
|
|
|
|
* CF oe B5
|
|
|
|
|
|
|
|
|
|
tblATARI hex 000102030405060708090A0B0C0D0E0F
|
|
|
|
|
hex 101112131415161718191A1B1C1D1E1F
|
|
|
|
|
hex 202122232425262728292A2B2C2D2E2F
|
|
|
|
|
hex 303132333435363738393A3B3C3D3E3F
|
|
|
|
|
hex 404142434445464748494A4B4C4D4E4F
|
|
|
|
|
hex 505152535455565758595A5B5C5D5E5F
|
|
|
|
|
hex 606162636465666768696A6B6C6D6E6F
|
2023-08-18 08:48:21 +02:00
|
|
|
|
hex 707172737475767778797A7B7C7D227F
|
2023-08-19 01:14:06 +02:00
|
|
|
|
hex 82818E898488868D90898F95948D8E8F
|
|
|
|
|
hex 9091929994959E9D98999A9B9C9D9E9F
|
2023-08-15 17:35:51 +02:00
|
|
|
|
hex A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
|
2023-08-19 01:14:06 +02:00
|
|
|
|
hex B0B1B2B3CFCEB6B7B8B9BBBABCBDBEBF
|
2023-08-15 17:35:51 +02:00
|
|
|
|
hex C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
|
|
|
|
|
hex D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
|
2023-08-19 12:58:46 +02:00
|
|
|
|
hex E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
|
|
|
|
|
hex F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
|
|
|
|
|
|
|
|
|
|
tblUPPER hex 000102030405060708090A0B0C0D0E0F
|
|
|
|
|
hex 101112131415161718191A1B1C1D1E1F
|
|
|
|
|
hex 202122232425262728292A2B2C2D2E2F
|
|
|
|
|
hex 303132333435363738393A3B3C3D3E3F
|
|
|
|
|
hex 404142434445464748494A4B4C4D4E4F
|
|
|
|
|
hex 505152535455565758595A5B5C5D5E5F
|
|
|
|
|
hex 604142434445464748494A4B4C4D4E4F ; a-z => A-Z
|
|
|
|
|
hex 505152535455565758595A7B7C7D7E7F
|
|
|
|
|
hex 808182838485868788898A8B8C8D8E8F
|
|
|
|
|
hex 909192939495969798999A9B9C9D9E9F
|
|
|
|
|
hex A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
|
|
|
|
|
hex B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
|
|
|
|
|
hex C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
|
|
|
|
|
hex D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
|
2023-08-15 17:35:51 +02:00
|
|
|
|
hex E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
|
|
|
|
|
hex F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
|
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* CPRINT - OK
|
|
|
|
|
*-----------------------
|
2023-08-21 15:18:59 +02:00
|
|
|
|
* cprint(texte$,ligne&)
|
2023-08-21 18:01:50 +02:00
|
|
|
|
* X/Y= ptr to string
|
|
|
|
|
* A= line index
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-21 18:01:50 +02:00
|
|
|
|
cprint phx ; ptr to text
|
|
|
|
|
phy
|
|
|
|
|
pea $0000 ; X ; qu'on va initialiser
|
|
|
|
|
pha ; Y
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
pea $0000 ; count nb of chars in the string
|
2023-08-21 18:01:50 +02:00
|
|
|
|
sty dpFROM
|
|
|
|
|
stx dpFROM+2
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
sep #$20
|
2023-08-21 18:01:50 +02:00
|
|
|
|
]lp lda [dpFROM],y
|
2023-07-12 17:15:18 +02:00
|
|
|
|
beq cprint1
|
|
|
|
|
iny
|
|
|
|
|
bne ]lp
|
|
|
|
|
|
|
|
|
|
cprint1 rep #$20 ; nb chars x 8 to get width
|
|
|
|
|
tya
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
sta 1,s
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
*--- now, calculate where we should display it online
|
|
|
|
|
|
|
|
|
|
lda mainWIDTH ; 320 or 640
|
|
|
|
|
sec
|
|
|
|
|
sbc 1,s ; stringWidth in pixels
|
|
|
|
|
plx ; free stack
|
|
|
|
|
lsr ; /2
|
|
|
|
|
lsr ; /4
|
|
|
|
|
lsr ; /8
|
|
|
|
|
lsr ; /16
|
2023-08-21 15:18:59 +02:00
|
|
|
|
sta 3,s ; fill X from above
|
|
|
|
|
jsr printc ; the new centered print routine
|
2023-07-12 17:15:18 +02:00
|
|
|
|
rts ; must be RTS
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* ATTENTE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* attente
|
2023-08-14 15:30:29 +02:00
|
|
|
|
|
|
|
|
|
attente jmp waitEVENT ; LoGo - check if we support keypresses as well
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* IMAGE - OK
|
|
|
|
|
*-----------------------
|
2023-08-11 17:59:57 +02:00
|
|
|
|
* image(scene <EFBFBD> charger)
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
image lda scene_actuelle ; not 0
|
2023-08-14 11:57:43 +02:00
|
|
|
|
beq image_ko
|
|
|
|
|
dec
|
2023-07-03 10:58:40 +02:00
|
|
|
|
asl
|
|
|
|
|
tax
|
|
|
|
|
lda image_a_charger,x
|
2023-08-14 11:57:43 +02:00
|
|
|
|
bne image_1
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
|
|
|
|
image_ko lda #FALSE
|
|
|
|
|
sta image_chargee
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*--- on copie le nom <EFBFBD> pIMAGE+2
|
|
|
|
|
|
|
|
|
|
image_1 sta Debut
|
|
|
|
|
lda ptrINDEX+2
|
|
|
|
|
sta Debut+2
|
|
|
|
|
|
|
|
|
|
ldy #0 ; 1METRO.PI1
|
|
|
|
|
sep #$20 ; 01234567
|
|
|
|
|
]lp lda [Debut],y
|
|
|
|
|
sta pIMAGE+4,y
|
|
|
|
|
iny
|
|
|
|
|
cmp #'.'
|
|
|
|
|
bne ]lp
|
|
|
|
|
|
|
|
|
|
lda aventure ; 1->A ($41), 2->B ($42), 3->C ($43)
|
|
|
|
|
ora #'A'-1
|
|
|
|
|
sta pIMAGE+4 ; 1METRO. -> AMETRO.
|
|
|
|
|
|
|
|
|
|
lda #'l' ; lz4
|
|
|
|
|
sta pIMAGE+4,y
|
|
|
|
|
iny ; 8
|
|
|
|
|
lda #'z'
|
|
|
|
|
sta pIMAGE+4,y
|
|
|
|
|
iny ; 9
|
|
|
|
|
lda #'4'
|
|
|
|
|
sta pIMAGE+4,y
|
|
|
|
|
|
|
|
|
|
tya
|
|
|
|
|
clc
|
2023-08-14 11:57:43 +02:00
|
|
|
|
adc #3 ; strl (2) + '7/' (2) + la correction sur la longueur de cha<68>ne
|
2023-07-03 10:58:40 +02:00
|
|
|
|
sta pIMAGE
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
*--- et on charge l'image
|
|
|
|
|
|
|
|
|
|
lda #pIMAGE
|
|
|
|
|
ldx ptrUNPACK+2
|
|
|
|
|
ldy ptrUNPACK
|
|
|
|
|
jsr loadFILE
|
|
|
|
|
bcs image_ko
|
|
|
|
|
tya
|
|
|
|
|
jsr unpackLZ4
|
|
|
|
|
|
|
|
|
|
lda #TRUE
|
|
|
|
|
sta image_chargee
|
|
|
|
|
jmp affiche_image
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* CHARGEMENT_HARD - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* chargement_hard(fichier$)
|
|
|
|
|
|
|
|
|
|
chargement_hard
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* AFFICHE_IMAGE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* affiche_image(adresse_image%,palette$,fondu!)
|
|
|
|
|
|
|
|
|
|
affiche_image
|
|
|
|
|
lda image_chargee
|
|
|
|
|
cmp #TRUE
|
|
|
|
|
beq ai_1
|
|
|
|
|
rts
|
|
|
|
|
|
2023-08-26 17:18:50 +02:00
|
|
|
|
ai_1 jsr noircit_ecran
|
|
|
|
|
jsr switch_320
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
lda #TRUE
|
2023-07-03 10:58:40 +02:00
|
|
|
|
ldx ptrIMAGE+2
|
|
|
|
|
ldy ptrIMAGE
|
|
|
|
|
jsr fadeIN
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
jsr attente
|
2023-07-03 10:58:40 +02:00
|
|
|
|
jsr fadeOUT ; noircit_ecran
|
|
|
|
|
jmp switch_640
|
2023-08-14 15:30:29 +02:00
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* SUITE_FORCEE -
|
|
|
|
|
*-----------------------
|
|
|
|
|
* suite_forcee(scene)
|
|
|
|
|
|
|
|
|
|
suite_forcee
|
2023-08-26 10:28:36 +02:00
|
|
|
|
lda scene_actuelle
|
2023-08-19 22:26:44 +02:00
|
|
|
|
beq sf_false
|
2023-08-14 15:30:29 +02:00
|
|
|
|
|
2023-08-19 22:26:44 +02:00
|
|
|
|
dec ; prend la scene
|
2023-08-14 15:30:29 +02:00
|
|
|
|
pha ; calcul l'index dans la dimension NB_MOTS
|
|
|
|
|
pha
|
|
|
|
|
pha ; index de sc<73>ne
|
|
|
|
|
PushWord #NB_MOTS ; taille d'une dimension
|
|
|
|
|
_Multiply
|
|
|
|
|
pla
|
|
|
|
|
sta localOFFSET ; 0=>0, 1=>25, 2=>50
|
|
|
|
|
asl ; parce qu'on est sur des words
|
|
|
|
|
clc
|
|
|
|
|
adc #fonction_mots
|
|
|
|
|
sta dpFROM ; on pointe sur l'index du premier mot
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
lda (dpFROM) ; prend la valeur du premier mot
|
|
|
|
|
sta dpINDEX ; de fonction_mots
|
2023-08-19 22:26:44 +02:00
|
|
|
|
lda ptrINDEX+2
|
2023-08-14 15:30:29 +02:00
|
|
|
|
sta dpINDEX+2 ; et met son pointeur 32-bits
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* ldy #6-2 ; len('suite ') sur 16-bits
|
|
|
|
|
*]lp lda [dpINDEX],y
|
|
|
|
|
* sta mot,y
|
|
|
|
|
* cmp strSUITE,y
|
|
|
|
|
* bne sf_false
|
|
|
|
|
* dey
|
|
|
|
|
* dey
|
|
|
|
|
* bpl ]lp
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
tax
|
|
|
|
|
txy
|
|
|
|
|
|
|
|
|
|
sep #$20 ; mot_upper$=UPPER$(mot$)
|
|
|
|
|
ldy #6-1
|
2023-08-14 15:30:29 +02:00
|
|
|
|
]lp lda [dpINDEX],y
|
2023-08-26 10:28:36 +02:00
|
|
|
|
tax
|
|
|
|
|
lda tblATARI,x
|
|
|
|
|
tax
|
|
|
|
|
lda tblUPPER,x
|
2023-08-14 15:30:29 +02:00
|
|
|
|
cmp strSUITE,y
|
2023-08-19 22:26:44 +02:00
|
|
|
|
bne sf_false
|
2023-08-14 15:30:29 +02:00
|
|
|
|
dey
|
|
|
|
|
bpl ]lp
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
rep #$20
|
|
|
|
|
|
2023-08-14 15:30:29 +02:00
|
|
|
|
lda #aiguillage
|
|
|
|
|
clc
|
|
|
|
|
adc localOFFSET
|
|
|
|
|
sta dpFROM
|
|
|
|
|
|
|
|
|
|
lda (dpFROM) ; la prochaine sc<73>ne
|
|
|
|
|
and #$ff
|
|
|
|
|
sta scene_actuelle
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
2023-08-14 15:30:29 +02:00
|
|
|
|
lda #TRUE
|
2023-08-19 22:26:44 +02:00
|
|
|
|
bra sf_99
|
2023-08-26 10:28:36 +02:00
|
|
|
|
sf_false rep #$20
|
|
|
|
|
lda #FALSE
|
2023-08-21 14:43:25 +02:00
|
|
|
|
sf_99 sta fgSUITEFORCEE
|
2023-08-14 15:30:29 +02:00
|
|
|
|
rts
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
strSUITE asc 'SUITE '
|
2023-08-14 15:30:29 +02:00
|
|
|
|
|
2023-08-20 16:04:48 +02:00
|
|
|
|
*-----------------------
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* CLIC_MOT - OK
|
2023-08-20 16:04:48 +02:00
|
|
|
|
*-----------------------
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* clic_mot
|
|
|
|
|
* on regarde sur quel mot on a cliqu<EFBFBD>
|
2023-08-20 16:04:48 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
clic_mot lda taskWHERE+2 ; X
|
|
|
|
|
cmp #marge_gauche*largeur_caractere
|
|
|
|
|
bcc tc_ko
|
|
|
|
|
cmp #640-{2*largeur_caractere}
|
|
|
|
|
bcs tc_ko
|
2023-08-21 18:01:50 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
sec
|
|
|
|
|
sbc #marge_gauche*largeur_caractere
|
|
|
|
|
clc
|
|
|
|
|
adc #7
|
|
|
|
|
lsr
|
|
|
|
|
lsr
|
|
|
|
|
lsr
|
|
|
|
|
sta motX
|
2023-08-22 19:53:42 +02:00
|
|
|
|
pha
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
lda taskWHERE ; Y
|
|
|
|
|
sec
|
|
|
|
|
sbc offsetY ; d<>calage li<6C> au centrage du texte
|
|
|
|
|
clc
|
|
|
|
|
adc #9
|
|
|
|
|
asl
|
|
|
|
|
tax
|
|
|
|
|
lda y_text2,x
|
|
|
|
|
clc
|
|
|
|
|
adc motY
|
|
|
|
|
sta motY2 ; la ligne
|
|
|
|
|
lda y_text,x
|
|
|
|
|
sta motOFFSET ; l'offset dans le texte
|
|
|
|
|
clc
|
|
|
|
|
adc 1,s
|
|
|
|
|
tax
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
* on a un mot mais on ne sait pas lequel
|
|
|
|
|
|
|
|
|
|
* lda texte_index,x
|
|
|
|
|
lda texte_color,x
|
|
|
|
|
and #$ff
|
|
|
|
|
bne tc_2
|
|
|
|
|
|
|
|
|
|
tc_ko sec ; pas de mot
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*--- on a un mot
|
|
|
|
|
|
|
|
|
|
tc_2
|
|
|
|
|
* ldx mot_clique ; on sauvegarde l'ancien mot
|
|
|
|
|
* stx mot_ancien
|
|
|
|
|
* sta mot_clique ; et le nouveau
|
|
|
|
|
|
|
|
|
|
lda motOFFSET ; on en a encore besoin
|
|
|
|
|
clc
|
|
|
|
|
adc #texte_final
|
|
|
|
|
sta dpFROM
|
|
|
|
|
|
|
|
|
|
*- on cherche le d<EFBFBD>but
|
|
|
|
|
|
|
|
|
|
ldy motX
|
|
|
|
|
]lp cpy #0 ; condition de sortie : on est <20> gauche
|
|
|
|
|
beq tc_debut
|
|
|
|
|
lda (dpFROM),y
|
|
|
|
|
and #$ff
|
|
|
|
|
cmp #'A'-1 ; instrSPACE
|
|
|
|
|
bcc tc_debutok ; beq
|
|
|
|
|
dey
|
|
|
|
|
bra ]lp
|
|
|
|
|
|
|
|
|
|
tc_debutok iny
|
|
|
|
|
tc_debut sty motX ; on a le debut
|
|
|
|
|
|
|
|
|
|
ldx #0
|
|
|
|
|
sep #$20
|
|
|
|
|
]lp cpy #max_colonnes
|
|
|
|
|
bcs tc_fin
|
|
|
|
|
lda (dpFROM),y
|
|
|
|
|
cmp #'A'-1 ; #instrSPACE
|
|
|
|
|
bcc tc_fin ; beq
|
|
|
|
|
sta mot,x
|
|
|
|
|
iny
|
|
|
|
|
inx
|
|
|
|
|
bne ]lp ; on a recopi<70> le mot
|
|
|
|
|
|
|
|
|
|
tc_fin stz mot,x ; fin de cha<68>ne
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
lda motX ; corrige la marge
|
|
|
|
|
clc
|
|
|
|
|
adc #marge_gauche
|
|
|
|
|
sta motX
|
|
|
|
|
|
|
|
|
|
clc ; on a un mot
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* AIGUILLAGE
|
|
|
|
|
*-----------------------
|
|
|
|
|
* aiguille(scene)
|
|
|
|
|
* parce que le tableau aiguillage existe
|
|
|
|
|
* si on est ici, on sait qu'on a un mot
|
|
|
|
|
|
|
|
|
|
aiguille
|
|
|
|
|
* lda scene_actuelle
|
|
|
|
|
* sta scene_ancienne
|
|
|
|
|
stz numero_mot ; l'index du mot en sortie, le vrai !
|
|
|
|
|
|
|
|
|
|
*--- mot_upper$=UPPER$(mot$)
|
|
|
|
|
|
|
|
|
|
lda #0 ; on init les registres (mais pourquoi ?)
|
|
|
|
|
tax
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
sep #$20 ; mot_upper$=UPPER$(mot$)
|
|
|
|
|
ldx #0
|
|
|
|
|
]lp lda mot,x
|
|
|
|
|
tay
|
|
|
|
|
lda tblATARI,y
|
|
|
|
|
tay
|
|
|
|
|
lda tblUPPER,y
|
|
|
|
|
sta mot_upper,x
|
|
|
|
|
inx
|
|
|
|
|
cpx #128
|
|
|
|
|
bcc ]lp
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
*--- pointeur_mots|(scene_actuelle|)
|
|
|
|
|
|
|
|
|
|
pha ; calcul l'index dans la dimension NB_MOTS
|
|
|
|
|
pha
|
|
|
|
|
lda scene_actuelle
|
|
|
|
|
dec
|
|
|
|
|
pha
|
|
|
|
|
PushWord #NB_MOTS ; taille d'une dimension
|
|
|
|
|
_Multiply
|
|
|
|
|
pla
|
|
|
|
|
asl
|
|
|
|
|
sta localOFFSET
|
|
|
|
|
clc
|
|
|
|
|
adc #fonction_mots
|
|
|
|
|
sta dpFROM ; on pointe sur fonction_mots(scene_actuelle)
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
lda #1
|
|
|
|
|
sta i
|
|
|
|
|
|
|
|
|
|
*--- FOR i|=1 TO pointeur_mots|(scene_actuelle|)
|
|
|
|
|
|
|
|
|
|
aig_fori rep #$20
|
|
|
|
|
|
|
|
|
|
lda i ; prend l'adresse du mot
|
|
|
|
|
dec
|
|
|
|
|
asl ; dans ptrINDEX
|
|
|
|
|
tay
|
|
|
|
|
lda (dpFROM),y
|
|
|
|
|
sta dpINDEX
|
|
|
|
|
lda ptrINDEX+2
|
|
|
|
|
sta dpINDEX+2
|
|
|
|
|
|
|
|
|
|
lda #0 ; on initialise les registres
|
|
|
|
|
tax
|
|
|
|
|
tay
|
|
|
|
|
sep #$20 ; on majusculinise le mot
|
|
|
|
|
]lp lda [dpINDEX],y
|
|
|
|
|
cmp #instrSPACE
|
|
|
|
|
beq aig_finmot
|
|
|
|
|
tax
|
|
|
|
|
lda tblATARI,x ; from Atari to IIgs
|
|
|
|
|
tax
|
|
|
|
|
lda tblUPPER,x ; to upper case
|
|
|
|
|
cmp mot_upper,y
|
|
|
|
|
bne aig_nexti
|
|
|
|
|
iny
|
|
|
|
|
cpy #128
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
aig_finmot lda #0 ; on met un zero final
|
|
|
|
|
sta mot_upper,y
|
|
|
|
|
|
|
|
|
|
jsr aiguille_condition ; on teste la condition
|
|
|
|
|
bcs aig_nexti ; non satisfaite
|
|
|
|
|
|
|
|
|
|
lda i ; satisfaite
|
|
|
|
|
sta numero_mot
|
|
|
|
|
|
|
|
|
|
*--- NEXT i%
|
|
|
|
|
|
|
|
|
|
aig_nexti inc i
|
|
|
|
|
lda i
|
|
|
|
|
cmp nb_mots
|
|
|
|
|
bcc aig_fori
|
|
|
|
|
beq aig_fori
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
|
|
|
|
*--- IF numero_mot|<>0
|
|
|
|
|
|
|
|
|
|
aig_suite rep #$20 ; on sort
|
|
|
|
|
|
|
|
|
|
lda numero_mot
|
|
|
|
|
bne ai_onaunmot
|
|
|
|
|
|
|
|
|
|
* lda scene_ancienne
|
|
|
|
|
* sta scene_actuelle
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*--- IF option_mot$=mot$
|
|
|
|
|
|
|
|
|
|
ai_onaunmot sep #$20
|
|
|
|
|
ldx #0
|
|
|
|
|
]lp lda mot_upper,x
|
|
|
|
|
cmp option_mot,x
|
|
|
|
|
bne ai_diff
|
|
|
|
|
cmp #0 ; fin de cha<68>ne
|
|
|
|
|
beq ai_entry
|
|
|
|
|
inx
|
|
|
|
|
cpx #128
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
*--- ELSE
|
|
|
|
|
|
|
|
|
|
ai_diff ldx #0 ; option_mot$=mot$
|
|
|
|
|
]lp lda mot_upper,x
|
|
|
|
|
sta option_mot,x
|
|
|
|
|
inx
|
|
|
|
|
cpx #128
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
rep #$20
|
|
|
|
|
|
2023-08-22 19:53:42 +02:00
|
|
|
|
lda #1 ; fait clignoter
|
|
|
|
|
jsr surligner_mot
|
|
|
|
|
|
|
|
|
|
jsr affiche_commentaire
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
ai_false lda #FALSE
|
2023-08-21 18:01:50 +02:00
|
|
|
|
sta deplacement
|
|
|
|
|
rts
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
mx %10
|
2023-08-21 18:01:50 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
ai_entry rep #$20 ; m<>me mot
|
|
|
|
|
|
|
|
|
|
lda scene_actuelle
|
2023-08-20 20:03:38 +02:00
|
|
|
|
dec ; prend la scene
|
|
|
|
|
pha ; calcul l'index dans la dimension NB_MOTS
|
|
|
|
|
pha
|
|
|
|
|
pha ; index de sc<73>ne
|
2023-08-22 19:53:42 +02:00
|
|
|
|
|
|
|
|
|
lda #3 ; bien plac<61> le saut :-)
|
|
|
|
|
jsr surligner_mot
|
|
|
|
|
|
2023-08-20 20:03:38 +02:00
|
|
|
|
PushWord #NB_MOTS ; taille d'une dimension
|
|
|
|
|
_Multiply
|
|
|
|
|
pla
|
|
|
|
|
clc ; 0=>0, 1=>25, 2=>50
|
|
|
|
|
adc #aiguillage
|
|
|
|
|
sta dpFROM ; on pointe sur l'index du premier mot
|
|
|
|
|
pla
|
2023-08-20 16:04:48 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
ldy numero_mot ; 1..+
|
2023-08-20 20:03:38 +02:00
|
|
|
|
dey
|
|
|
|
|
lda (dpFROM),y ; la prochaine sc<73>ne
|
2023-08-20 16:04:48 +02:00
|
|
|
|
and #$ff
|
2023-08-20 20:03:38 +02:00
|
|
|
|
sta scene_actuelle
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
2023-08-20 20:03:38 +02:00
|
|
|
|
lda #TRUE
|
|
|
|
|
sta deplacement
|
|
|
|
|
rts
|
2023-08-21 14:43:25 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
mx %00
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* AIGUILLE_CONDITION
|
|
|
|
|
*-----------------------
|
|
|
|
|
* aiguille_condition
|
|
|
|
|
* test de la condition pour
|
|
|
|
|
* la routine aiguille
|
|
|
|
|
|
|
|
|
|
* test_condition
|
|
|
|
|
* on entre en A=8-bits
|
|
|
|
|
* on doit ressortir en A=8-bits
|
|
|
|
|
* si le mot est cliquable on remplit texte_color
|
|
|
|
|
|
|
|
|
|
mx %00
|
|
|
|
|
|
|
|
|
|
aiguille_condition
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
* condition&=condition&(scene_actuelle|,i%)
|
|
|
|
|
|
|
|
|
|
lda i
|
|
|
|
|
dec
|
|
|
|
|
asl
|
|
|
|
|
clc
|
|
|
|
|
adc localOFFSET
|
|
|
|
|
tax
|
|
|
|
|
lda condition,x ; xx2B ou yy2D
|
|
|
|
|
pha
|
|
|
|
|
and #$ff00 ; index dans scene_visitee
|
|
|
|
|
xba
|
|
|
|
|
tax
|
|
|
|
|
lda scene_visitee-1,x
|
|
|
|
|
and #$ff
|
|
|
|
|
tax ; true ou false
|
|
|
|
|
pla
|
|
|
|
|
and #$00ff ; 2B ou 2D
|
|
|
|
|
|
|
|
|
|
* IF (condition&>0 AND scene_visitee!(ABS(condition&))=TRUE) OR (condition&<0 AND scene_visitee!(ABS(-condition&))=FALSE)
|
|
|
|
|
|
|
|
|
|
cmp #'+'
|
|
|
|
|
bne ac_moins
|
|
|
|
|
cpx #TRUE
|
|
|
|
|
beq ac_oui
|
|
|
|
|
bne ac_non
|
|
|
|
|
|
|
|
|
|
ac_moins cpx #FALSE
|
|
|
|
|
bne ac_non
|
|
|
|
|
|
|
|
|
|
ac_oui sep #$20
|
|
|
|
|
clc
|
2023-08-20 19:23:51 +02:00
|
|
|
|
rts
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
ac_non sep #$20
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
mx %00
|
2023-08-20 19:23:51 +02:00
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* AFFICHE_COMMENTAIRE
|
|
|
|
|
*-----------------------
|
|
|
|
|
* affiche_commentaire
|
|
|
|
|
|
|
|
|
|
affiche_commentaire
|
|
|
|
|
lda scene_actuelle
|
|
|
|
|
bne ac_1
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
ac_1 dec ; prend la scene
|
|
|
|
|
pha ; calcul l'index dans la dimension NB_MOTS
|
|
|
|
|
pha
|
|
|
|
|
pha ; index de sc<73>ne
|
|
|
|
|
PushWord #NB_MOTS ; taille d'une dimension
|
|
|
|
|
_Multiply
|
|
|
|
|
|
|
|
|
|
lda 1,s ; calcule l'offset pour les deux tableaux utiles
|
|
|
|
|
asl
|
|
|
|
|
sta 1,s
|
|
|
|
|
|
|
|
|
|
lda numero_mot
|
|
|
|
|
dec
|
|
|
|
|
asl
|
|
|
|
|
clc
|
|
|
|
|
adc 1,s
|
|
|
|
|
sta localOFFSET
|
|
|
|
|
pla
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
*--- on construit la cha<EFBFBD>ne
|
|
|
|
|
|
|
|
|
|
* 1- le mot
|
|
|
|
|
|
|
|
|
|
lda localOFFSET
|
|
|
|
|
clc
|
|
|
|
|
adc #fonction_mots
|
|
|
|
|
sta dpFROM
|
|
|
|
|
lda (dpFROM)
|
|
|
|
|
sta dpINDEX
|
|
|
|
|
lda ptrINDEX+2
|
|
|
|
|
sta dpINDEX+2
|
|
|
|
|
|
|
|
|
|
sep #$20
|
|
|
|
|
ldy #0
|
|
|
|
|
]lp lda [dpINDEX],y
|
|
|
|
|
cmp #instrSPACE
|
|
|
|
|
beq ac_2
|
|
|
|
|
sta ligne_commentaire+1,y
|
|
|
|
|
iny
|
|
|
|
|
bne ]lp
|
|
|
|
|
|
|
|
|
|
* 2- la s<EFBFBD>paration
|
|
|
|
|
|
|
|
|
|
ac_2 tyx
|
|
|
|
|
rep #$20
|
|
|
|
|
lda #$20d3 ; double quote fermant + espace "-" -"
|
|
|
|
|
sta ligne_commentaire+1,x
|
|
|
|
|
lda #$203a ; deux-points + espace "-: -"
|
|
|
|
|
sta ligne_commentaire+3,x
|
|
|
|
|
|
|
|
|
|
* 3- le commentaire
|
|
|
|
|
|
|
|
|
|
lda localOFFSET
|
|
|
|
|
clc
|
|
|
|
|
adc #phrase
|
|
|
|
|
sta dpFROM
|
|
|
|
|
lda (dpFROM)
|
|
|
|
|
sta dpINDEX
|
|
|
|
|
lda ptrINDEX+2
|
|
|
|
|
sta dpINDEX+2
|
|
|
|
|
|
|
|
|
|
sep #$20
|
|
|
|
|
ldy #0
|
|
|
|
|
]lp lda [dpINDEX],y
|
|
|
|
|
beq ac_3
|
|
|
|
|
sta ligne_commentaire+5,x
|
|
|
|
|
iny
|
|
|
|
|
inx
|
|
|
|
|
cpx #126 ; len max
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
ac_3 stz ligne_commentaire+5,x ; pour finir
|
|
|
|
|
|
|
|
|
|
rep #$20
|
|
|
|
|
|
|
|
|
|
*--- Pr<EFBFBD>pare l'<EFBFBD>cran
|
|
|
|
|
|
|
|
|
|
PushLong #old_pattern
|
|
|
|
|
_GetPenPat
|
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
_GetForeColor
|
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
_GetTextMode
|
|
|
|
|
|
|
|
|
|
PushLong #black_pattern ; black pattern
|
|
|
|
|
_SetPenPat
|
|
|
|
|
|
|
|
|
|
PushLong #commentRECT
|
|
|
|
|
_PaintRect
|
|
|
|
|
|
|
|
|
|
PushWord #15
|
|
|
|
|
_SetForeColor
|
|
|
|
|
|
|
|
|
|
PushWord #modeForeCopy
|
|
|
|
|
_SetTextMode
|
|
|
|
|
|
|
|
|
|
ldx #^ligne_commentaire
|
|
|
|
|
ldy #ligne_commentaire
|
|
|
|
|
lda #19
|
|
|
|
|
jsr cprint
|
|
|
|
|
|
|
|
|
|
_SetTextMode
|
|
|
|
|
_SetForeColor
|
|
|
|
|
_SetPenPat
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
|
|
|
|
commentRECT dw 182,16,192,623
|
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* CHARGE_IMAGE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* charge_image(fichier$)
|
|
|
|
|
|
|
|
|
|
charge_image
|
|
|
|
|
rts
|
2023-08-21 14:43:25 +02:00
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* IMAGE_ECRAN - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* image_ecran(adresse_image%)
|
|
|
|
|
|
|
|
|
|
image_ecran
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FADEIN - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fadein(palette2$)
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FADEOUT - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fadeout(palette2$)
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FADEIN_MID - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fadein_mid
|
|
|
|
|
|
|
|
|
|
fadein_mid
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FADEOUT_MID - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fadeout_mid
|
|
|
|
|
|
|
|
|
|
fadeout_mid
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-08-20 16:04:48 +02:00
|
|
|
|
* PALETTE - OK
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* palette_texte
|
|
|
|
|
|
|
|
|
|
palette_texte
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* NOIRCIT_ECRAN - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* noircit_ecran
|
|
|
|
|
|
|
|
|
|
noircit_ecran
|
|
|
|
|
PushWord #0
|
|
|
|
|
_ClearScreen
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* PALETTE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* palette(palette$)
|
|
|
|
|
|
|
|
|
|
palette
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-08-14 15:30:29 +02:00
|
|
|
|
* HELP - OK
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* help
|
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
help lda mainWIDTH ; save current width
|
|
|
|
|
sta oldWIDTH
|
|
|
|
|
jsr saveBACK ; save background
|
|
|
|
|
jsr switch_640 ; switch to 640
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
lda #TRUE
|
2023-07-12 17:15:18 +02:00
|
|
|
|
ldx ptrFOND+2
|
|
|
|
|
ldy ptrFOND
|
|
|
|
|
jsr fadeIN
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
PushLong #old_pattern ; save current pattern
|
2023-07-12 17:15:18 +02:00
|
|
|
|
_GetPenPat
|
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
* The frame
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
PushLong #black_pattern ; black pattern
|
|
|
|
|
_SetPenPat
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
PushLong #helpRECT1
|
|
|
|
|
PushWord #10
|
|
|
|
|
PushWord #10
|
|
|
|
|
_FrameRRect
|
|
|
|
|
|
|
|
|
|
* The rectangle
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
PushLong #white_pattern ; white pattern
|
|
|
|
|
_SetPenPat
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
PushLong #helpRECT2
|
|
|
|
|
PushWord #10
|
|
|
|
|
PushWord #10
|
2023-07-12 17:15:18 +02:00
|
|
|
|
_PaintRRect
|
2023-07-13 18:38:07 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
lda aventure
|
|
|
|
|
cmp #2
|
|
|
|
|
beq help2
|
|
|
|
|
cmp #3
|
|
|
|
|
beq help3
|
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
@cprint #help_str1_1;3
|
|
|
|
|
@cprint #help_str1_2;5
|
|
|
|
|
bra help4
|
|
|
|
|
help2 @cprint #help_str2_1;3
|
|
|
|
|
@cprint #help_str2_2;5
|
|
|
|
|
bra help4
|
|
|
|
|
help3 @cprint #help_str3_1;3
|
|
|
|
|
@cprint #help_str3_2;5
|
|
|
|
|
|
|
|
|
|
help4
|
|
|
|
|
@cprint #help_str8;8
|
|
|
|
|
@cprint #help_str9;9
|
|
|
|
|
@cprint #help_str11;11
|
2023-08-11 17:59:57 +02:00
|
|
|
|
@cprint #help_str12;12
|
2023-07-13 18:38:07 +02:00
|
|
|
|
@cprint #help_str14;14
|
|
|
|
|
@cprint #help_str16;16
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
|
|
|
|
jsr attente
|
2023-07-13 18:38:07 +02:00
|
|
|
|
|
|
|
|
|
*--- Restore all
|
2023-07-03 10:58:40 +02:00
|
|
|
|
|
2023-07-12 17:15:18 +02:00
|
|
|
|
PushLong #old_pattern
|
2023-07-13 18:38:07 +02:00
|
|
|
|
_SetPenPat
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-08-11 17:59:57 +02:00
|
|
|
|
jsr fadeOUT ; fade
|
|
|
|
|
jsr loadBACK ; restore background
|
|
|
|
|
lda oldWIDTH ; restore width
|
|
|
|
|
sta mainWIDTH
|
|
|
|
|
rts ; and exit
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
helpRECT1 dw 5,125,195,515
|
|
|
|
|
helpRECT2 dw 7,127,193,512
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
|
|
|
|
white_pattern
|
|
|
|
|
ds 32,$ff
|
2023-08-21 23:26:13 +02:00
|
|
|
|
|
|
|
|
|
*--- Caract<EFBFBD>res Atari SVP
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-13 18:38:07 +02:00
|
|
|
|
help_str1_1 asc '1. 'd2' Heurts d'27'ouverture 'd300
|
|
|
|
|
help_str1_2 asc '- Fran'8d'ois Coulon et Sylvie Sarrat -'00
|
|
|
|
|
help_str2_1 asc '2. 'd2' Cheek to cheek & ashes to ashes 'd300
|
|
|
|
|
help_str2_2 asc '- Fran'8d'ois Coulon et Faustino Ribeiro -'00
|
2023-08-21 23:26:13 +02:00
|
|
|
|
help_str3_1 asc '3. 'd2' Un appel '85' la m'8e'moire 'd300
|
2023-07-13 18:38:07 +02:00
|
|
|
|
help_str3_2 asc '- Fran'8d'ois Coulon et Laurent Cotton -'00
|
|
|
|
|
|
|
|
|
|
help_str8 asc 'OA-S : sauver la situation'00
|
|
|
|
|
help_str9 asc 'OA-O : recharger une situation'00
|
|
|
|
|
help_str11 asc 'OA-Z : musique on/off'00
|
2023-08-21 23:26:13 +02:00
|
|
|
|
help_str12 asc 'OA-R : retour au menu'00
|
|
|
|
|
help_str14 asc 'Toute autre touche : retour '85' l'27'aventure'00
|
2023-08-11 17:59:57 +02:00
|
|
|
|
help_str16 asc 'OA-Q : quitter le jeu'00
|
2023-07-12 17:15:18 +02:00
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* MOTS_CLICABLES
|
|
|
|
|
*-----------------------
|
|
|
|
|
* mots_clicables(texte$)
|
|
|
|
|
|
|
|
|
|
mots_clicables
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* lda #-1 ; force un mot diff<66>rent en entr<74>e de sc<73>ne
|
|
|
|
|
* sta mot_ancien
|
2023-08-20 20:03:38 +02:00
|
|
|
|
|
2023-08-20 11:10:34 +02:00
|
|
|
|
lda #0 ; on init les registres (mais pourquoi ?)
|
|
|
|
|
tax
|
|
|
|
|
tay
|
2023-08-19 22:26:44 +02:00
|
|
|
|
sep #$20 ; texte2$=UPPER$(texte$)
|
|
|
|
|
ldx #0
|
2023-08-20 11:10:34 +02:00
|
|
|
|
]lp lda texte_final,x
|
2023-08-20 12:18:37 +02:00
|
|
|
|
tay
|
|
|
|
|
lda tblATARI,y
|
2023-08-19 22:26:44 +02:00
|
|
|
|
tay
|
|
|
|
|
lda tblUPPER,y
|
|
|
|
|
sta texte,x
|
|
|
|
|
inx
|
|
|
|
|
cpx #max_colonnes*max_lignes
|
|
|
|
|
bcc ]lp
|
|
|
|
|
|
|
|
|
|
ldx scene_actuelle
|
|
|
|
|
lda pointeur_mots-1,x
|
|
|
|
|
sta nb_mots
|
|
|
|
|
stz index_mot
|
|
|
|
|
|
|
|
|
|
* FOR i%=1 TO pointeur_mots|(scene_actuelle|)
|
|
|
|
|
|
|
|
|
|
mc_1 rep #$20
|
|
|
|
|
|
|
|
|
|
pha ; calcul l'index dans la dimension NB_MOTS
|
|
|
|
|
pha
|
|
|
|
|
lda scene_actuelle
|
|
|
|
|
dec
|
|
|
|
|
pha
|
|
|
|
|
PushWord #NB_MOTS ; taille d'une dimension
|
|
|
|
|
_Multiply
|
|
|
|
|
pla
|
|
|
|
|
asl
|
|
|
|
|
sta localOFFSET
|
|
|
|
|
clc
|
|
|
|
|
adc #fonction_mots
|
|
|
|
|
sta dpINDEX ; on pointe sur fonction_mots(scene_actuelle)
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
stz i ; l'index dans texte
|
|
|
|
|
|
|
|
|
|
*-- mot$=fonction_mot$(scene_actuelle|,i%)
|
|
|
|
|
*-- mot2$=UPPER$(mot$)
|
|
|
|
|
|
|
|
|
|
lda index_mot ; prend l'adresse du mot
|
|
|
|
|
asl ; dans ptrINDEX
|
|
|
|
|
tay
|
|
|
|
|
lda (dpINDEX),y
|
|
|
|
|
sta dpINDEX
|
|
|
|
|
lda ptrINDEX+2
|
|
|
|
|
sta dpINDEX+2
|
2023-08-20 11:10:34 +02:00
|
|
|
|
|
|
|
|
|
lda #0 ; on initialise les registres
|
|
|
|
|
tax
|
|
|
|
|
tay
|
2023-08-19 22:26:44 +02:00
|
|
|
|
sep #$20 ; on majusculinise le mot
|
|
|
|
|
]lp lda [dpINDEX],y
|
|
|
|
|
cmp #instrSPACE
|
|
|
|
|
beq mc_2
|
2023-08-20 11:10:34 +02:00
|
|
|
|
tax
|
|
|
|
|
lda tblATARI,x ; from Atari to IIgs
|
|
|
|
|
tax
|
|
|
|
|
lda tblUPPER,x ; to upper case
|
|
|
|
|
sta mot,y
|
2023-08-19 22:26:44 +02:00
|
|
|
|
iny
|
|
|
|
|
bne ]lp
|
|
|
|
|
|
2023-08-20 11:10:34 +02:00
|
|
|
|
mc_2 sty len_max
|
2023-08-19 22:26:44 +02:00
|
|
|
|
|
|
|
|
|
*--- REPEAT
|
|
|
|
|
*--- pointeur_mot%=INSTR(texte2$,mot2$,pointeur_mot%)
|
|
|
|
|
*--- IF INSTR(alphabet$,UPPER$(MID$(texte$,pointeur_mot%-1,1)),1)=0 AND INSTR(alphabet$,UPPER$(MID$(texte$,pointeur_mot%+LEN(mot$),1)))=0
|
|
|
|
|
|
2023-08-19 23:16:55 +02:00
|
|
|
|
ldx i ; on commence avec 0
|
2023-08-19 22:26:44 +02:00
|
|
|
|
mc_3 ldy #0
|
|
|
|
|
]lp lda mot,y ; compare le mot
|
|
|
|
|
cmp texte,x
|
|
|
|
|
bne mc_5 ; pas le m<>me mot
|
2023-08-20 11:10:34 +02:00
|
|
|
|
|
2023-08-19 22:26:44 +02:00
|
|
|
|
inx
|
|
|
|
|
iny
|
|
|
|
|
cpy len_max
|
2023-08-20 11:10:34 +02:00
|
|
|
|
bcc ]lp
|
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
jsr test_condition ; v<>rifie s'il est cliquable
|
|
|
|
|
bra mc_6 ; mot suivant
|
2023-08-19 22:26:44 +02:00
|
|
|
|
|
|
|
|
|
mc_5 inx
|
|
|
|
|
cpx #max_colonnes*max_lignes
|
|
|
|
|
bcc mc_3
|
|
|
|
|
|
|
|
|
|
*--- UNTIL affichage!=TRUE
|
|
|
|
|
|
|
|
|
|
*--- NEXT i%
|
|
|
|
|
|
|
|
|
|
mc_6 inc index_mot
|
|
|
|
|
lda index_mot
|
|
|
|
|
cmp nb_mots
|
|
|
|
|
bcs mc_99
|
|
|
|
|
brl mc_1
|
|
|
|
|
mc_99 rep #$20 ; on sort
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*---
|
|
|
|
|
* test_condition
|
|
|
|
|
* on entre en A=8-bits
|
|
|
|
|
* on doit ressortir en A=8-bits
|
2023-08-26 10:28:36 +02:00
|
|
|
|
* si le mot est cliquable on remplit texte_color
|
2023-08-19 22:26:44 +02:00
|
|
|
|
|
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
mx %00
|
2023-08-19 22:26:44 +02:00
|
|
|
|
|
|
|
|
|
test_condition
|
2023-08-20 19:23:51 +02:00
|
|
|
|
rep #$20
|
2023-08-19 22:26:44 +02:00
|
|
|
|
phx ; 3,s
|
|
|
|
|
phy ; 1,s
|
2023-08-20 19:23:51 +02:00
|
|
|
|
|
2023-08-19 22:26:44 +02:00
|
|
|
|
* condition&=condition&(scene_actuelle|,i%)
|
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
lda index_mot
|
|
|
|
|
asl
|
|
|
|
|
clc
|
|
|
|
|
adc localOFFSET
|
|
|
|
|
tax
|
|
|
|
|
lda condition,x ; xxx2B ou yy2D
|
|
|
|
|
pha
|
|
|
|
|
and #$ff00 ; index dans scene_visitee
|
|
|
|
|
xba
|
|
|
|
|
tax
|
|
|
|
|
lda scene_visitee-1,x
|
|
|
|
|
and #$ff
|
|
|
|
|
tax ; true ou false
|
|
|
|
|
pla
|
|
|
|
|
and #$00ff ; 2B ou 2D
|
|
|
|
|
|
|
|
|
|
* IF (condition&>0 AND scene_visitee!(ABS(condition&))=TRUE) OR (condition&<0 AND scene_visitee!(ABS(-condition&))=FALSE)
|
|
|
|
|
|
|
|
|
|
cmp #'+'
|
|
|
|
|
bne tc_moins
|
|
|
|
|
cpx #TRUE
|
|
|
|
|
beq tc_addmot
|
|
|
|
|
bne tc_prendpas
|
2023-08-19 22:26:44 +02:00
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
tc_moins cpx #FALSE
|
|
|
|
|
bne tc_prendpas
|
|
|
|
|
|
|
|
|
|
tc_addmot ply ; marque le mot dans les buffers
|
|
|
|
|
plx
|
|
|
|
|
sep #$20
|
2023-08-19 22:26:44 +02:00
|
|
|
|
]lp dex
|
|
|
|
|
dey
|
2023-08-20 19:23:51 +02:00
|
|
|
|
bmi tc_ok ; on sort sans d<>piler
|
2023-08-20 11:10:34 +02:00
|
|
|
|
lda #colorWHITE
|
2023-08-26 10:28:36 +02:00
|
|
|
|
sta texte_color,x
|
|
|
|
|
* lda index_mot
|
|
|
|
|
* inc
|
|
|
|
|
* sta texte_index,x
|
2023-08-19 22:26:44 +02:00
|
|
|
|
bra ]lp
|
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
tc_prendpas ply
|
2023-08-19 22:26:44 +02:00
|
|
|
|
plx
|
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
tc_ok sep #$20
|
2023-07-03 10:58:40 +02:00
|
|
|
|
rts
|
2023-08-19 22:26:44 +02:00
|
|
|
|
|
2023-08-20 19:23:51 +02:00
|
|
|
|
mx %00
|
2023-08-26 10:28:36 +02:00
|
|
|
|
|
2023-07-03 10:58:40 +02:00
|
|
|
|
*-----------------------
|
|
|
|
|
* MUSIQUE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* musique(module$)
|
|
|
|
|
|
|
|
|
|
musique
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
|
|
|
|
* FIN_MUSIQUE - OK
|
|
|
|
|
*-----------------------
|
|
|
|
|
* fin_musique
|
|
|
|
|
|
|
|
|
|
fin_musique
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*-----------------------
|
2023-08-22 18:48:58 +02:00
|
|
|
|
* MON BEAU CURSEUR
|
|
|
|
|
*-----------------------
|
|
|
|
|
|
2023-08-26 10:28:36 +02:00
|
|
|
|
monCURSEUR
|
|
|
|
|
dw 16,4
|
2023-08-22 18:48:58 +02:00
|
|
|
|
hex 0000000000000000 ; data
|
|
|
|
|
hex 00000000000000F0
|
2023-08-26 10:28:36 +02:00
|
|
|
|
hex 000000000000FFF0
|
2023-08-22 18:48:58 +02:00
|
|
|
|
hex 000000000000F0F0
|
|
|
|
|
hex 0000000000FFF0F0
|
|
|
|
|
hex 00000000FFF00FF0
|
|
|
|
|
hex 000000FFF0000F00
|
|
|
|
|
hex 0000FFF00000FF00
|
|
|
|
|
hex 000FF0000000F000
|
|
|
|
|
hex 00FF0000000FF000
|
|
|
|
|
hex 00F00000000F0000
|
|
|
|
|
hex 00F0000000FF0000
|
|
|
|
|
hex 00F0000000F00000
|
|
|
|
|
hex 00F000000FF00000
|
|
|
|
|
hex 00000000FF000000
|
|
|
|
|
hex 0000FFFFF0000000
|
|
|
|
|
hex 0000000000000000 ; mask
|
|
|
|
|
hex 0000000000000FF0
|
|
|
|
|
hex 00000000000FFFF0
|
|
|
|
|
hex 000000000FFF0F00
|
|
|
|
|
hex 0000000FFF00FF00
|
|
|
|
|
hex 00000FFF0000F000
|
|
|
|
|
hex 000FFF00000FF000
|
|
|
|
|
hex 00FF0000000F0000
|
|
|
|
|
hex 0FF0000000FF0000
|
|
|
|
|
hex 0F00000000F00000
|
|
|
|
|
hex 0F0000000FF00000
|
|
|
|
|
hex 0F0000000F000000
|
|
|
|
|
hex 0F000000FF000000
|
|
|
|
|
hex 0FF0000FF0000000
|
|
|
|
|
hex 00FFFFFF00000000
|
|
|
|
|
hex 0000000000000000
|
|
|
|
|
dw 2,14
|
|
|
|
|
|
|
|
|
|
*--- The end
|