Memory Full

Mini-meeting

Glop Meeting 2022

25 Feb - 27 Feb 2022

Valence

Organizer(s): Roudoudou

7 Participants

AsT, Barjack, Beb, MacDeath, Roudoudou, Solorenzero, TotO

Additional info

Were also present: Alice, Cicile, Goodchip

Report



Décision un peu tardive de l’orga, les dates du Glop Meeting 2 sont connues 10 jours à l’avance. J’envoie des mails dans la précipitation à un peu tous les demomakers des environs. Certains pourront, d’autres pas, le meeting est parti pour se faire en plus petit comité que le premier. Seront présents : Alice, AsT, Barjack, Beb, Cicile, Goodchip, MacDeath, Roudoudou, Solorenzero et TotO.

image
Use the force Duke!


AsT arrive le premier, il fait ça à chaque fois pour se réserver la meilleure place des dortoirs. Oui, cette année, je suis tout seul pour quelques jours, tout l’étage peut servir à dormir et la salle des machines a aussi un peu évolué, 4 bureaux et multi-prises à volonté. Bon, en même temps on a rarement plus de 3 CPC actifs mais c’est bien d’être à l’aise, on sait que TotO ramène à chaque fois dix tonnes de bordel, entre les pièces détachées et son stand portatif de bricolage…

La première soirée se focalise autour du FDC, un jeu Basic peu connu avec une bonne protection attire mon attention, il utilise une protection GAP. Vu que cela veut tout dire et rien dire, je ne remarque rien de plus que des octets de GAP3 avec une valeur de #F7 au lieu de l’obligatoire #4E. Serait-il possible de ruser pour avoir quelque chose qui ressemble à l’original au point de tromper la protection ? Refaire la disquette à l’identique est impossible avec un CPC mais on peut tenter de faire quelque chose de ressemblant à base de secteurs écrasés dont on aura pris soin de calculer la vraie GAP de façon à ce que les données de fin du secteur écrasés deviennent des données de GAP3.

Après quelques gribouillages sur papier pour s’assurer du bien fondé des calculs (je sais, je me répète mais j’adore crossdev au papier+crayon), on peut faire une piste qui -si elle est différente de l’original- contient presque toutes les informations utiles du DSK de dump, ça se tente! Je modifie mon outil de génération pour intégrer que l’écriture des secteurs de fausse GAP doit se faire avant celle des secteurs utiles, on recompile, on exporte et on teste sur un Gotek pour commencer, vu que c’est plus précis qu’un lecteur à moteur. On valide par étapes !

Premier souci : si on fait une fausse GAP avec des données, cela sous-entend que le secteur va se terminer par une vraie GAP et donc que la taille de la piste sera supérieure à celle d’origine. Premier écueil, ça ne passe pas avec un HFE qui décrit la piste comme tournant à 300 tours/minute. Mais comme j’avais testé pour un article sur le FDC, la tolérance de lecture de ce dernier, je savais qu’on pouvait créer des HFE moins standards avec des pistes plus longues et/ou un débit différent. On se pose sur une piste allongée et donc une vitesse de rotation plus faible. Quelques modifications plus tard, j’ai une disquette vierge avec des pistes longues et une vitesse plus calme qui me permettra d’écrire toute la piste !

image
On voit un octet de gap #4E après le CRC ainsi qu’une valeur parasite #3B mais à ces approximations près, le ReadTrack nous montre bien notre fausse GAP gavée de #F7 !


Tout semble se dérouler correctement, un petit tour dans Discology nous montre que la piste ne contient pas les secteurs de fausse GAP, on lance Orgams pour utiliser la fameuse instruction ReadTrack et voir si notre fausse GAP est bien présente. La réponse est oui ! La seule différence est l’insertion d’un octet #4E entre le CRC de fin du secteur, éventuellement un octet de garbage et la GAP remplie de #F7 (voir illustration). On lance alors le jeu qu’on voit tester la protection, mais sans nous dire si tout va bien ou pas. J’apprendrai le lendemain que la protection du jeu bloque certaines actions plus tardivement. Comment savoir si notre tour de passe a bien fonctionné? Il faudrait désassembler le loader pour vérifier que la protection fonctionne, ce que je suis en fait en train de faire tout en rédigeant ce CR.

