Aujourd'hui, voici un champ de fleurs ensoleillé sur ta NumWorks.
Cette création utilise le module Pythonturtle pour tracer par rotations pas moins de 240 quadrilatères :
160 pour les 4 fleurs
80 pour le soleil
Elle est l'œuvre de Charlie, élève de Seconde disciple de cent20 au lycée Louis Pasteur à Avignon, réalisée dans le contexte du DM de Mathématiques n°21 les mathématiques sont belles.
Aujourd'hui, nouvelle mise à jour 15.5.0 pour ta NumWorks.
Il ne semble quasiment pas y avoir de nouveautés visibles pour l'utilisateur, la page officielle ne faisant qu'annoncer à l'identique les fonctionnalités déjà introduites par la version précédente 15.3.0.
La seule chose visible semble être dans l'application Paramètres à l'écran À propos. Sur la ligne Version du logiciel, tu pouvais appuyer sur
OK
afin de basculer l'affichage entre :
la version du logiciel installé sur la calculatrice
et l'identifiant du dernier commit au code source pris en compte lors de la compilation de cette version
Nouveauté donc, c'est désormais entre 3 valeurs que la touche
OK
te permet de basculer sur la ligne en question.
Nos NumWorks N0100 et N0110 affichent alors un mystérieux 00.00 comme 3ème valeur.
Mine de rien, ce pauvre 00.00 est en fait le pot aux roses qui nous fait découvrir quelque chose d'énorme.
La NumWorks N0100 était donc sortie pour la rentrée 2017, et son successeur NumWorks N0110 pour la rentrée 2019, ce qui laissait supposer jusqu'à présent un cycle de renouvellement matériel de 2 ans.
Et bien ça n'a pas manqué, selon le code source les seules valeurs affichables à ce jour sont 00.00 et 03.43, cette dernière correspondant bien à une nouvelle révision du matériel de la calculatrice !
Oui oui, il semble que NumWorks nous ait prévu une belle surprise pour la rentrée 2021, une nouvelle calculatrice NumWorks !
Si l'on se fie au code source, la nouvelle NumWorks de rentrée 2021 ne changerait cette fois-ci pas de référence de modèle gravé au dos du boîtier, toujours NumWorks N0110. Cette nouvelle calculatrice pourrait donc être appelée à ce jour NumWorks N0110 r3.43.
Toujours selon le code source, nous aurons droit à une nouvelle puce de mémoire Flash. Nous restons chez le fondeur Adesto mais passerions de la AT25SF641 à la AT25SF641B. Pas de changement de capacité toutefois, nous restons sur du 8 Mio.
Mais pour qu'il ait été jugé pertinent d'afficher désormais la révision du matériel, c'est que cela doit bien avoir des conséquences pour l'utilisateur d'une façon ou d'une autre...
Et effectivement ce n'est pas tout, le code source semble également indiquer le passage à un tout nouveau microcontrôleur, avec peut-être ici de bonnes nouvelles sur le processeur et la mémoire RAM, mystère encore à ce jour... mais nous avons hâte de découvrir, tester et t'annoncer tout cela aussi précisément que possible.
Pour la rentrée 2019, NumWorks te sortait une coque collector en édition limitée pour sa calculatrice, la Macaremaths, illustrée tout en humour et talent sur le thème des Mathématiques.
Dans le même genre NumWorks renouvelle l'expérience en mieux cette année scolaire 2020-2021. Tu as déjà eu plusieurs opportunités d'habiller ta calculatrice de façon unique au monde ; tu as déjà eu l'occasion de gagner les coques édition limitée de :
Les interpréteurs MicroPython ou similaires qui tournent sur nos calculatrices font appel à différents types de mémoires :
La mémoire de stockage, qui contient physiquement tes scripts prêts à l'emploi.
La pile (stack) qui référence, à l'exécution, les objets Python créés. Sa capacité limite donc le nombre d'objets Python pouvant coexister simultanément en mémoire.
Le tas (heap) qui stocke, à l'exécution, le contenu des objets Python créés. Il limite donc la taille globale utilisée pour les données de ces différents objets.
Le langage Python est un très gros consommateur de mémoire heap. En effet sur les plateformes 32 bits, un entier nul occupe déjà pas moins de 24 octets. Alors imagine tout le reste...
Tout ceci pour dire que la mémoire heap sera très souvent le facteur limitant lors de tes projets Python sur calculatrices.
Afin de te permettre de choisir ton modèle en toute connaissance de cause, nous t'avions déjà communiqué un classement des différents modèles Python par capacité heap :
101,262 Ko : Casio Graph 35+E II / fx-9750/9860GIII
64,954 Ko : NumWorks(firmware Omega + appli KhiCAS)
33,545 Ko : NumWorks
32,648 Ko : Casio Graph 35+E II / 35/75/85/95(SH3) / fx-9750/9860GIII / fx-9750/9860GII(SH3) / fx-9860G(appli CasioPython)
23,685 Ko : TI-83 Premium CE + TI-Python(firmware tiers)
20,839 Ko : TI-83 Premium CE + TI-Python
18,354 Ko : TI-83 Premium CE Edition Python / TI-84 Plus CE Python Edition
De nouveaux éléments concernant la NumWorks nécessitent aujourd'hui la mise à jour de ce classement : une bonne et une mauvaise nouvelle. Commençons par la mauvaise.
Sur NumWorks N0110, tu as la possibilité d'installer KhiCAS, une application t'offrant un environnement intégré de Mathématiques et de Sciences développé par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, en parallèle de son logiciel Xcas pour ordinateur. Elle intègre nombre de choses : moteur de calcul formel GIAC, bibliothèques d'unités et de constantes physiques, application tableur, application de tableau périodique des éléments, langages de programmation Python et Xcas, ...
Le firmware officiel ne gérant pas les applications additionnelles, pour l'installer il te fallait commencer par passer ta calculatrice sous un firmware tiers, comme par exemple Omega. Or, l'application KhiCAS distribuée sur la page du firmware tiers Omega est sûrement suffisante pour nombre de choses, mais n'est pas stable.
Si tu es un utilisateur exigeant de KhiCAS, il te faut une version aussi fiable que possible et elle existe ; il te suffit de prendre l'application KhiCAS distribuée pour Delta, un autre firmware tiers.
Mise à part la gestion des applications, Delta apporte beaucoup moins d'améliorations qu'Omega, et malheureusement ces deux éditions de l'application KhiCAS ne sont pas interchangeables. En attendant une éventuelle résolution du problème, nous nous devons donc de tenir compte de Delta au classement.
D'autre part, nous ne l'avions pas remarqué mais Omega a changé la capacité du heapPython à compter de sa version 1.21 un peu plus tôt cette année...
Alors découvrons tout cela sans plus attendre.
Le module Python standard gc permet de connaître la capacité exacte du heap, d'un simple appel gc.mem_alloc() + gc.mem_free(). Toutefois, toutes les calculatrices Python n'intègrent pas ce module.
Afin de pouvoir faire des comparaisons équitables, nous construisons notre propre script d'estimation de la capacité heap. Il utilise les tailles des objets Python suivantes, valides pour les plateformes 32 bits que sont à ce jour nos calculatrices :
pour un entier nul : 24 octets déjà...
pour un entier court non nul (codable sur 31 bits + 1 bit de signe) : 28 octets
pour un entier long :
28 octets
+ 4 octets pour chaque groupe de 30 bits utilisé par son écriture binaire au-delà des 31 bits précédents
pour une chaîne :
49 octets
+ 1 octet par caractère
pour une liste :
64 octets
+ 8 octets par élément
+ les tailles de chaque élément
Notre script va tenter de remplir le heap. Il utilise pour cela plusieurs objets qu'il va tenter de faire grandir chacun son tour, jusqu'à déclenchement d'une erreur, et retourner alors le calcul de la capacité ainsi consommée.
Nous récupérerons de plus la plus grand taille d'objet que nous avons réussi à utiliser lors de ce test, on t'explique de suite.
def size(o): t = type(o) s = t == str and 49 + len(o) if t == int: s = 24 while o: s += 4 o >>= 30 elif t == list: s = 64 + 8*len(o) for so in o: s += size(so) return s
Selon l'état de l'interpréteur Python, la capacité retournée par un appel mem() peut légèrement varier. Aussi lancerons-nous le test plusieurs fois et conserverons-nous la valeur maximale, voici une fonction en ce sens :
def testmem(): m1, m2 = 0, 0 while 1: t1, t2 = mem(0) if t1 > m1 or t2 > m2: m1 = max(t1, m1) m2 = max(t2, m2) input(str((m1,m2)))
Sur les NumWorks munies du firmware officiel Epsilon nous trouvons 32,526 Ko, et c'était pareil avec le firmware tiers Omega jusqu'à la version 1.20.3.
Sur la NumWorks N0110 munie du firmware tiers Delta, nous trouvons nettement moins pour le heap de l'application Python officielle, seulement 24,179 Ko.
Est-ce cette économie de mémoire qui permet à KhiCAS de fonctionner correctement ? En tous cas l'interpréteur Python de KhiCAS retourne pour le même test la superbe capacité de 63,898 Ko.
Si tu munis maintenant ta NumWorks des dernières version 1.21 du firmware tiers Omega, tu obtiens alors une fantastique capacité heap de désormais 98,928 Ko !
Avec la nouvelle capacité heapPython de près de 100 Ko dans Omega 1.21, ta NumWorks a enfin presque terminé de rattraper son retard sur la Casio Graph 35+E II bien moins chère !
Précisons que pour être aussi exact que possible, il faut rajouter à ces valeurs de retour la consommation mémoire des définitions du script, soit 1,056 Ko.
La Touhou Bad Apple Demo est un phénomène mondial depuis le début des années 2010 :
Tout commence en 1996 au Japon sur le microordinateur Nec PC-98 avec Touhou Project, une série de jeux vidéo shoot 'em up extrêmes. En effet il s'agit d'un sous-genre particulièrement difficile, le manic shooter, où la globalité de l'écran est souvent littéralement tapissée de projectiles. La difficulté infernale n'empêche pas des qualités qui feront son énorme succès : un gameplay addictif, des visuels colorés, des personnages récurrents très typés mangas.
En 1998 sort le 4ème jeu de la série, Lotus Land Story, pour le moment toujours sur PC-98.
En 2007 la musique de fond de son 3ème niveau est remixée dans une version étendue par Masayoshi Minoshima, avec ajout de la voix de la chanteuse J-Pop Nomico.
En 2008, Nico Nico Douga publie un scénarimage d'une séquence animée mettant en jeu les personnages du monde Touhou et se voulant accompagner le remix.
En 2009 un groupe collaboratif conduit par Anira termine de mettre la chose en images. La séquence anime de façon extrêmement lisse des silhouettes en noir et blanc avec une esthétique manga-magical-girl. Le succès est immédiat et mondial.
Mais la séquence intéresse particulièrement la sphère des demo makers, la Touhou Bad Apple Demo était née. Les communautés de programmeurs rivalisent d'ingéniosité pour porter aussi fidèlement que possible la Bad Apple Demo sur nombre d'anciennes machines que l'on pensait incapables de jouer des vidéos.
L'affichage en noir et blanc rend en effet le défi hautement intéressant, permettant ici un bel éventail d'astuces techniques allégeant la complexité des algorithmes. Il n'y a que 2 couleurs, cela se prête a priori bien à une compression de chaque image en RLE 1 bit, mais en prime d'une image à la suivante il n'y a la plupart du temps qu'une large minorité de pixels qui changent de couleur, ce qui ouvre également la voie à des compressions au niveau de la vidéo.
C'est donc à qui combinera les meilleures astuces en fonction de la plateforme ciblée. On peut citer nombre d'exploits avec des portages :
pour microordinateurs remontant jusqu'au début des années 1980 : IBM 5150(1981), Commodore 64(1982), Atari STE(1985), ...
pour consoles de jeux jusqu'à la fin des années 1970 : Atari 2600(1977), Vectrex(1982), Nintendo NES(1988), Sega Master System(1985), Sega Megadrive / Genesis(1988), ...
Dans les communautés de calculatrices, nous n'avons pas échappé au phénomène. Et quoi de mieux à l'époque qu'une calculatrice graphique pour jouer une animation monochrome ?
Nous ne retiendrons pour la suite que les démos Bad Apple effectivement codées pour les calculatrices sur lesquelles elles tournent.
C'est-à-dire que nous excluons d'autres façons de faire, comme :
les vidéos Bad Apple lues via un lecteur de vidéo
les homebrewBad Apple jouées via un émulateur
C'est en décembre 2013 que fb39ca4 sort la première véritable démo Bad Apple du monde des calculatrices Texas Instruments, prenant la forme d'une application .8xk de 1,4 Mo pour TI-83 Plus et TI-84 Plus monochromes.
Précisons qu'avec une telle taille, elle ne peut être installée que sur les modèles supérieurs offrant 1,5 Mo de mémoire d'archive : TI-83 Plus Silver Edition, TI-83 Plus.fr USB, TI-84 Plus Silver Edition et TI-84 Plus Pocket SE.
Codée en langage assembleur z80, la démo jouée en plein écran 96×64 pixels impressionne de part sa fluidité et surtout inclut cette fois-ci enfin le son !
Le son est produit sur le port mini-Jack 2.5 supprimé des modèles plus récents, et nécessite donc un adaptateurmini-Jack 2.5 mâle ↔ mini-Jack 3.5 femelle.
À noter qu'il ne s'agit pas de la version originale mais, comme tu pourras vérifier sur la vidéo ci-dessous, d'un réarrangement instrumental (style musique électronique MIDI) adapté aux capacités de la machine et particulièrement au fait que nous n'avons maintenant quasiment plus de place en mémoire :
En 2015 c'est maintenant ac100v qui reprend le flambeau, mais cette fois-ci sur la scène Casio, avec ici encore une démo Bad Apple avec son et image !
Elle prend la forme d'une application .g1a qui n'est pas compatible avec les dernières calculatrices de génération USB Power Graphic 3(Graph 35+E II et fx-9750/9860GIII), mais seulement avec les :
USB Power Graphic(processeur SH3 - Graph 35+USBGraph 75/85/95fx-9750GII / fx-9860G/GII)
USB Power Graphic 2(processeur SH4 - Graph 35+E/USBGraph 75/95fx-9750/9860GII)
L'application ne fait que 6 Ko mais va en fait chercher ses données dans 2 fichiers externes à transférer :
un fichier .vid de 535 Ko pour l'animation
et un fichier .aud de 770 Ko pour le son
Taille totale comparable de 1,27 Mo ce qui occupe à nouveau une très grande partie de la mémoire de stockage.
L'écran est ici plus large que le format d'affichage de la démo, puisque faisant 128×64 pixels. La démo, ici codée en langage C, est en fait jouée en 85×64 pixels, laissant des bandes noires latérales n'ayant pas besoin d'être rafraichies, ce qui est justement une astuce d'optimisation.
Mais énorme surprise, ici nous avons droit à la piste audio originale grâce au même adaptateur !
Il s'agissait ici d'une application .g3a dédiée à la Casio Graph 90+E ainsi qu'aux modèles internationaux ou plus anciens fx-CG10/20/50.
La démo est ici encore codée en langage C sur 64×56 pixels, puis affichée avec un grossissement de 4 sur 256×224 pixels, laissant donc ici une bande blanche à droite.
Cet exploit a donné envie à M4x1m3 d'offrir maintenant la démo Bad Apple à une autre calculatrice couleur, la vénérable NumWorks !
Plus exactement elle prend la forme d'une application pour le firmware tiers Omega, et n'est donc installable que sur NumWorks N0110.
Attention l'application est de grande taille, tu ne peux plus faire rentrer toutes les autres applications disponibles.
C'est d'ailleurs bien dommage que la page Omega d'installation d'applications n'affiche pas les tailles à ce jour, ce serait désormais une information essentielle pour effectuer son choix.
La démo est jouée en 320×240 pixels. Toutefois, pas de son sortant de la calculatrice pour le moment. Espérons que cela arrive un jour... courage M4x1m3 !