"It's the end"
This commit is contained in:
Antoine Vignau 2023-08-26 10:28:36 +02:00
parent 729e3d4afd
commit f4dc12d669
12 changed files with 535 additions and 16091 deletions

View File

@ -1041,8 +1041,7 @@ PROCEDURE mots_clicables(texte$)
ENDIF ENDIF
' '
ENDIF ENDIF
INC pointeur_mot% !SI LE MOT N'EST PAS ISOLE (EX="CLIC" et "CLICABLE") ON INC pointeur_mot% !SI LE MOT N'EST PAS ISOLE (EX="CLIC" et "CLICABLE") ON CONTINUE LA RECHERCHE
CONTINUE LA RECHERCHE
UNTIL affichage!=TRUE !SI LE MOT A ETE SURLIGNE (OU DU MOINS QU'IL EXISTE) UNTIL affichage!=TRUE !SI LE MOT A ETE SURLIGNE (OU DU MOINS QU'IL EXISTE)
CLR pointeur_mot%,affichage! !ON SORT... CLR pointeur_mot%,affichage! !ON SORT...
NEXT i% NEXT i%

Binary file not shown.

View File

@ -1 +0,0 @@
ToutADisparu=Type(B3),AuxType(DB00),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,6 @@ tblTEXTES ds 4*NB_TEXTES
*--- Variables Atari ST *--- Variables Atari ST
nbTEXTES ds 2 nbTEXTES ds 2
nbTEXTES2 ds 2 ; nombre de textes indiquŽ dans le fichier .TEX
i ds 2 ; un index i ds 2 ; un index
nb_lignes ds 2 ; nombre de lignes de texte (c'est pour centrer) nb_lignes ds 2 ; nombre de lignes de texte (c'est pour centrer)
localOFFSET ds 2 ; offset de chaque rangŽe localOFFSET ds 2 ; offset de chaque rangŽe
@ -32,8 +31,7 @@ rvb1 ds 2 ; index 1/5/9/D
rvb2 ds 2 ; index 2/6/A/E rvb2 ds 2 ; index 2/6/A/E
index_mot ds 2 ; un autre index qui pointe index_mot ds 2 ; un autre index qui pointe
nb_mots ds 2 ; nombre de mots dans la scene nb_mots ds 2 ; nombre de mots dans la scene
mot_clique ds 2 ; index du mot cliquŽ numero_mot ds 2 ; index du mot cliquŽ apr<70>s condition
mot_ancien ds 2 ; index du mot prŽcŽdemment cliquŽ
valeur_condition ds 2 ; valeur condition 2B xx ou 2D yy valeur_condition ds 2 ; valeur condition 2B xx ou 2D yy
aventure ds 2 aventure ds 2
nombre_scenes ds 2 nombre_scenes ds 2
@ -45,6 +43,8 @@ escape ds 2 ; BOOL - TRUE or FALSE
fgSUITEFORCEE ds 2 ; BOOL - TRUE or FALSE fgSUITEFORCEE ds 2 ; BOOL - TRUE or FALSE
mot ds 128 ; le mot ˆ chercher (jusqu'au caract<63>re espace) mot ds 128 ; le mot ˆ chercher (jusqu'au caract<63>re espace)
mot_upper ds 128 ; le m<>me mot mais en IIgs majusculanisŽ
option_mot ds 128 ; la copie du premier mot cherchŽ
ligne_commentaire ; la phrase de commentaire "mot" : explication ligne_commentaire ; la phrase de commentaire "mot" : explication
ds 128 ds 128
@ -52,8 +52,7 @@ ligne_commentaire ; la phrase de commentaire "mot" : explication
ligne_max ds max_colonnes ; une ligne du texte ligne_max ds max_colonnes ; une ligne du texte
texte ds max_colonnes*max_lignes ; the text from the .TXT file texte ds max_colonnes*max_lignes ; the text from the .TXT file
texte_liens ds max_colonnes*max_lignes ; FALSE: not a link, TRUE est un mot cliquable texte_color ds max_colonnes*max_lignes ; FALSE: not a link, TRUE est un mot cliquable
texte_index ds max_colonnes*max_lignes ; numŽro du mot
texte_final ds max_colonnes*max_lignes ; the final text - known as b$ in Atari ST texte_final ds max_colonnes*max_lignes ; the final text - known as b$ in Atari ST
ds 2 ds 2

