works continue

This commit is contained in:
Antoine Vignau 2023-08-13 17:54:50 +02:00
parent 173c3832f5
commit 2cd5537f56
6 changed files with 7532 additions and 1657 deletions

View File

@ -338,6 +338,12 @@ PROCEDURE initialisation_tableaux
CASE "#" !UN MOT CLICABLE?
scene|=ASC(LEFT$(ligne$,1)) !ON LIT LE NUMERO DE LA SCENE
'
0 1 2 3 4
01234567890123456789012345678901234567890
#1suite +1G0
#2plage +13Fred retourne sur la plage0
INC pointeur_mots|(scene|) !ET UN MOT EN PLUS!
espace%=INSTR(ligne$," ",2) !ON REPERE LE CARACTERE ESPACE
fonction_mot$(scene|,pointeur_mots|(scene|))=MID$(ligne$,2,espace%-2)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -36,13 +36,9 @@ 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
@ -51,20 +47,36 @@ 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
asc "SUITE_DATA"
SUITE_DATA = * ; C'est vachement pratique pour tout effacer !
asc "FONCTION_MOTS"
fonction_mots ds NB_TEXTES*NB_MOTS*2 ; PNTR - mots qui vont "rŽagir"
asc "AIGUILLAGE"
aiguillage ds NB_TEXTES*NB_MOTS ; BYTE - scene correspondant au mot
asc "CONDITION"
condition ds NB_TEXTES*NB_MOTS*2 ; WORD - scene devant avoir ete vue (ou non si nŽgatif)
asc "POINTEUR_MOTS"
pointeur_mots ds NB_TEXTES ; BYTE - nombre de mots pour chaque scene
asc "SCENE_VISITEE"
scene_visitee ds NB_TEXTES ; BOOL - le joueur est-il passŽ par cette sc<73>ne ?
asc "PHRASE"
phrase ds NB_TEXTES*NB_MOTS*2 ; PNTR - phrases explicatives de chaque mot
asc "IMAGE_A_CHARGER"
image_a_charger ds NB_TEXTES*2 ; PNTR - nom des fichiers image ˆ charger ˆ chaque sc<73>ne
asc "ROUGE1"
rouge1 ds NB_TEXTES ; les composants RVB pour le fond
asc "VERT1"
vert1 ds NB_TEXTES
asc "BLEU1"
bleu1 ds NB_TEXTES
asc "ROUGE2"
rouge2 ds NB_TEXTES
asc "VERT2"
vert2 ds NB_TEXTES
asc "BLEU2"
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
asc "FIN_DATA"
FIN_DATA = * ; Ben, ouais !
ds 2 ; padding, we never know :-)

View File

@ -13,7 +13,7 @@
NB_INDICATEURS = 10
NB_MOTS = 25 ; on ne peut pas avoir plus de 25 mots par ecran
NB_TEXTES = 512 ; nombre de textes du jeu
NB_TEXTES = 160 ; nombre de textes du jeu
*-----------------------
* load_font
@ -671,6 +671,7 @@ initialisation_textes
* INITIALISATION_TABLEAUX - OK
*-----------------------
instrSPACE = $20
instrDIESE = $23
instrECOMM = $26
instrPERCE = $25
@ -685,6 +686,14 @@ initialisation_tableaux
lda ptrINDEX+2
sta dpINDEX+2
*--- Initialise les valeurs du jeu
ldx #SUITE_DATA ; on efface tout
]lp stz |$0000,x
inx
cpx #FIN_DATA
bcc ]lp
*--- Initialise les valeurs RVB
ldx #1 ; RVB par dŽfaut
@ -704,19 +713,6 @@ initialisation_tableaux
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
@ -813,8 +809,96 @@ doECOMM jsr next_index
doDIESE jsr next_index
dec
sta localSCENE
tax ; la scene
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
*--- Maintenant, on parcout le tableau jusqu'ˆ l'espace
]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")
*--- Ici, on ne fait pas le calcul de la version Atari pour le moment
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
*--- aiguillage|(scene|,pointeur_mots|(scene|))=ASC(MID$(ligne$,espace%+3))
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
*--- Local data
localSCENE ds 2 ; index de la scene
localOFFSET ds 2 ; offset de chaque rangŽe
localPOINT ds 2 ; index du mot
*-----------------------
* INITIALISATION_CACHE - OK
@ -1144,8 +1228,7 @@ affiche_image
beq ai_1
rts
ai_1
jsr switch_320
ai_1 jsr switch_320
jsr noircit_ecran
ldx ptrIMAGE+2
ldy ptrIMAGE

View File

@ -288,6 +288,23 @@ main
jsr initialisation_relative
jsr fadeOUT
lda #SUITE_DATA
stal $300
lda #^SUITE_DATA
stal $302
lda ptrINDEX
stal $308
lda ptrINDEX+2
stal $30a
lda ptrTEXTES
stal $310
lda ptrTEXTES+2
stal $312
brk $bd
mainLOOP
lda scene_actuelle
jsr nouvelle_scene