Working on TAD

This commit is contained in:
Antoine Vignau 2023-08-11 17:59:57 +02:00
parent 3c1edce448
commit 173c3832f5
11 changed files with 4765 additions and 5022 deletions

BIN
genesys/.DS_Store vendored

Binary file not shown.

BIN
picknpile/.DS_Store vendored

Binary file not shown.

BIN
swashbuckler/.DS_Store vendored

Binary file not shown.

BIN
swordofsodan/.DS_Store vendored

Binary file not shown.

View File

@ -28,16 +28,12 @@ PROCEDURE main
fadein_mid fadein_mid
REPEAT REPEAT
mot$=@clic_mot$(ecran$) !ON ATTEND QU'ON CLIQUE QUELQUE PART mot$=@clic_mot$(ecran$) !ON ATTEND QU'ON CLIQUE QUELQUE PART
IF suite_forcee!=FALSE !SI ON NE SORT PAS PAR UN "LOAD" OU UN IF suite_forcee!=FALSE !SI ON NE SORT PAS PAR UN "LOAD" OU UN "ESC"
"ESC" scene_actuelle|=@aiguillage(scene_actuelle|,mot$) !ON FAIT CLIGNOTER LE MOT (S'IL CORRESPOND A QUELQUE CHOSE)
scene_actuelle|=@aiguillage(scene_actuelle|,mot$) !ON FAIT CLIGNOTER
LE MOT (S'IL CORRESPOND A QUELQUE CHOSE)
ENDIF ENDIF
UNTIL deplacement!=TRUE !ON BOUCLE JUSQU'A CE QU'ON CHANGE DE UNTIL deplacement!=TRUE !ON BOUCLE JUSQU'A CE QU'ON CHANGE DE SCENE
SCENE
ENDIF ENDIF
UNTIL escape!=TRUE !ON CHANGE D'AVENTURE SI ON TAPE "ESCA UNTIL escape!=TRUE !ON CHANGE D'AVENTURE SI ON TAPE "ESCAPE"
PE"
fin_aventure fin_aventure
LOOP LOOP
RETURN RETURN
@ -48,8 +44,7 @@ PROCEDURE generique
cprint("&",9,3) cprint("&",9,3)
cprint("Sylvie Sarrat, Faustino Ribeiro, Laurent Cotton",10,3) cprint("Sylvie Sarrat, Faustino Ribeiro, Laurent Cotton",10,3)
cprint("programmation: Pascal Piat noiz': Erik Ecqier",12,3) cprint("programmation: Pascal Piat noiz': Erik Ecqier",12,3)
cprint("Les logiciels d'en face 1992. Reproduction, location et revente interd cprint("Les logiciels d'en face 1992. Reproduction, location et revente interdites",18,3)
ites",18,3)
' '
IF stf! !SI C'EST UN STF IF stf! !SI C'EST UN STF
f=FRE() f=FRE()
@ -294,15 +289,12 @@ PROCEDURE initialisation_tableaux
LOCAL i%,j%,scene|,fichier$,espace%,phrase$,longueur%,index%,pointeur% LOCAL i%,j%,scene|,fichier$,espace%,phrase$,longueur%,index%,pointeur%
DIM fonction_mot$(nombre_scenes|,max_mots|)!MOTS QUI VONT "REAGIR" DIM fonction_mot$(nombre_scenes|,max_mots|)!MOTS QUI VONT "REAGIR"
DIM aiguillage|(nombre_scenes|,max_mots|) !SCENE CORRESPONDANT AU MOT... DIM aiguillage|(nombre_scenes|,max_mots|) !SCENE CORRESPONDANT AU MOT...
DIM condition&(nombre_scenes|,max_mots|) !SCENE DEVANT AVOIR ETE VUE (OU NON DIM condition&(nombre_scenes|,max_mots|) !SCENE DEVANT AVOIR ETE VUE (OU NON SI NEGATIF)
SI NEGATIF)
DIM pointeur_mots|(nombre_scenes|) !NOMBRE DE MOTS POUR CHAQUE SCENE DIM pointeur_mots|(nombre_scenes|) !NOMBRE DE MOTS POUR CHAQUE SCENE
DIM scene_visitee!(nombre_scenes|) !LE JOUEUR EST-IL PASSE PAR CETTE SCENE? DIM scene_visitee!(nombre_scenes|) !LE JOUEUR EST-IL PASSE PAR CETTE SCENE?
DIM phrase$(nombre_scenes|,max_mots|) !PHRASE EXPLICATIVE A CHAQUE MOT CLIQUE DIM phrase$(nombre_scenes|,max_mots|) !PHRASE EXPLICATIVE A CHAQUE MOT CLIQUE
DIM image_a_charger$(nombre_scenes|) !NOM DES FICHIERS IMAGE A CHARGER A CHA DIM image_a_charger$(nombre_scenes|) !NOM DES FICHIERS IMAGE A CHARGER A CHAQUE SCENE
QUE SCENE DIM rouge1|(nombre_scenes|),vert1|(nombre_scenes|),bleu1|(nombre_scenes|) !COMPOSANTE DE LA COULEUR DU FOND DU TEXTE
DIM rouge1|(nombre_scenes|),vert1|(nombre_scenes|),bleu1|(nombre_scenes|) !COM
POSANTE DE LA COULEUR DU FOND DU TEXTE
DIM rouge2|(nombre_scenes|),vert2|(nombre_scenes|),bleu2|(nombre_scenes|) DIM rouge2|(nombre_scenes|),vert2|(nombre_scenes|),bleu2|(nombre_scenes|)
' '
ARRAYFILL rouge1|(),4 !ON REMPLIT PAR DEFAUT LES COMPOSANTES ARRAYFILL rouge1|(),4 !ON REMPLIT PAR DEFAUT LES COMPOSANTES
@ -349,8 +341,7 @@ PROCEDURE initialisation_tableaux
INC pointeur_mots|(scene|) !ET UN MOT EN PLUS! INC pointeur_mots|(scene|) !ET UN MOT EN PLUS!
espace%=INSTR(ligne$," ",2) !ON REPERE LE CARACTERE ESPACE espace%=INSTR(ligne$," ",2) !ON REPERE LE CARACTERE ESPACE
fonction_mot$(scene|,pointeur_mots|(scene|))=MID$(ligne$,2,espace%-2) fonction_mot$(scene|,pointeur_mots|(scene|))=MID$(ligne$,2,espace%-2)
condition&(scene|,pointeur_mots|(scene|))=ASC(MID$(ligne$,espace%+2,1))*VA condition&(scene|,pointeur_mots|(scene|))=ASC(MID$(ligne$,espace%+2,1))*VAL(MID$(ligne$,espace%+1,1)+"1")
L(MID$(ligne$,espace%+1,1)+"1")
aiguillage|(scene|,pointeur_mots|(scene|))=ASC(MID$(ligne$,espace%+3)) aiguillage|(scene|,pointeur_mots|(scene|))=ASC(MID$(ligne$,espace%+3))
CLR phrase$ CLR phrase$
phrase$=phrase$+MID$(ligne$,espace%+4) phrase$=phrase$+MID$(ligne$,espace%+4)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1,71 @@
*
* Tout a disparu
*
* (c) 1992, Fran<EFBFBD>ois Coulon
* (c) 2022, Antoine Vignau & Olivier Zardini
*
mx %00
*-----------------------
* LES VARIABLES
*-----------------------
DEBUT_DATA = * ; C'est vachement pratique pour tout effacer !
*--- Variables Apple IIgs
nbTEXTES ds 2
nbTEXTES2 ds 2 ; nombre de textes indiquŽ dans le fichier .TEX
tblTEXTES ds 4*NB_TEXTES
*--- Pour la sauvegarde
C1 ds 1
P ds 1
*--- Variables Atari ST
aventure ds 2
nombre_scenes ds 2
scene_actuelle ds 2
i ds 2
j ds 2
scene ds 2
deplacement ds 2
fichier ds 2
espace ds 2
phrase ds 2
longueur ds 2
index ds 2
pointeur ds 2
fonction_mots ds 2
aiguillage ds 2
conditions ds 2
numero_mot ds 2 ; WORD
mot ds 128 ; le mot ˆ chercher (jusqu'au caract<63>re espace)
option_mot ds 128 ; le mot est enregistrŽ s'il est dans la liste
image_chargee ds 2 ; WORD - TRUE or FALSE
escape ds 2 ; WORD - TRUE or FALSE
* Toujours en dŽcalŽ : index 1 dŽmarre ˆ 0 (NB_TEXTES est toujours > au nombre de sc<EFBFBD>nes)
rouge1 ds NB_TEXTES ; les composants RVB pour le fond
vert1 ds NB_TEXTES
bleu1 ds NB_TEXTES
rouge2 ds NB_TEXTES
vert2 ds NB_TEXTES
bleu2 ds NB_TEXTES
scene_visitee ds NB_TEXTES ; BYTE - par scene, on met true ou false
image_a_charger ds NB_TEXTES*2 ; WORD - par scene, on y met le pointeur vers le nom de l'image
pointeur_mots ds NB_TEXTES ; BYTE - par scene, nombre de mots
texte$ ds 2
b$ ds 2
FIN_DATA = * ; Ben, ouais !
ds 2 ; padding, we never know :-)

View File

@ -8,12 +8,11 @@
mx %00 mx %00
*----------------------- *-----------------------
* constantes * CONSTANTES
*----------------------- *-----------------------
NB_INDICATEURS = 10 NB_INDICATEURS = 10
NB_MOTS = 25 ; on ne peut pas avoir plus de 25 mots par ecran NB_MOTS = 25 ; on ne peut pas avoir plus de 25 mots par ecran
NB_INDEX = 512 ; nombre de fiches du jeu
NB_TEXTES = 512 ; nombre de textes du jeu NB_TEXTES = 512 ; nombre de textes du jeu
*----------------------- *-----------------------
@ -177,88 +176,14 @@ li_err2
brl meQUIT1 brl meQUIT1
*----------------------- *-----------------------
* init_index * next_index
*----------------------- *-----------------------
init_index next_index inc dpINDEX
stz nbINDEX ; 0 texts on entry bne ni_1
inc dpINDEX+2
lda proEOF ; is file empty? ni_1 lda [dpINDEX]
ora proEOF+2
bne ii1
rts
ii1 lda ptrINDEX
sta dpFROM
clc
adc proEOF
sta dpTO
lda ptrINDEX+2
sta dpFROM+2
adc proEOF+2
sta dpTO+2
ldy #1 ; tell to store string
ii2 cpy #1 ; save string pointer?
bne ii3 ; nope
lda nbINDEX ; yes, save the address of the string
asl
asl
tax
lda dpFROM
sta tblINDEX,x
lda dpFROM+2
sta tblINDEX+2,x
dey ; string is saved
inc nbINDEX ; increment the number of strings
lda nbINDEX ; into our limit
cmp #NB_INDEX
bcc ii3
rts
ii3 lda [dpFROM] ; is it the end of a string?
and #$ff and #$ff
bne ii4 ; nope
iny ; yes, tell to store string
ii4 inc dpFROM
bne ii5
inc dpFROM+2
ii5 lda dpFROM+2 ; did we reach the end of the file?
cmp dpTO+2
bcc ii2
lda dpFROM
cmp dpTO
bcc ii2
rts ; we are done!
*-----------------------
* get_index(index%)
*-----------------------
get_index
cmp #0
bne get_index1
rts
get_index1
cmp nbINDEX
bcc get_index2
beq get_index2
rts
get_index2
dec
asl
asl
tax
lda tblINDEX,x
sta dpINDEX
lda tblINDEX+2,x
sta dpINDEX+2
rts rts
*----------------------- *-----------------------
@ -392,19 +317,15 @@ it5 lda dpFROM+2 ; did we reach the end of the file?
* get_textes(textes%) * get_textes(textes%)
*----------------------- *-----------------------
get_textes get_textes cmp #0
cmp #0 beq get_textes1
bne get_textes1
rts
get_textes1
cmp nbTEXTES cmp nbTEXTES
bcc get_textes2 bcc get_textes2
beq get_textes2 beq get_textes2
get_textes1 sec
rts rts
get_textes2 get_textes2 dec
dec
asl asl
asl asl
tax tax
@ -412,64 +333,13 @@ get_textes2
sta dpTEXTES sta dpTEXTES
lda tblTEXTES+2,x lda tblTEXTES+2,x
sta dpTEXTES+2 sta dpTEXTES+2
clc
rts rts
*----------------------- *-----------------------
* LE JEU * LE JEU
*----------------------- *-----------------------
*-----------------------
* MAIN - OK
*-----------------------
* main
main
jsr choix_aventure
jsr help
jsr initialisation_relative
jmp fadeOUT
*-----------
DEBUT_DATA = * ; C'est vachement pratique pour tout effacer !
aventure ds 2
nombre_scenes ds 2
scene_actuelle ds 2
max_musiques ds 2
max_mots ds 2
taille_image ds 2 ; not used
i ds 2
j ds 2
scene ds 2
deplacement ds 2
fichier ds 2
espace ds 2
phrase ds 2
longueur ds 2
index ds 2
pointeur ds 2
fonction_mots ds 2
aiguillage ds 2
conditions ds 2
pointeur_mots ds 2
numero_mot ds 2 ; WORD
mot ds 128 ; le mot ˆ chercher (jusqu'au caract<63>re espace)
option_mot ds 128 ; le mot est enregistrŽ s'il est dans la liste (c'est bien long quand m<>me)
scene_visitee ds NB_TEXTES ; BYTE - par scene, on met true ou false
image_a_charger ds NB_TEXTES*2 ; WORD - par scene, on y met le pointeur vers le nom de l'image
image_chargee ds 2 ; WORD - TRUE or FALSE
escape ds 2 ; WORD - TRUE or FALSE
rouge1 ds NB_TEXTES ; les composants RVB pour le fond
vert1 ds NB_TEXTES
bleu1 ds NB_TEXTES
rouge2 ds NB_TEXTES
vert2 ds NB_TEXTES
bleu2 ds NB_TEXTES
FIN_DATA = * ; Ben, ouais !
*----------------------- *-----------------------
* GENERIQUE - OK * GENERIQUE - OK
*----------------------- *-----------------------
@ -710,26 +580,6 @@ initialisation_absolue
* initialisation_constantes * initialisation_constantes
initialisation_constantes initialisation_constantes
lda #3
sta max_musiques
* lda #75
* sta max_colonnes
* lda #18
* sta max_lignes
* lda #8
* sta largeur_caractere
* lda #11
* sta hauteur_caractere
* lda #3
* sta marge_gauche
* lda #3*8 ; marge_gauche * largeur_caractere
* sta marge_gauche_pixel
lda #NB_MOTS
sta max_mots
lda #32000
sta taille_image
rts rts
*----------------------- *-----------------------
@ -821,10 +671,151 @@ initialisation_textes
* INITIALISATION_TABLEAUX - OK * INITIALISATION_TABLEAUX - OK
*----------------------- *-----------------------
instrDIESE = $23
instrECOMM = $26
instrPERCE = $25
*---
initialisation_tableaux initialisation_tableaux
jsr load_index ; exit if error jsr load_index ; exit if error
jmp init_index
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
*--- Initialise le tableau des pointeurs d'image
ldy #1
]lp tya
asl
tax
stz image_a_charger-2,x
iny
cpy #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 ˆ 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
jmp next_index ; skip the final 0
*--- Handle & - une image ˆ 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
jmp next_index ; skip the final 0
*--- Handle # - les mots cliquables
doDIESE jsr next_index
dec
tax ; la scene
*----------------------- *-----------------------
* INITIALISATION_CACHE - OK * INITIALISATION_CACHE - OK
*----------------------- *-----------------------
@ -841,7 +832,19 @@ initialisation_cache
debut_aventure debut_aventure
lda #1 lda #1
sta scene_actuelle sta scene_actuelle
ldx #1
sep #$20
lda #FALSE
]lp sta scene_visitee-1,x
inx
cpx #NB_TEXTES
bcc ]lp
beq ]lp
rep #$20
lda #TRUE
sta deplacement
rts rts
*----------------------- *-----------------------
@ -854,7 +857,6 @@ fin_aventure
ldx #DEBUT_DATA ; on efface tout ldx #DEBUT_DATA ; on efface tout
]lp stz |$0000,x ]lp stz |$0000,x
inx
inx inx
cpx #FIN_DATA cpx #FIN_DATA
bcc ]lp bcc ]lp
@ -874,10 +876,11 @@ fin
*----------------------- *-----------------------
* NOUVELLE_SCENE - OK * NOUVELLE_SCENE - OK
*----------------------- *-----------------------
* nouvelle_scene(scene) * nouvelle_scene(scene ˆ charger)
nouvelle_scene nouvelle_scene
ldx scene * ldx scene
tax
lda #TRUE lda #TRUE
sep #$20 sep #$20
sta scene_visitee,x sta scene_visitee,x
@ -1063,10 +1066,9 @@ cprint1 rep #$20 ; nb chars x 8 to get width
*----------------------- *-----------------------
* IMAGE - OK * IMAGE - OK
*----------------------- *-----------------------
* image(scene) * image(scene ˆ charger)
image image
lda scene
asl asl
tax tax
lda image_a_charger,x lda image_a_charger,x
@ -1231,7 +1233,10 @@ palette
*----------------------- *-----------------------
* help * help
help jsr switch_640 help lda mainWIDTH ; save current width
sta oldWIDTH
jsr saveBACK ; save background
jsr switch_640 ; switch to 640
ldx ptrFOND+2 ldx ptrFOND+2
ldy ptrFOND ldy ptrFOND
@ -1279,6 +1284,7 @@ help4
@cprint #help_str8;8 @cprint #help_str8;8
@cprint #help_str9;9 @cprint #help_str9;9
@cprint #help_str11;11 @cprint #help_str11;11
@cprint #help_str12;12
@cprint #help_str13;13 @cprint #help_str13;13
@cprint #help_str14;14 @cprint #help_str14;14
@cprint #help_str16;16 @cprint #help_str16;16
@ -1290,7 +1296,11 @@ help9 jsr waitEVENT
PushLong #old_pattern PushLong #old_pattern
_SetPenPat _SetPenPat
jmp fadeOUT jsr fadeOUT ; fade
jsr loadBACK ; restore background
lda oldWIDTH ; restore width
sta mainWIDTH
rts ; and exit
*--- *---
@ -1310,9 +1320,10 @@ help_str3_2 asc '- Fran'8d'ois Coulon et Laurent Cotton -'00
help_str8 asc 'OA-S : sauver la situation'00 help_str8 asc 'OA-S : sauver la situation'00
help_str9 asc 'OA-O : recharger une situation'00 help_str9 asc 'OA-O : recharger une situation'00
help_str11 asc 'OA-Z : musique on/off'00 help_str11 asc 'OA-Z : musique on/off'00
help_str13 asc 'OA-R : retour au d'8e'but de l'27'aventure'00 help_str12 asc 'OA-R : retour au d'8e'but de l'27'aventure'00
help_str14 asc 'ESC : retour au menu'00 help_str13 asc 'ESC : retour au menu'00
help_str16 asc 'Toute autre touche : retour '88' l'27'aventure'00 help_str14 asc 'Toute autre touche : retour '88' l'27'aventure'00
help_str16 asc 'OA-Q : quitter le jeu'00
*----------------------- *-----------------------
* MOTS_CLICABLES * MOTS_CLICABLES
@ -1595,30 +1606,3 @@ strcmp2
cmp #TRUE ; met les valeurs de comparaison cmp #TRUE ; met les valeurs de comparaison
rts rts
*-----------------------
* data
*-----------------------
theDATA = *
*-----------------------
* Variables
*-----------------------
*--- Variables du jeu
debutVARIABLES = *
C1 ds 1
P ds 1
finVARIABLES = *
*--- Variables Apple IIgs
nbINDEX ds 2
nbTEXTES ds 2
nbTEXTES2 ds 2 ; nombre de textes indiquŽ dans le fichier .TEX
tblINDEX ds 4*NB_INDEX
tblTEXTES ds 4*NB_TEXTES