View File

@ -25,8 +25,7 @@ colorWHITE = 15
* load_font * load_font
*----------------------- *-----------------------
load_font load_font jsr font_it
jsr font_it
bcc lf_ok bcc lf_ok
pha pha
@ -41,8 +40,7 @@ lf_ok rts
*--- Really load the font *--- Really load the font
font_it font_it PushWord #$0A00 ; Taille 10
PushWord #$0A00 ; Taille 10
PushWord #$0016 ; Courier PushWord #$0016 ; Courier
PushWord #0 PushWord #0
_InstallFont _InstallFont
@ -185,6 +183,11 @@ load_textes
tya tya
jsr unpackLZ4 jsr unpackLZ4
lda lenDATA
sta proEOF
lda lenDATA+2
sta proEOF+2
PushLong ptrIMAGE PushLong ptrIMAGE
PushLong ptrTEXTES PushLong ptrTEXTES
PushLong lenDATA PushLong lenDATA
@ -224,11 +227,7 @@ it1 lda ptrTEXTES
adc proEOF+2 adc proEOF+2
sta dpTO+2 sta dpTO+2
*--- Nombre de textes en little endian *--- Saute le nombre de textes (en little endian)
lda [dpFROM] ; le premier word est le nombre de textes
xba
sta nbTEXTES2 ; pour comparer avec notre valeur
lda dpFROM ; += 2 lda dpFROM ; += 2
clc clc
@ -281,11 +280,20 @@ it5 lda dpFROM+2 ; did we reach the end of the file?
* get_textes(textes%) * get_textes(textes%)
*----------------------- *-----------------------
get_textes cmp #0 get_textes lda scene_actuelle
beq get_textes1 beq get_textes1
cmp nbTEXTES cmp nbTEXTES
bcc get_textes2 bcc get_textes2
beq get_textes2 beq get_textes2
pha
PushLong #pgmSTR1
PushLong #pgmSTR2
PushLong #errSTR3
PushLong #errSTR2
_TLTextMountVolume
pla
get_textes1 sec get_textes1 sec
rts rts
@ -333,7 +341,7 @@ generique jsr switch_640
@cprint #gen_str5;17 @cprint #gen_str5;17
@cprint #gen_str6;18 @cprint #gen_str6;18
jsr waitEVENT jsr attente
_SetBackColor _SetBackColor
_SetForeColor _SetForeColor
@ -356,8 +364,7 @@ gen_str8 asc 'Antoine Vignau & Olivier Zardini'00
*----------------------- *-----------------------
* tag * tag
tag tag PushLong #old_pattern
PushLong #old_pattern
_GetPenPat _GetPenPat
PushLong #the_pattern ; blue pattern PushLong #the_pattern ; blue pattern
@ -446,6 +453,7 @@ ca_restart lda escape
jsr switch_320 jsr switch_320
lda #TRUE
ldx ptrMENU+2 ldx ptrMENU+2
ldy ptrMENU ldy ptrMENU
jsr fadeIN jsr fadeIN
@ -491,7 +499,7 @@ ca_exit PushLong #old_pattern
*----------- Wait for a click *----------- Wait for a click
ca_choice jsr waitEVENT ca_choice jsr attente
cmp #mouseDownEvt cmp #mouseDownEvt
bne ca_choice bne ca_choice
@ -915,8 +923,8 @@ prepare_texte
]lp lda #texteSPACE ]lp lda #texteSPACE
sta texte_final,x sta texte_final,x
lda #colorBLACK lda #colorBLACK
sta texte_liens,x sta texte_color,x
stz texte_index,x * stz texte_index,x
inx inx
cpx #max_colonnes*max_lignes cpx #max_colonnes*max_lignes
bcc ]lp bcc ]lp
@ -1175,6 +1183,7 @@ affiche_texte
* et on affiche enfin * et on affiche enfin
lda #TRUE
ldx ptrFOND+2 ldx ptrFOND+2
ldy ptrFOND ldy ptrFOND
jsr fadeIN jsr fadeIN
@ -1185,7 +1194,7 @@ affiche_texte
PushWord #modeForeCopy PushWord #modeForeCopy
_SetTextMode _SetTextMode
PushLong #texte_liens PushLong #texte_color
PushLong #texte_final PushLong #texte_final
PushWord #3 ; x PushWord #3 ; x
PushWord printY ; y PushWord printY ; y
@ -1203,7 +1212,7 @@ affiche_texte
debut_aventure debut_aventure
lda #-1 lda #-1
sta scene_ancienne sta scene_ancienne
sta mot_ancien * sta mot_ancien
lda #$d2 ; initialise la cha”ne de commentaire lda #$d2 ; initialise la cha”ne de commentaire
sta ligne_commentaire sta ligne_commentaire
@ -1259,19 +1268,18 @@ fin rts
* nouvelle_scene(scene ˆ charger) * nouvelle_scene(scene ˆ charger)
nouvelle_scene nouvelle_scene
cmp #0 ; not 0 lda scene_actuelle
beq ns_99 beq ns_99
cmp scene_ancienne * cmp scene_ancienne
beq ns_98 * beq ns_98
ldx scene_actuelle * ldx scene_actuelle
stx scene_ancienne * stx scene_ancienne
dec
tax tax
lda #TRUE lda #TRUE
sep #$20 sep #$20
sta scene_visitee,x sta scene_visitee-1,x
rep #$20 rep #$20
ns_98 lda #FALSE ns_98 lda #FALSE
@ -1279,224 +1287,7 @@ ns_98 lda #FALSE
ns_99 rts ns_99 rts
*----------------------- mx %00
* CLIC_MOT - OK
*-----------------------
* clic_mot
* on regarde sur quel mot on a cliquŽ
clic_mot
lda taskWHERE+2 ; X
cmp #marge_gauche*largeur_caractere
bcc tc_ko
cmp #640-{2*largeur_caractere}
bcs tc_ko
sec
sbc #marge_gauche*largeur_caractere
clc
adc #7
lsr
lsr
lsr
sta motX
pha
lda taskWHERE ; Y
sec
sbc offsetY ; dŽcalage liŽ 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
lda texte_index,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Žbut
ldy motX
]lp cpy #0 ; condition de sortie : on est ˆ 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Ž le mot
tc_fin stz mot,x ; fin de cha”ne
rep #$20
lda motX ; corrige la marge
clc
adc #marge_gauche
sta motX
clc
rts
*-----------------------
* AFFICHE_COMMENTAIRE
*-----------------------
* affiche_commentaire
affiche_commentaire
cmp #0
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 mot_clique
dec
asl
clc
adc 1,s
sta localOFFSET
pla
pla
*--- on construit la chane
* 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Ž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Žpare l'Ž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
*----------------------- *-----------------------
* SURLIGNER_MOT * SURLIGNER_MOT
@ -1914,7 +1705,7 @@ attente jmp waitEVENT ; LoGo - check if we support keypresses as well
*----------------------- *-----------------------
* image(scene ˆ charger) * image(scene ˆ charger)
image cmp #0 ; not 0 image lda scene_actuelle ; not 0
beq image_ko beq image_ko
dec dec
asl asl
@ -1994,10 +1785,13 @@ affiche_image
ai_1 jsr switch_320 ai_1 jsr switch_320
jsr noircit_ecran jsr noircit_ecran
lda #TRUE
ldx ptrIMAGE+2 ldx ptrIMAGE+2
ldy ptrIMAGE ldy ptrIMAGE
jsr fadeIN jsr fadeIN
jsr waitEVENT
jsr attente
jsr fadeOUT ; noircit_ecran jsr fadeOUT ; noircit_ecran
jmp switch_640 jmp switch_640
@ -2007,7 +1801,7 @@ ai_1 jsr switch_320
* suite_forcee(scene) * suite_forcee(scene)
suite_forcee suite_forcee
cmp #0 lda scene_actuelle
beq sf_false beq sf_false
dec ; prend la scene dec ; prend la scene
@ -2029,14 +1823,33 @@ suite_forcee
lda ptrINDEX+2 lda ptrINDEX+2
sta dpINDEX+2 ; et met son pointeur 32-bits sta dpINDEX+2 ; et met son pointeur 32-bits
ldy #6-2 ; len('suite ') sur 16-bits * 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
]lp lda [dpINDEX],y ]lp lda [dpINDEX],y
tax
lda tblATARI,x
tax
lda tblUPPER,x
cmp strSUITE,y cmp strSUITE,y
bne sf_false bne sf_false
dey dey
dey
bpl ]lp bpl ]lp
rep #$20
lda #aiguillage lda #aiguillage
clc clc
adc localOFFSET adc localOFFSET
@ -2045,40 +1858,266 @@ suite_forcee
lda (dpFROM) ; la prochaine sc<73>ne lda (dpFROM) ; la prochaine sc<73>ne
and #$ff and #$ff
sta scene_actuelle sta scene_actuelle
lda #TRUE lda #TRUE
bra sf_99 bra sf_99
sf_false lda #FALSE sf_false rep #$20
lda #FALSE
sf_99 sta fgSUITEFORCEE sf_99 sta fgSUITEFORCEE
rts rts
strSUITE asc 'suite ' strSUITE asc 'SUITE '
*-----------------------
* CLIC_MOT - OK
*-----------------------
* clic_mot
* on regarde sur quel mot on a cliquŽ
clic_mot lda taskWHERE+2 ; X
cmp #marge_gauche*largeur_caractere
bcc tc_ko
cmp #640-{2*largeur_caractere}
bcs tc_ko
sec
sbc #marge_gauche*largeur_caractere
clc
adc #7
lsr
lsr
lsr
sta motX
pha
lda taskWHERE ; Y
sec
sbc offsetY ; dŽcalage liŽ 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Žbut
ldy motX
]lp cpy #0 ; condition de sortie : on est ˆ 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Ž le mot
tc_fin stz mot,x ; fin de cha”ne
rep #$20
lda motX ; corrige la marge
clc
adc #marge_gauche
sta motX
clc ; on a un mot
rts
*----------------------- *-----------------------
* AIGUILLAGE * AIGUILLAGE
*----------------------- *-----------------------
* aiguille(scene) * aiguille(scene)
* parce que le tableau aiguillag existe * parce que le tableau aiguillage existe
* si on est ici, on sait qu'on a un mot
aiguille ldx mot_clique ; a-t-on cliquŽ de nouveau sur le m<>me mot ? aiguille
cpx mot_ancien * lda scene_actuelle
beq ai_entry * 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 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”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
lda #1 ; fait clignoter lda #1 ; fait clignoter
jsr surligner_mot jsr surligner_mot
pla
jsr affiche_commentaire jsr affiche_commentaire
lda #FALSE ai_false lda #FALSE
sta deplacement sta deplacement
rts rts
*---
mx %10
ai_entry cmp #0 ai_entry rep #$20 ; m<>me mot
beq ai_false
lda scene_actuelle
dec ; prend la scene dec ; prend la scene
pha ; calcul l'index dans la dimension NB_MOTS pha ; calcul l'index dans la dimension NB_MOTS
pha pha
@ -2095,19 +2134,198 @@ ai_entry cmp #0
sta dpFROM ; on pointe sur l'index du premier mot sta dpFROM ; on pointe sur l'index du premier mot
pla pla
ldy mot_clique ; 1..+ ldy numero_mot ; 1..+
dey dey
lda (dpFROM),y ; la prochaine sc<73>ne lda (dpFROM),y ; la prochaine sc<73>ne
and #$ff and #$ff
sta scene_actuelle sta scene_actuelle
lda #TRUE lda #TRUE
sta deplacement sta deplacement
rts rts
ai_false lda #FALSE mx %00
sta deplacement
*-----------------------
* 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
rts
ac_non sep #$20
sec
rts
mx %00
*-----------------------
* AFFICHE_COMMENTAIRE
*-----------------------
* affiche_commentaire
affiche_commentaire
lda scene_actuelle
bne ac_1
rts 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 chane
* 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Ž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Žpare l'Ž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
*----------------------- *-----------------------
* CHARGE_IMAGE - OK * CHARGE_IMAGE - OK
*----------------------- *-----------------------
@ -2191,11 +2409,12 @@ help lda mainWIDTH ; save current width
sta oldWIDTH sta oldWIDTH
jsr saveBACK ; save background jsr saveBACK ; save background
jsr switch_640 ; switch to 640 jsr switch_640 ; switch to 640
lda #TRUE
ldx ptrFOND+2 ldx ptrFOND+2
ldy ptrFOND ldy ptrFOND
jsr fadeIN jsr fadeIN
PushLong #old_pattern ; save current pattern PushLong #old_pattern ; save current pattern
_GetPenPat _GetPenPat
@ -2241,8 +2460,8 @@ help4
@cprint #help_str12;12 @cprint #help_str12;12
@cprint #help_str14;14 @cprint #help_str14;14
@cprint #help_str16;16 @cprint #help_str16;16
help9 jsr waitEVENT jsr attente
*--- Restore all *--- Restore all
@ -2285,8 +2504,8 @@ help_str16 asc 'OA-Q : quitter le jeu'00
* mots_clicables(texte$) * mots_clicables(texte$)
mots_clicables mots_clicables
lda #-1 ; force un mot diffŽrent en entrŽe de sc<73>ne * lda #-1 ; force un mot diffŽrent en entrŽe de sc<73>ne
sta mot_ancien * sta mot_ancien
lda #0 ; on init les registres (mais pourquoi ?) lda #0 ; on init les registres (mais pourquoi ?)
tax tax
@ -2395,7 +2614,7 @@ mc_99 rep #$20 ; on sort
* test_condition * test_condition
* on entre en A=8-bits * on entre en A=8-bits
* on doit ressortir en A=8-bits * on doit ressortir en A=8-bits
* si le mot est cliquable on remplit texte_liens * si le mot est cliquable on remplit texte_color
mx %00 mx %00
@ -2441,10 +2660,10 @@ tc_addmot ply ; marque le mot dans les buffers
dey dey
bmi tc_ok ; on sort sans dŽpiler bmi tc_ok ; on sort sans dŽpiler
lda #colorWHITE lda #colorWHITE
sta texte_liens,x sta texte_color,x
lda index_mot * lda index_mot
inc * inc
sta texte_index,x * sta texte_index,x
bra ]lp bra ]lp
tc_prendpas ply tc_prendpas ply
@ -2454,7 +2673,7 @@ tc_ok sep #$20
rts rts
mx %00 mx %00
*----------------------- *-----------------------
* MUSIQUE - OK * MUSIQUE - OK
*----------------------- *-----------------------
@ -2475,10 +2694,11 @@ fin_musique
* MON BEAU CURSEUR * MON BEAU CURSEUR
*----------------------- *-----------------------
monCURSEUR dw 16,4 monCURSEUR
dw 16,4
hex 0000000000000000 ; data hex 0000000000000000 ; data
hex 00000000000000F0 hex 00000000000000F0
hex 0000000000000000 hex 000000000000FFF0
hex 000000000000F0F0 hex 000000000000F0F0
hex 0000000000FFF0F0 hex 0000000000FFF0F0
hex 00000000FFF00FF0 hex 00000000FFF00FF0