Après une petite trace, on peut voir que le loader inscrit en #A0DE le 519è octet lu en lecture piste, il va donc sauter les 512 octets de données, les 2 octets du CRC, notre octet un peu foireux de GAP et ensuite se retrouver sur notre fausse GAP à lire des #F7 comme sur l’original. Encore une victoire de canard ! L’outil est dispo ici pour ceux qui aiment mettre les mains dans le camboui.

LE REPOOOOOOOOOOOOOOORT!
Promis, je ne suis pas en train de vous faire en douce “À la découverte du FDC – épisode 6”, c’est juste que le FDC fût le premier sujet de ce meeting !

Le lendemain nous continuerons les travaux pratiques avec la création d’une disquette de la 5KB Demo 3 fonctionnelle avec le loader classique (sans rupture et sans musique). En effet, l’utilisation du loader musical et du loader musical+rupture active un mécanisme de vérification car il devient imprévisible de savoir quels secteurs sont lus (ils ont tous le même nom). Par contre dans le cas du loader classique, les secteurs sont lus en entrelacés. Les temps de préparation d’une lecture FDC (entre 1800 et 3800 nops) font qu’il ne peut pas lire les secteurs en ligne SAUUUUUUFFF. Sauf si l’émulateur ne simule pas ce temps d’attente OUUUUUUUUUUUUU… Ou sauf si le dump que j’avais réalisé à l’époque au Croco Channel avec CPDRead avait mis n’importe quoi dans la taille de GAP3 ! Un bref calcul avec mon outil d’export indique qu’une GAP plus courte serait de mise pour tenir dans la norme (6250 octets). Je le laisse faire, j’écris une disquette physique de la démo et oh miracle, tous les loaders fonctionnent ! Comme attendu j’ai envie de dire ;) On terminera en faisant un gros source Orgams compilant la plupart de mes routines avec ce qui a déjà été publié dans la série d’articles sur 64 NOPs.

Le vendredi se passe calmement, TotO arrive en début d’après-midi. L’ambiance est studieuse, on teste différentes cartes. Alice (ma plus petite) découvre le Zelda de Zisquier, on prépare un peu le gros repas du soir en attendant que le reste de la troupe débarque. En moins de 30 min, Solorenzero, Beb et Barjack déboulent, ça commence à gueuler (alors que tout le monde est toujours à jeun). On fait péter les chips, le champagne et le guacamole (indispensable).

image
Alice concentrée sur sa quête


VANITY EXCLUSIVE PREVIEWS
Beb n’est pas venu les mains vides, un HFE sur une carte trainait dans sa poche. Pour une raison obscure que j’ai oubliée, les lecteurs ne reconnaissent pas l’image disque (une histoire de sous-répertoire je crois). Je copie donc le fichier sur mon ordinateur (héhéhéhéhé) avant de le mettre sur une de mes clefs (héhéhéhéhé) pour le regarder sur un des CPC qui accepterait le fichier (héhéhéhéhé). On met la fameuse clef sur le CPC, tout fonctionne (héhéhéhéhé).

Arg ! Encore une démo CRTC-1 ! Vanity est pardonné, c’est vraiment très beau et l’exploit technique est une fois de plus de mise. Je ne peux pas en dire plus, j’ai un couteau sous la gorge (mais peut-être que si je vais voir ma corbeille… héhéhéhéhé) et de toutes façons Hicks va relire ce compte-rendu. Alors je peux juste dire que ce que nous avons vu reste dans le style traditionnel, mais avec du cassage de cul. Ou des baffes ! Enfin vous avez compris le principe !

Histoire d’amuser la galerie, je formate la disquette pour effacer toute copie avec Formatata. (un gros sample de Ken le survivant qui fait tatatatatatata pendant que ça formate…)

TEAM BUILDING

image
Barjack, MacDeath, Beb


Nous refaisons le monde dans le salon, une bière à la main. Genre : t’as vu Macr– il est trop c–, t’as vu Pout— c’est une petite p—… Puéril mais ça détend un peu. Nous nous octroierons une petite pause musicale avec une preview que Megachur a envoyé en avant-première (ça doit sortir bientôt) : c’est une sélection de morceaux composés par David Whittaker sur Atari ST. Megachur s’est attaqué à un total de 90 morceaux différents. Heureusement pour lui (je cite) “75% des players sont identiques [il a] donc pu faire en gros 4 catégories : custom, player 198x, player 1989 et le dernier player avec des variations sur les datas”.