View File

@ -277,8 +277,24 @@ okTOOL _HideMenuBar
jsr initialisation_absolue jsr initialisation_absolue
jsr generique jsr generique
jsr main
*-----------------------
* MAIN - OK
*-----------------------
* main
main
jsr choix_aventure
jsr initialisation_relative
jsr fadeOUT
mainLOOP
lda scene_actuelle
jsr nouvelle_scene
lda scene_actuelle
jsr image
* jsr affiche_texte
*---------------------------------------- *----------------------------------------
* TASK MASTER * TASK MASTER
*---------------------------------------- *----------------------------------------
@ -345,12 +361,14 @@ tblKEYVALUE
asc 'QqOoSs' asc 'QqOoSs'
asc 'Rr' asc 'Rr'
asc 'Zz' asc 'Zz'
asc '?'
hex ff hex ff
tblKEYADDRESS tblKEYADDRESS
da doQUIT,doQUIT,doLOAD,doLOAD,doSAVE,doSAVE da doQUIT,doQUIT,doLOAD,doLOAD,doSAVE,doSAVE
da doRESTART,doRESTART da doRESTART,doRESTART
da doMUSIK,doMUSIK da doMUSIK,doMUSIK
da help
*----------------------------------- Gestion des contrôles (ça veut dire boutons ou lineedit) *----------------------------------- Gestion des contrôles (ça veut dire boutons ou lineedit)
@ -412,6 +430,7 @@ switch_res
*----------- *-----------
mainWIDTH ds 2 mainWIDTH ds 2
oldWIDTH ds 2
mainPORT ds 4 mainPORT ds 4
*----------------------------------- Open *----------------------------------- Open
@ -1297,6 +1316,7 @@ pGAME strl '0/ '
*---------------------------------------- *----------------------------------------
put game.s put game.s
put data.s
put ecr.s put ecr.s
put ntp.s put ntp.s