View File

@ -114,7 +114,7 @@ fgRESTART = 2
tdc tdc
sta myDP sta myDP
*--- Version du systeme *--- Version du systeme
jsl GSOS jsl GSOS
@ -254,15 +254,16 @@ main jsr fadeOUT
*--- *---
mainLOOP lda scene_actuelle mainLOOP jsr nouvelle_scene ; on initialise la scène
jsr nouvelle_scene ; on initialise la scène
lda scene_actuelle
jsr image ; on charge une image éventuelle jsr image ; on charge une image éventuelle
lda scene_actuelle
jsr get_textes ; on détermine le texte jsr get_textes ; on détermine le texte
jsr prepare_texte ; que l'on prepare le texte jsr prepare_texte ; que l'on prepare le texte
jsr suite_forcee ; a-t-on des mots cliquables ?
lda fgSUITEFORCEE
cmp #TRUE
beq noMOTS
jsr mots_clicables ; on y ajoute les mots cliquables jsr mots_clicables ; on y ajoute les mots cliquables
jsr affiche_texte ; et on l'affiche noMOTS jsr affiche_texte ; et on l'affiche
*---------------------------------------- *----------------------------------------
* TASK MASTER (no more) * TASK MASTER (no more)
@ -294,11 +295,8 @@ taskLOOP inc VBLCounter0
cmp #FALSE cmp #FALSE
bne main bne main
lda fgSUITEFORCEE
cmp #TRUE
beq mainLOOP
lda deplacement ; si on doit bouger, on fait un... lda deplacement ; si on doit bouger, on fait un...
ora fgSUITEFORCEE
cmp #TRUE cmp #TRUE
beq mainLOOP ; ...grand saut beq mainLOOP ; ...grand saut
bne taskLOOP ; ...sinon on attend bne taskLOOP ; ...sinon on attend
@ -356,10 +354,7 @@ tblKEYADDRESS
doMOUSEDOWN doMOUSEDOWN
doMOUSEUP lda scene_actuelle ; a-t-on des mots cliquables ? doMOUSEUP lda fgSUITEFORCEE
jsr suite_forcee
lda fgSUITEFORCEE
cmp #FALSE cmp #FALSE
beq mup1 beq mup1
rts ; non, on sort rts ; non, on sort
@ -367,8 +362,7 @@ doMOUSEUP lda scene_actuelle ; a-t-on des mots cliquables ?
mup1 jsr clic_mot ; oui, on vérifie si on a cliqué sur un mot => mot$ mup1 jsr clic_mot ; oui, on vérifie si on a cliqué sur un mot => mot$
bcc mup2 ; oui bcc mup2 ; oui
rts rts
mup2 lda scene_actuelle mup2 jsr aiguille ; on aiguille le joueur (1 ou 2 clics)
jsr aiguille ; on aiguille le joueur si c'est le second clic
rts rts
*----------------------------------- *-----------------------------------
@ -639,13 +633,11 @@ doQUIT jsr suspendMUSIC ; NTP off
meQUIT jsr stopNTP meQUIT jsr stopNTP
meQUIT0 meQUIT0 PushWord #refIsHandle
PushWord #refIsHandle
PushLong SStopREC PushLong SStopREC
_ShutDownTools _ShutDownTools
meQUIT1 meQUIT1 PushWord myID
PushWord myID
_DisposeAll _DisposeAll
PushWord mainID PushWord mainID
@ -741,15 +733,16 @@ we_1 inc VBLCounter0
*-------------------------------------- *--------------------------------------
fadeIN sty Debut fadeIN pha
stx Debut+2 sty Debut
stx Debut+2
_HideCursor _HideCursor
ldy #$2000 ldy #$2000
sty Arrivee sty Arrivee
ldx #$00e1 ldx #$00e1
stx Arrivee+2 stx Arrivee+2
ldy #$7e00 ldy #$7e00
lda #0 lda #0
@ -758,12 +751,16 @@ fadeIN sty Debut
iny iny
bpl ]lp bpl ]lp
ldy #$7dfe pla ; ne copie pas les données
]lp lda [Debut],y cmp #FALSE ; si à FALSE
sta [Arrivee],y beq fadeIN1
dey
dey ldy #$7dfe
bpl ]lp ]lp lda [Debut],y
sta [Arrivee],y
dey
dey
bpl ]lp
fadeIN1 lda Debut fadeIN1 lda Debut
clc clc
@ -1108,6 +1105,8 @@ verSTR1 str 'System 6.0.1 Required!'
verSTR2 str 'Press a key to quit' verSTR2 str 'Press a key to quit'
fntSTR1 str 'Courier.10 font missing' fntSTR1 str 'Courier.10 font missing'
fntSTR2 str 'Please install it!' fntSTR2 str 'Please install it!'
pgmSTR1 str 'Data parsing error'
pgmSTR2 str 'Please report!'
tolSTR1 str 'Error while loading tools' tolSTR1 str 'Error while loading tools'
memSTR1 str 'Cannot allocate memory' memSTR1 str 'Cannot allocate memory'
filSTR1 str 'Cannot load file' filSTR1 str 'Cannot load file'
@ -1126,7 +1125,7 @@ taskDATA ds 4 ; wmTaskData +16
taskTBL da doNOT ; 0 Null taskTBL da doNOT ; 0 Null
da doMOUSEDOWN ; 1 mouseDownEvt da doMOUSEDOWN ; 1 mouseDownEvt
da doMOUSEUP ; 2 mouseUpEvt da doNOT ; 2 mouseUpEvt
da doKEYDOWN ; 3 keyDownEvt da doKEYDOWN ; 3 keyDownEvt
da doNOT da doNOT
da doNOT ; 5 autoKeyEvt da doNOT ; 5 autoKeyEvt

