[FORTH] Mise à jour - SOKOBAN VERSION 2023

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

[FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

Bonjour à tous,

Depuis quelques temps déjà je désirais mettre à jour le SOKOBAN que j'avais fait pour le VG5000.

I VISUEL :

a) Je m'étais largement inspiré de la présentation faite par M. Ricardo Fernandes Lopes pour son SOKOBAN Jupiter Ace :

https://jupiter-ace.co.uk/listing_sokoACE.html

J'avais aussi beaucoup apprécié sa routine SCAN qui par la lecture du niveau permettait de localiser les caisses et la position du SOKOBAN. Tout à fait exceptionnel !

b) Je me suis décidé en voyant le SOKOBAN de Batiste:

viewtopic.php?f=25&t=4505&hilit=sokoban

Et j'ai pris la liberté de refaire les sprites du MO pour le VG (en particulier les murs).
Que Batiste ne m'en veuille pas, de toute façon je lui en donne le crédit.
dcvg5k.png
dcvg5k.png (2.61 Kio) Consulté 3091 fois

II ANNULER :

Je voulais surtout ajouter une commande qui permette de faire marche arrière et d'annuler les mouvements précédents. Evidemment pour pouvoir les annuler il fallait qu'ils soient enregistrés sans prendre beaucoup de place. Je voulais que le SOKO tienne dans 16 K avec le maximum de tableaux; on peut maintenant annuler jusqu'à 2000 mouvements ce qui me semble suffisant.

III BRUITAGE :

Dans le même fil Daniel avait suggéré de mettre un peu de son. Je dois avouer mes limitations, je suis nul en musique, alors j'ai copié le BIP d'origine du VG pour les déplacements et une 'mélodie' de fin de partie.
Si vous jetez un coup d'oeil sur le fichier SOKO32V2023.LST la routine SON est en $5739 avec les deux paramètres en HL et DE.
Pour le BIP -> HL=$2020 DE=$05 pour les 3 notes de la mélodie (CF_FINAL) : $2424 - $50 puis $2222 - $70 puis $2020 - $150.
Toute aide sera la bienvenue.

IV EXE-FORTH

Ce n'est pas un nouveau langage. Grace aux outils actuels et en particulier à l'exceptionnel DCVG5K de Daniel on peut tester, desassembler, modifier et re-assembler à volonté. En retirant du compilateur FORTH tout ce qui était devenu inutile, les étiquettes des mots, les routines de compilation etc.. le programme tourne maintenant avec 10 niveaux sur un VG5000 sans extensions.

C'est toujours du FORTH et si vous avez suivi ce fil :

viewtopic.php?f=6&t=11545

vous retrouverez les 3 routines dont je parlais :
NEXT en $5205
DOCOL en $5397
SEMIS en $52F9


@Daniel et @CARL:

Sans vouloir vous commander :

- Le SOKO.ZIP contient tous les fichiers necessaires :
- Les 2 K7 pour le VG 16K et le VG 32K.
- Ainsi que les fichiers source : Le SCREEN du programme en Forth et le listing EXE-FORTH sous forme *.LST
- Il serait bon de supprimer l'ancienne version.

- Je laisse à Carl le soin de faire le DISKX.SD pour modifier le Pack qu'il a créé.

- Pour info : j'ai tout testé sur un vrai VG5000, mais un bug est toujours possible.

BON JEU A TOUS
SOKOBAN.zip
(76.73 Kio) Téléchargé 33 fois
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Daniel »

Merci et bravo, Dominique 8)
Le site dcvg5k vient d'être mis à jour : http://dcvg5k.free.fr/programmes/sokoban/index.html
(Il faut peut-être rafraîchir la page dans votre navigateur pour voir la dernière version)
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

Merci Daniel,

Pour ce qui est du fichier INSTRUCTIONS on rencontre un problème déjà évoqué : l'accentuation (é, è, à, ê) sort corrompue.

Je ne sais pas s'il y a une solution... Je préfère changer le fichier en retirant les accents.

Désolé pour le travail.
InstructionsSokoban.zip
(1.31 Kio) Téléchargé 42 fois
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Markerror »

Bonjour,

Jolie mise à jour qui corrige le principal défaut de l'ancienne version, le faible nombre de niveaux. Je vais tester cette mise à jour ce week-end. Les "dalles" vertes me semblent un peu agressives visuellement, mais bon, à voir sur une vraie machine.

Vu que maintenant "pas mal de monde" a une extension 5216 ou VG5232, une version 32ko avec d'autres niveaux me semblerait une évolution raisonnable pour le futur :-).
Dernière modification par Markerror le 24 mars 2023 13:44, modifié 1 fois.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

Bonjour Mark,

Merci pour ce commentaire, ce sont justement les retours des utilisateurs et des specialistes qui nous font progresser.

