14345
GAME -> Actiontypeins
© Amstrad Action (1992)
 
 
 
Diamond Hunt
cpc
 
 
screenshot
CTM644 Colour Monitor
screenshot
GT65 Green Monitor
 

Keywords

INFOS

- CATEGORIES -
GAME -> Action               
- NUMBER OF PLAYERS -
1 player
- STAFF -
Paru sous forme de listing dans le magazine Amstrad Action Issue 84, September 1992.
Auteur : Shaun WALTON

- BUGS -
Problème de Memory Full après un certain temps de jeu :
screenshot


* Corrections par Ross SIMPSON :
30 Le code d'origine utilisait ON BREAK GOSUB 320 si la touche Échap était enfoncée, ce qui pouvait entraîner un problème de mémoire pleine. J'ai désactivé cela avec POKE &BDEE,&C9:KEY DEF 66,0,0,0,0

40 Ajout de DEFINT a-z pour améliorer les performances

61 Nouvelle ligne pour afficher un message après la sortie de la boucle principale du jeu

80 Ajout de GOSUB 990 vers une sous-routine pour vider le tampon du clavier

130 Remplacement de FRAME (BASIC 1.1) par CALL &BD19

150 GOSUB 720 - Insérer les données d'explosion ici après avoir constaté un retard avec le code d'origine en BASIC 1.0.

190 Boucle principale du jeu : A1=0 pour continuer la boucle ; si un événement se produit, A1 prend une autre valeur ; sinon, quitter si la touche "q" est enfoncée.

200 Remplacement de CLEAR INPUT en BASIC 1.1 par GOSUB 990 vers une sous-routine pour vider le tampon du clavier.

241 Nouvelle ligne pour sauter à la fin de la boucle principale du jeu :
A1=1 - Temps écoulé
A1=3 - Tous les diamants collectés
A1=2 & Vies = 0
Sinon, revenir à A1=0 si Vies est supérieur à 0

300..310 Supprimé
- Lignes d'origine : affichage du score et calcul du total pour le comparer au tableau des meilleurs scores (870), sauf si la touche "q" est enfoncée, ce qui fait passer à la ligne 320

311..319 - Nouvelles lignes pour gérer toutes les conditions de sortie ici.
- Le jeu d'origine sautait à divers endroits, avec des problèmes détectés dans les sous-routines 570 et 590 qui ne parvenaient pas à revenir, ce qui entraînait un message "MEMORY FULL".

330 Le jeu d'origine utilisait 4 tableaux p, q, r, s ; ceux-ci sont remplacés par un seul tableau 2D qui est effacé sur cette ligne.

340 Le jeu d'origine se termine sur cette ligne ; j'ai modifié cela pour activer la touche Échap avec POKE &BDEE,&C3:KEY DEF 66,0,252,0,0 et j'ai également ajouté CLEAR.

370..380 Le jeu original définissait la limite du plateau à 24 ; je l'ai modifiée à 23.

390 A l'origine, on utilisait COPYCHR$ de BASIC 1.1 pour vérifier les collisions à l'écran ; le tableau 2D remplace cette fonction en stockant les diamants et les bombes et en vérifiant les collisions.

410 Remplacement des 4 tableaux d'origine définis ici par la définition d'un tableau 2D.

420..540 Dessine le plateau,
Ma version condense cela :
- avec une seule boucle
- vérifie aux lignes 450 et 480 si la position dans le tableau est libre pour y placer l'objet et l'afficher, sinon sélectionne une autre position.


570-610 SUPPRIMÉ - Sous-programmes problématiques.
570 - Lorsque la condition "toutes les vies perdues" est devenue vraie, forçant le code à passer à GOTO 320 et empêchant le retour (comme on le voit en 580)
590 - Lorsque la condition "tous les diamants collectés" est devenue vraie, forçant le code à passer à GOTO 600 ; après le retour depuis la zone de la table des meilleurs scores, le passage à GOTO 320 empêche le retour à 610.

Sous-routine du son d'explosion
710..730 - 710 - Le code original configure la zone mémoire 40000 et effectue un POKE sur DATA (sous-routine 720), puis effectue un RETURN pour appeler ces explosions.
710 - Ma version appelle simplement ces explosions avant d'effectuer un RETURN, puisque DATA a été POKÉ plus tôt.
720 - L'original POKE DATA à la fin des lignes 720 et 730
720 - Ma version nettoie DATA (pas d'esperluette devant DATA)
- comme j'ai utilisé DEFINT a-z plus tôt, je dois utiliser l'équivalent hexadécimal plutôt que des nombres décimaux (MEMORY &9C3F, c=&9C40)
- J'ai créé la ligne 725 pour y placer la première ligne DATA (pour plus de clarté).

760..780 - Le jeu arrive ici lorsque le TEMPS EST ÉCOULÉ ! bien que le jeu original effectue correctement un RETURN.
- Ma version arrive toujours ici pour jouer le SON, calculer le score et définir la condition de A1 à 1 avant de RETOURNER vers ma nouvelle zone 311..319.

800 - J'ai modifié INPUT pour qu'il n'affiche pas de point d'interrogation.

870 - Cette ligne vérifie si le score du joueur est supérieur aux scores du tableau des meilleurs scores.
- Le code d'origine utilise une boucle FOR : si la condition est vraie, GOSUB 800 ; après RETURN, GOTO 880, efface les scores (880) et RETURN
sinon NEXT i
- J'ai remplacé cela par les lignes 870 à 875, avec une boucle WHILE..WEND pour rendre le code plus structuré.

910..920 Routine M/C pour faire un fondu de l'écran, utilisée uniquement lorsque le joueur quitte le jeu.
- Le code d'origine émet une autre commande MEMORY à la ligne 910, ce qui est inutile. Remplacé par RESTORE 950, afin que les données correctes soient enregistrées via POKE.
- Tout comme Sound Explosion, la ligne 920 utilise des nombres décimaux ; comme DEFINT a-z est utilisé plus tôt dans le jeu, ceux-ci sont remplacés par leurs équivalents en nombres hexadécimaux.

990 - Nouvelle ligne pour vider le tampon du clavier et RETURN.
- LINKS -
COMPILATION -> Press Amstrad Action Issue 086 © Amstrad Action (1992)

 

Goto Top

CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2026 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.
Hébergement Web, Mail et serveurs de jeux haute performance