View File

@ -10,7 +10,7 @@ Fran
Ces histoires sont accompagnŽes d'une musique choisie alŽatoirement par le programme, ainsi que d'images pour renforcer l'immersion dans les lieux visitŽs. Chaque sc<73>ne peut comporter des liens cliquables lorsque le texte est Žcrit en caract<63>res blancs Un clic vous permet de choisir le mot, deux clics de confirmer votre choix, votre dŽcision et ainsi de conditionner la suite du jeu. Toute l'interactivitŽ du jeu se trouve dans vos choix. Ces histoires sont accompagnŽes d'une musique choisie alŽatoirement par le programme, ainsi que d'images pour renforcer l'immersion dans les lieux visitŽs. Chaque sc<73>ne peut comporter des liens cliquables lorsque le texte est Žcrit en caract<63>res blancs Un clic vous permet de choisir le mot, deux clics de confirmer votre choix, votre dŽcision et ainsi de conditionner la suite du jeu. Toute l'interactivitŽ du jeu se trouve dans vos choix.
Nous retrouvons un fonctionnement en "point & click" plus ŽvoluŽ que celui utilisŽ pour "L'ŽgŽrie" deux annŽes plus t™t. La fiction numŽrique associŽe au th<74>me de la perte de l'<27>tre cher reste prŽsente dans les trois Žpisodes sous des formes distinctes que nous vous invitons ˆ dŽcouvrir en jouant. La navigation se fait par liens hypertexte, c'est ainsi plus ŽvoluŽ que celle utilisŽe pour "L'ŽgŽrie". La fiction numŽrique associŽe au th<74>me de la perte de l'<27>tre cher reste prŽsente dans les trois Žpisodes sous des formes distinctes que nous vous invitons ˆ dŽcouvrir en jouant.
Pour jouer, rien de plus simple : une souris pour dŽcider. Nous avons intŽgrŽ quelques raccourcis clavier : Pour jouer, rien de plus simple : une souris pour dŽcider. Nous avons intŽgrŽ quelques raccourcis clavier :
- pomme-ouverte-O pour charger une partie prŽcŽdemment sauvegardŽe, - pomme-ouverte-O pour charger une partie prŽcŽdemment sauvegardŽe,

Binary file not shown.

Binary file not shown.