D'ailleurs, comme tu t'en doutes, on peut très facilement modifier les couleurs ou les Sprites.
J'ai par exemple de gros doutes sur le contraste entre les MURS et les EN-BUT (Magenta x Cyan) - Un bleu quelque part ?
De même je ne suis pas très satisfait de la mélodie finale. Un connaisseur pourrait trouver une suite de notes autrement plus agréables. J'avais pensé aussi rendre le SON optionnel avec sprite de Haut-Parleur barré ou non

Je rajoute ici le SOKO32 pour le VY 5040 de Fred_42 sur le disk C
On lance par : DISK RUN "LOADER"
On a ainsi les 50 tableaux originaux de "Thinking Rabbit"
DISKC.zip
(7.23 Kio) Téléchargé 32 fois
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Carl »

Merci Dominique pour ce travail, je vais tester ce Sokoban 2023 ce weekend sur une vrai machine...peut être la 1ere version du VG5000 avec eprom ;-)

Carl
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Markerror »

Bonsoir,

Je viens de tester sur une vraie machine avec carte VY5040 le jeu. Ca fonctionne sans problème.

Le choix des couleurs est moins choquant que ce que je pensais. On discerne plutôt bien les différents éléments. Ca reste peut-être un peu fatiguant pour les yeux quand on reste longtemps sur un niveau (c'est qu'il en met du temps à pousser ses caisses le gars :-) ). Je me demande aussi si sur un moniteur monochrome, c'est aussi lisible.

Je vais voir si je peux proposer un autre jeu de couleurs.

Deux petites propositions d'améliorations pour rendre le jeu encore meilleur :

- pouvoir redéfinir les touches de déplacement et se passer des touches curseurs, un peu placé à l'arrache sur le clavier du VG 5000. A défaut, pouvoir utiliser A Q I O par exemple. Je n'ai pas testé si le jeu était compatible avec la manette, mais je ne suis pas sûr que cela soit très pratique pour jouer (pas assez précis).

- faire en sorte que le sprite du joueur suive la direction choisie. Actuellement même s'il va à droite ou à gauche, on le voit toujours posser vers le haut. Je suppose que la taille des caractères n'aide pas à faire une simple rotation du sprite dans les quatre directions, mais ça doit être possible d'avoir quatre rédéfinitions correctes. Le sprite actuel est d'ailleur un pei bizarre (deux traits dans son dos).

Bravo encore pour avoir remis l'ouvrage sur le métier, Sokoban est déjà comme cela un jeu très recommandable !
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

Bonsoir,

Merci beaucoup Mark,

C'est exactement ce que j'attendais !

- Bien vu l'idée de laisser le choix des touches au joueur. Il est vrai que si sur l'ordi les flèches vont bien, la présentation des flèches sur le clavier du VG sont problematiques et moins faciles à mémoriser.
- Beau défi que celui de modifier les sprites du pousseur pour accompagner le mouvement, mais c'est parfaitement faisable,
- Au passage on pourrait proposer au joueur une combinaison de couleurs de sprites en affichant un choix de 4 'mini-niveaux' à l'écran : 1 avec les murs bleus, couloir noir, en-but vert' un autre murs rouges, couloir vert, en-but jaune etc....'
- Peut être que quelqu'un va proposer une mélodie agréable de plusieurs notes, mon rêve était de lui faire pousser un 'ouufff' quand il pousse :D , mais je n'ai pas l'oreille pour ça. D'ailleurs je pourrais mettre le son en option; à voir.

Pour la version 16K c'est un peu serré avec 10 niveaux, on ne pourra pas tout faire. Mais la 32 K oui, même avec les 50 niveaux.

Pour rendre ce travail Ludique, je vais commenter le programme tel que je l'ai donné dans le SCREEN, et documenter les modifs au fur et à mesure; ça peut en interresser quelques uns.

A+
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par hlide »

Les niveau ne peuvent pas être compressés ? à mon avis, on peut diviser par 10 leur taille - c'est typiquement ce que j'ai quand je compresse une image de 1000 octets contenant des caractères à dessiner à l'écran. Soit on compresse par niveau et lorsque l'on passe à un niveau on le décompresse à la place du précédent, soit on compresse par parquet de 10 niveaux et on décompresse tous les 10 niveaux si on peut parvenir à une compression de x10 ou plus.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

Tout à fait raison hlide.

Pourquoi je n'y ai pas pensé ????? Surtout qu'il y a peu de caracteres donc beaucoup de répétitions.

Au travail
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Carl »

Je viens également de lancer Sokoban 2023 sur VG5000 eprom basic 1.0 & VY5040...
Les couleurs ça va mais j'ai pris un trop petit moniteur :roll:

sokoban2023.jpg
sokoban2023.jpg (114.81 Kio) Consulté 2680 fois
Carl
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