Les players ont été traduits depuis le 68000 et adaptés en Z80. C’est qu’on bosse en réunion dis-donc !

La soirée se terminera avec plus d’alcool dans le sang qu’il n’en faut pour nettoyer un CPC.

SAMEDI

image
Ouais, j’fais collec !


Les plus vaillants sont levés tôt, l’ambiance est studieuse. Je profite de l’expertise des meilleurs en changement de courroie pour me dépuceler de la chose. Vu que j’ai un stock d’alcool à 90°C (qui ne peut pas se boire, je précise), je sors les cotons tiges et c’est parti pour gratter les deux roues. À force de frotter comme un con, l’ensemble de la purée de courroie finit par s’enlever. La courroie semblait un peu lâche et la première disquette mise dans le lecteur nous ayant fait un Read Fail, j’ai pensé que c’était le problème mais non, le souci était bien la disquette. Ouf ! Que d’émotions !

image
TotO qui fait des nappes de bon matin


TotO met en place un stand Alcon 2020 et nous sort au passage une boite du jeu (qui n’est toujours pas sorti, je le rappelle, mais bientôt, bientôt !). 512Ko de graphs et de code en ROM, ça le fait bien. Le jeu est très jouable et après plusieurs tâtonnements, Abalore s’est résolu à le faire tourner en 25Hz. TotO est content, les trames fonctionnent encore mieux. Le joueur est content aussi, c’est fluide à souhait !

J’avais laissé traîner négligemment mon exemplaire d’Amstrad Cent pour Cent n°50 sur le bureau. Il faut dire qu’il attire l’œil. La curiosité faisant le reste, il fût pas mal feuilleté. D’autres livres achetés à la faveur du confinement aussi, en particulier la série “Breakin’ the borders / Beyond the borders” qui retrace l’épopée des démos plein écran sur Atari ST. Moins de passion pour le Press Start (y a pas d’images c’est pour ça) ou celui des premières démos Amiga. Barjack en a profité pour apprendre des techniques de dessin, c’est bien là l’essentiel.

À défaut de récupérer des graphs pour Bubble Quest, c’est néanmoins l’occasion de présenter les nouveautés cachées du code et de faire une lecture commentée d’un des fichiers descriptifs de niveau de Bubble Quest pour montrer que les développements à venir ne contiendront pas un gramme d’assembleur, tout en étant quand même en assembleur et optimisés. Traduction : j’ai fait plein de macros pour me faciliter la vie et le reste du développement se bornera à les utiliser.

Le meeting infiltré par Cicile et Goodchip, on en profite pour parler de l’inscription de la démoscène au patrimoine immatériel culturel de l’Unesco, comme ce fût le cas en Allemagne. Le dossier continue son petit bonhomme de chemin. L’idée étant que le maintien de cette mémoire ne soit plus financé et tenue par des entités privées et faillibles, comme ce fût le cas dans le passé avec à chaque couac, des pertes définitives. TotO en profite pour échanger avec Sylvain à propos de son projet de fornication contre nature entre un Atari et un Amiga. Je n’en sais pas plus, la conversation avait dérivé de notre côté sur les plus belles remontées de sprint en athlétisme.

Le repas du soir ne déroge pas à la traditionnelle fournée de pizzas maison, environ 1.5kg de farine et un énorme saladier de pâte goooonnnnflée ont tout juste suffit à rassasier les participants.

TotO et Alice ont monopolisé un des Plus pendant toute une partie de la soirée (j’ai cru qu’ils n’allaient pas nous rejoindre à table !) afin de terminer “La culotte de Zelda” qui ne dispose pas de sauvegarde. Une fois le coup de main pris, on peut utiliser les défauts du jeu pour farmer des clefs ou des pièces sur les écrans où on est sûr qu’elles apparaissent à chaque fois. Bilan : deux donjons terminés et une fan de Zelda en plus. MacDeath passera aussi en coup de vent dans la soirée pour se rincer le gosier et sociabiliser un peu.

image
Barjack, Solorenzero, Beb dans l’fond, MacDeath, TotO


EOF

Photos by ast

Photos by roudoudou