# Circulation des ennemis — version 0.7## Observation de l'original`probe-enemy-clock.py` attend quatre périodes dans l'original CPC, en conservant sapopulation initiale et son horloge. Seule la position du personnage observé est préparéesur le toit. Les écritures sur les fiches des pièces révèlent les routines `#7DE4–#7E9A`.Le nombre total d'ennemis passe de 56 à 59, 62, 65 puis 67. Le quota à entreposer passede 34 à 45 : une entrée atteint sa capacité lors de la dernière période.Le compteur `#6720` est indépendant de l'heure affichée. La boucle principale appellela mise à jour lorsque son octet haut atteint `#3B`, soit 15 104 ticks de 50 Hz(environ 302 secondes réelles). Ce délai est proche d'une heure de l'horloge du jeu,mais ne se déclenche pas au changement du chiffre des heures.La routine parcourt les pièces 1 à 62 dans l'ordre. Pour chaque ennemi présent audébut du traitement d'une pièce :- Le tirage utilise `R & 7`. Les résultats 6 ou 7 laissent cet ennemi sur place.- Les six autres choix correspondent à nord, est, sud, ouest, descendre, monter.- Un passage doit avoir le code 0 ou 20. Une destination doit être une pièce 1 à 62 avec moins de cinq ennemis. L'ascenseur 63 et les extérieurs sont exclus.- Un échec de passage ou de destination permet de retenter, au plus dix fois.- Le déplacement modifie immédiatement les deux pièces. Un ennemi peut donc être traité à nouveau s'il atteint une pièce visitée plus tard dans le parcours.Après les déplacements, les accès nord de 19, est de 31 et ouest de 32 peuvent chacunajouter un ennemi. Le code de passage 10 bloque cet ajout ; le code 30 d'une portefermée ne le bloque pas. Une pièce contenant cinq ennemis n'en reçoit pas davantage.Chaque ajout incrémente aussi le compteur `#6621`, utilisé avant l'arrivée des pillards.`probe-enemy-gates.py` compare trois préconditions contrôlées : accès barricadés,portes simplement fermées et pièces d'entrée saturées. Les états des portes et, dansle dernier cas, les populations de ces trois pièces sont préparés. Le programmeoriginal effectue ensuite seul ses déplacements, ses ajouts et ses changements de quota.`verify-enemy-clock.py` vérifie 17 propriétés, y compris les couples d'écrituressource/destination et la conservation du nombre d'ennemis hors nouvelles entrées.## Transcription et limitesLe prototype utilise la même cadence, le même ordre de parcours, les mêmes passages,capacités et portes d'entrée. Un générateur de 16 bits remplace le registre matériel R.Sa séquence ne reproduit pas celle d'un Z80 ; sa graine est sauvegardée pour conserverla suite d'une partie. Les multiplications restent dans les limites des entiers signés32 bits de PHP/WASM.La sauvegarde 0.7 conserve `enemyTicks`, `enemySeed` et le quota devenu variable.Les formats 0.2 à 0.6 restent chargés ; leur délai de circulation repart à zéro.Après l'arrivée des pillards, le prototype conserve le quota terminé pour le suivi,alors que le compteur natif est réutilisé : il ne conditionne plus l'arrivée à ce stade.`EnemyClockTest` vérifie cadence, pause, migration des sauvegardes, reprise du mêmetirage, capacité, exclusion de l'ascenseur et quota variable. `QuestRouteTest` attendune période depuis une nouvelle partie puis termine la quête sans fournir d'objet,de position, de santé ou d'ennemi. Le parcours de nettoyage suit le quota et permetplusieurs passages si les ennemis ont changé de pièce.`browser-enemy-clock.cjs` prépare uniquement la graine et un délai proche de son seuil,puis laisse les images du navigateur déclencher la mise à jour. Il vérifie les comptes,le quota, la pause et la sauvegarde. C'est un contrôle isolé, distinct du parcours neufau clavier dans `browser-escape.cjs`.Les règles de tir, de dégâts et d'armes blanches restent provisoires. Cette versionn'ajoute pas un système de munitions supposé : l'analyse de leurs routines doit continuer.## Validation du 31 octobre 2026- 17 contrôles dans l'original et 40 tests PHP passent, avec analyse statique, syntaxe et démarrage de 600 images.- L'évasion locale et publiée complète passe avec les quatre survivants. Le test du modèle attend également une première période avant de chercher les objets et suit le quota augmenté.- Le parcours publié au clavier s'est terminé avant le premier cycle de déplacement. Le contrôle d'horloge séparé exerce ce cycle dans le navigateur ; il ne faut pas présenter ce parcours rapide comme une traversée naturelle avec plusieurs cycles observés.- Les contrôles navigateur local et publié confirment les déplacements, le passage du quota de 34 à 37, la pause et la sauvegarde/reprise du délai et de la graine.- Les pages locale et publiée passent les contrôles ordinateur/téléphone.- Le délai maximal de démarrage des tests est porté à trois minutes : le téléchargement à froid du moteur partagé a dépassé une minute lors des contrôles en ligne.