@Carl,

Ce n'est pas bien grand, mais ça rend bien quand même

Bonjour à tous :

Les modifications progressent :

I GAIN DE MEMOIRE

1) Compression :
Comme l'a suggéré hlide, il fallait compresser les niveaux.
Le problème avec les algorithmes qu'on trouve sur le Net (RLE et autres) est qu'il n'est pas aisé de retrouver l'adresse de début de chacun des niveaux, à moins de faire des tables ou de les compresser individuellement.

La solution adoptée est la suivante :
Chaque Sprite à un code, ce sont des SETEG (commande en FORTH). Pour chaque niveau, les codes sont recopiés de façon ordonnée dans un buffer. J'avais arbitrairement donné $20,$21,$22 etc... Il suffisait de donner 0,1,2, etc.. pour que ces codes tiennent sur 4 bits et deux codes sur un octet; ça rallonge les commandes de SCAN (SCR>BUF et BUF>SCR) mais divise notre buffer de niveau par 2. Comme notre écran de jeu a un nombre pair de cases, on retrouve facilement le début des niveaux.

edit 14h38 : Je ne suis peut être pas encore arrivé au bout des possibilités de la compression, je vais approfondir.

2) Adresse DEBUT et Enregistrement des mouvements :
Il y a également un gain potentiel : Comme nous avons un STRING d'environ 800 octets qui enregistre les mouvements je peux y mettre des infos qui ne servent qu'au lancement du jeu, comme les DATAS des sprites. Une fois que SETEG les a enregistrés dans la VRAM je peux les laisser s'écraser par l'enregistrement des mouvements.

II TOUCHES
Comme l'a dit Markerror les flèches ne sont pas pratiques sur le clavier. Je pensais laisser le choix au joueur, mais il y a un risque de confusion avec des touches que je ne veux pas modifier : (Q) Quitter (A) Annuler (E) Embut (S) Sokoban etc..
De plus les flèches du clavier de nos ordinateurs actuels sont pratiques et beaucoup (façon de parler) joueront sur le DCVG5K. Alors autant faire vivre ensemble les flêches et les 4 touches de clavier.
J'ai choisi T et G pour les verticales qu'on actionne de la main gauche et O et P à l'horizontale qu'on actionne de la main droite :

Là où il y avait : '$9 = IF' pour la flèche HAUT on a maintenant : 'DUP $9 = SWAP $54 = + IF' pour la Fleche et le T
SokoTouches.jpg
SokoTouches.jpg (134.39 Kio) Consulté 2553 fois
III ROTATION DU SPRITE

Je vais me mettre à l'autre suggestion de Markerror, pour que le SOKO accompagne le sens de son mouvement.

A+
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par hlide »

Exemple de compression : ZX0 (https://github.com/einar-saukas/ZX0). Remplace l'ancien ZX7. Il y a plusieurs routines en assembleur Z80 mais le plus simple "standard" à 68 octets est suffisamment rapide pour décompresser un niveau. Essaye de compresser un de tes niveaux (sans chercher à caser 2 caractères dans un octet) avec l'utilitaire zx0 pour te faire une idée du taux de compression. Pour décompresser, tu as juste besoin de connaître le début d'adresse où se trouve le bloc compressé et lui indiquer où tu veux décompresser (la taille est implicitement "codée" dans le bloc compressé).

Ainsi tu fais l'équivalent de :

Code : Tout sélectionner

	LD	HL,compressed_level_data
	LD	DE,current_level_data_to_scan
	CALL	dzx0_standard
Si la taille compressée avoisine la dizaine de la taille originale pour chaque niveau, non seulement tu pourras mettre les 50 niveaux en 16 Ko mais tu libères beaucoup de place pour autre chose.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par Dominique »

OK, merci bien hlide.

Je m'en occupe tout de suite.

EDIT 16h51 - La compression me donne pour un Tableau : de 384 oct -> 69 octet -> 69*50 = 3450 octet soit $0D7A en memoire.
Avec les gains utilisant le String d'enregistrement des mouvements + baissant l'adresse de début du programme (Que je peux passer de $5200 à $4F00 ) on doit pouvoir mettre les 50 tableaux. Le problème sera pour créer les nouveaux tableaux, nous n'avons pas l'algo de compression en ASM....
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [FORTH] Mise à jour - SOKOBAN VERSION 2023

Message par hlide »

Alors oui, sachant que ZX0 met beaucoup de temps à compresser (plus la taille originale est importante, plus cela prendra des minutes - c'est la rançon d'une meilleure compression que le ZX7), je vois difficilement le portage de la compression se faire en Z80 et Forth qui plus est, que ce soit en terme de vitesse ou de mémoire nécessaire. Tu comptais ajouter un éditeur de niveau dans ce jeu ?
Répondre