Le lundi 14 juillet 2025, Edgar a écrit :
> Ce n'est pas ce qui est écrit dans le Makefile que tu as posté :
>
> $(GAME_FILE): $(FONT_FILE) $(STATE_FILE) $(GAME_SRC_FILE) #TODO: $(GAME_DEP_FILES)
>
> En remplaçant les variables, ça donne :
>
> ../build/game.bin: ./font_charset.asm ../build/state.bin ./game.asm
>
> > [state.bin] est créé par la commande ASM_CMD, qui crée game.bin et
> > tous les gameplay_data_{01..21}.bin [...]
Mmm, effectivement ! Ceci-dit, ma version actuelle a ces dépendances pour
le dsk, et ça ne marche pas.
> Si je comprends bien, la commande
>
> $(ASM_CMD) $(ASM_OPTS) $(DEFINES) -DGAME $(GAME_SRC_FILE)
>
> génère non seulement game.bin, mais aussi state.bin et
> gameplay_data_{01..21}.bin. C'est bien ça ?
Vi.
> C'est tordu
Ouais, mais je n'ai pas encore trouvé comment séparer ça. sjasmplus ne
semble pas savoir assembler des bouts de code, puis les linker plus tard.
Faut que je creuse encore.
> mais j'ai une idée que tu pourrais essayer. Je te suggère de ne pas
> mentionner du tout les fichiers state.bin et gameplay_data_*.bin dans le
> Makefile. Vu qu'ils sont fabriqués en même temps que game.bin, tu vas
> supposer que si game.bin existe et est à jour, alors il en est de même
> de ces autres fichiers. On pourrait dire que « game.bin » devient le
> représentant d'une famille de fichiers. Du coup, si une cible dépend
> d'un des autres fichiers de la famille, tu vas prétendre qu'elle dépend
> de game.bin. Tu vas donc décrire dans le Makefile le graphe de
> dépendances suivant :
>
> run
> └── Fugitif.dsk
> ├── menu.bin
> │ └── menu.asm
> ├── intro.bin
> │ └── intro.asm
> ├── game.bin
> │ ├── font_charset.asm
> │ │ └── fontNormalAsSprites.py
> │ └── game.asm
> └── gameplay_data_{01..21}.bin.zx0
> └── game.bin
>
> Ainsi, avant de compresser gameplay_data_*.bin, make va attendre que
> game.bin ait été généré, et donc (indirectement) que les
> gameplay_data_*.bin le soient aussi.
Comment tu mets game.bin en dépendance des gameplay_data ? Sur la cible
suivante ?
%.zx0: %.bin
qui deviendrait :
%.zx0: %.bin $(GAME_FILE)
Je viens de tester, ça ne marche pas, il ne compresse pas les fichiers :o(
--
Frédéric