Journal des versions¶
Changements côté joueur uniquement — refactors internes, commits de test et commits de documentation seule sont omis, sauf quand une release ne contient que ça. Historique complet des commits : vue comparative GitHub.
v0.2.3 — 2026-10-31¶
Version stable des bêtas 0.2.2 et 0.2.3 (détails dans leurs entrées ci-dessous).
- Plus de marge dans les combats chargés : les verrous et lectures d'horloge du jeu coûtent 3 à 4× moins cher sur console (patrouille de l'acte V : 6 % de travail en moins par image).
- Fini le son qui grésille ou se coupe dans les combats chargés (limiteur de sortie, fil audio sorti du cœur graphique).
- Les appuis courts ne sont plus perdus quand les fps chutent, et un tap rapide du bouton de visée attaque/clique une fois (un joueur le confirme sur console avec la 0.2.3-beta).
- La version affichée par la Vita suit désormais la release (
APP_VER00.23 au lieu de 00.00).
v0.2.3-beta — 2026-10-17¶
- Fini le son qui grésille dans les combats chargés. Avec plus de 10
sons à la fois (Nova de givre dans un groupe, Trône de Baal), le mixage
dépassait la pleine échelle et était écrêté ; un limiteur de sortie baisse
désormais tout le mix un instant.
D2_SONLIMIT=0dansenv.txtremet l'ancien comportement. - Fini les coupures du son dans les scènes lourdes : le fil audio passe
sur un cœur où le vidage graphique ne le retarde plus (
D2_SONCPU=1remet l'ancien placement). - Les appuis courts ne sont plus perdus quand les fps chutent : chaque changement de bouton ou du tactile entre deux images lentes est vu, et un tap rapide du bouton de visée attaque/clique une fois.
Validation : son — console (limiteur : 7 passes, échantillons écrêtés ~49 000–500 000 → 16–399 par passe ; cœur audio : 6 passes au Trône de Baal, paquets de son en retard 2/47 → 0/0 ; aucun coût en fps sur la patrouille de l'acte V). Commandes — tests hôte et qemu avec un jeu ralenti (12/12 appuis vus à ~3–5 fps, contre 4/12) ; pas encore testé sur console, dites-nous ce que ça donne. Le son figé et le gel du Repaire des asticots n'ont pas été reproduits.
v0.2.2-beta — 2026-10-15¶
- Plus de marge dans les combats chargés. Les verrous et les lectures
d'horloge du jeu (des milliers par image) ne passent plus par le verrou
global du runtime quand personne d'autre ne les tient : chaque appel coûte
3 à 4 fois moins cher sur une vraie console. La patrouille de l'acte V
demande 6 % de travail en moins par image (22,7 → 21,3 ms) ; dans les
scènes lourdes comme le Trône de Baal avec
/players 8, le gain est plus grand en valeur absolue (environ 3 ms par image, estimation), ce qui donne des fps là où le jeu passait sous 25. En cas de souci, ajoutezD2_FASTSYNC=0dansenv.txt.
Validation : console (microbanc et 3 contre 3 passes de patrouille acte V ; les passes du Trône ne sont pas tombées sur des scènes comparables, le chiffre en scène lourde est donc une estimation) ; qemu (pixels et suite d'horloge identiques). Le jeu en ligne n'a été vérifié que contre un serveur de test local (connexion, salon, création de partie) : signalez tout comportement étrange sur Battle.net.
v0.2.1 — 2026-10-09¶
Version stable des bêtas 0.2.1 (0.2.1-beta et 0.2.1-beta2 ; détails dans leurs entrées ci-dessous). Aucun changement depuis la 0.2.1-beta2.
- Scènes de sorts chargées plus fluides. L'Orbe de givre en continu passe
de ~22 img/s au plafond du jeu, 25 img/s, sur console réelle, avec ~3 ms
de marge par image : les dalles de sol Perspective, l'éclairage des
missiles, la reconstruction de la grille de lumière et la liaison des
textures du sol tournent en natif. Chaque partie se coupe dans
env.txt(D2_F3NATIF=0,NATIVELIGHTDISC=0,NATIVELIGHTDYN=0,D2_GRIDCACHE=0,D2_F3TEXNAT=0). - Le volume de la musique est conservé d'un lancement à l'autre. S'il est à 0 chez vous, réglez-le une dernière fois dans Options → Son.
- Un kubridge ancien (avant 0.3) ne fait plus planter le jeu au démarrage : un avis « TOO OLD » s'affiche et le jeu tourne sans lui.
- Panneau Settings de l'écran-titre (anciennement « Controls ») : un
nouvel onglet Game pour les principales options de
env.txt, appliquées au lancement suivant.
Installer le VPK complet (il contient le glide3x.dll dont l'accélération
des textures a besoin). Validation : performances mesurées sur console sur
le banc Orbe de givre uniquement (la patrouille de l'acte V n'a pas été
repassée) ; correction du volume vérifiée sur console ; détection de
kubridge confirmée sur console avec kubridge 0.3.1, le cas d'un kubridge
ancien venant du dump d'un joueur ; l'onglet « Game » est testé côté hôte
seulement.
v0.2.1-beta2 — 2026-10-06¶
Deux corrections par-dessus la 0.2.1-beta :
- Le volume de la musique est conservé. Il revenait à 0 à chaque lancement (D2 « restaurait » à l'activation de la fenêtre un volume qu'il n'avait jamais mémorisé). Si le vôtre est à 0, réglez-le une dernière fois dans Options → Son ; il reste désormais.
- Un kubridge ancien ne fait plus planter le jeu au démarrage. Un kubridge antérieur à la 0.3 se charge sous le même nom mais n'a pas ce qu'utilise D2Vita : le jeu se fermait sur une erreur C2 juste après le lancement. D2Vita affiche maintenant « KUBRIDGE PLUGIN TOO OLD (needs v0.3 or later) » et tourne sans lui. Installer kubridge 0.3.1 et redémarrer pour retrouver le grand cache JIT.
Validation : la correction du volume est vérifiée sur console (volume 50 conservé, remis à 0 avant) et sous qemu (le clavier fonctionne toujours). La détection de kubridge est confirmée sur console avec kubridge 0.3.1 (toujours détecté et utilisé) ; le cas d'un kubridge ancien vient du dump d'un joueur et n'a pas été reproduit sur matériel.
v0.2.1-beta — 2026-10-06¶
- Scènes de sorts chargées plus fluides. Une sorcière niveau 99 qui
lance l'Orbe de givre sans arrêt (des dizaines d'orbes et d'éclats à
l'écran, chacun avec sa lumière) passe de ~22 img/s au plafond du jeu,
25 img/s, sur console réelle, avec ~3 ms de marge par image. Quatre
morceaux du code du jeu tournent maintenant en natif au lieu d'être
traduits : les dalles de sol Perspective (optionnel jusqu'ici, désormais
par défaut), l'éclairage des missiles, la reconstruction de la grille de
lumière et la liaison des textures du sol. Chacun est vérifié octet par
octet contre le résultat du jeu lui-même. En cas de souci, chacun se
coupe dans
env.txt:D2_F3NATIF=0,NATIVELIGHTDISC=0,NATIVELIGHTDYN=0,D2_GRIDCACHE=0,D2_F3TEXNAT=0. - Panneau Settings de l'écran-titre (l'onglet « Controls » s'appelle
désormais « Settings ») : un troisième onglet, Game — résolution, zoom
640, forme des menus, remplissage du HUD, runewords ladder, reset d'Akara,
son, clavier automatique et son opacité, serveurs privés. Seules les
options modifiées sont écrites dans
env.txt; elles s'appliquent au lancement suivant.
Installer le VPK complet : l'accélération de la liaison des textures a
besoin du glide3x.dll qu'il contient (une ancienne DLL retombe simplement
sur le chemin plus lent). Validation : les chiffres de performance sont des
mesures console sur le nouveau banc Orbe de givre uniquement — la patrouille
de l'acte V n'a pas été repassée avec ces défauts. L'onglet « Game » est
testé côté hôte seulement et n'a pas encore tourné sur console. Retours
bienvenus.
v0.2.0 — 2026-10-03¶
Première version de la ligne 0.2 : le nouveau schéma manette et la visée assistée ne sont plus expérimentaux. Ce qui suit est la somme des bêtas 0.1.14–0.1.22 depuis la dernière version stable (0.1.13) ; le détail est dans l'entrée de chaque bêta.
- Un nouveau schéma manette avec visée assistée. Le stick droit est un
curseur libre ; L (le bouton de visée) va vers la meilleure cible et
l'attaque — monstre le plus proche du centre du cône, objet, item, sortie
de niveau ou votre cadavre — et fait un simple clic gauche quand il n'y en
a pas. Carré maintenu + L ramasse l'item en surbrillance. Remappable, avec
une couche
l+. - Le panneau Controls de l'écran-titre est un éditeur. Réaffectez
n'importe quel bouton (seul, avec R, avec L) et réglez le cône de visée,
la portée monstres et objets (
hostile_reach), la vitesse du curseur, la zone morte et les anneaux de marche au tactile ou à la croix ; à la fermeture, seul ce que vous avez changé est enregistré danscontrols.txt. controls.txtplus accueillant : une copie de référence entièrement commentée est livrée dans le VPK, une ligne invalide est signalée dansboot_progress.txt, les nombres hors plage sont refusés,diamond=offmasque le marqueur de visée.- Corrections d'affichage : panneaux inventaire, coffre et personnage centrés par défaut, ceintures multi-lignes qui ne scintillent plus, menus plus rognés après une partie en 640×480, décalage tactile corrigé en jeu.
- Deux options solo facultatives (désactivées par défaut) — voir v0.1.17-beta.
Validation : la logique manette et le panneau sont couverts par des tests hôte (ASan / UBSan) et le runtime par les portes de démarrage qemu-arm ; la visée assistée a été confirmée sur console dans la Tanière du Mal seulement, et l'éditeur Controls, le ciblage au cône et le clic sans cible n'ont pas encore été lancés sur console. Vos retours sont les bienvenus.
v0.1.22-beta — 2026-10-03¶
- Le panneau Controls de l'écran-titre est devenu un éditeur. Réaffectez
n'importe quel bouton (seul, avec R, avec L) et réglez le cône de visée,
la portée, la vitesse du curseur, la zone morte et les anneaux de marche,
au tactile ou à la croix directionnelle + Croix. Les changements
s'appliquent tout de suite ; à la fermeture, seul ce que vous avez changé
est enregistré dans
controls.txt, commentaires conservés. Lieraimalors qu'il ne l'était pas au lancement demande de relancer le jeu. Tests hôte et rendu hôte seulement : pas encore essayé sur console. - Le bouton de visée prend le monstre le plus proche du centre du cône,
jamais un monstre hors du cône, avec une portée plus longue et réglable
(
hostile_reach, défaut 800, 100–2000). Pas encore testé sur console. - Sans cible, le bouton de visée fait maintenant un clic gauche au curseur au lieu de ne rien faire. Pas encore testé sur console.
v0.1.21-beta — 2026-10-02¶
- Les menus ne sont plus rognés après une partie en 640×480. Le menu principal, le choix du personnage et le lobby Battle.net sont toujours en 800×600, mais quitter une partie dont le dernier mode vidéo était 640×480 (ou y passer en cours de partie, puis quitter) remettait l'écran en 640×480 : la droite et le bas des menus étaient coupés (plus de bouton Exit Diablo II). Confirmé sur console hors ligne (Sauvegarder et quitter depuis une partie en 640×480) ; le lobby Battle.net lui-même n'est pas encore re-testé en ligne.
- Le bouton de visée atteint votre cadavre depuis n'importe où à l'écran. Il n'était proposé qu'à portée, donc rien ne se passait de plus loin. Il reste la priorité la plus basse : un monstre, un objet, un item ou une sortie de niveau à portée passe toujours avant. Pas encore testé sur console (tests hôte seulement).
v0.1.20-beta — 2026-10-02¶
- Le bouton de visée entre dans les sorties de niveau (entrées de grotte, escaliers) : la sortie la plus proche est la cible de dernier recours quand aucun monstre, objet ou item n'est à portée. Confirmé sur console à l'entrée du Repaire du Mal.
- Le bouton de visée ne poursuit plus les marqueurs invisibles dans les
donjons (les unités
dummydu jeu, dont le Repaire du Mal est plein) : un monstre n'est une cible que si le jeu le déclare lui-même ciblable. Confirmé sur console. - Plus de marche automatique sans fin : quand la cible meurt ou disparaît bouton de visée maintenu, le personnage s'arrête au lieu de continuer à marcher.
v0.1.19-beta — 2026-10-01¶
- Coffre-fort, point de passage, coffres, portail de ville et portes sont de nouveau ciblés par le bouton de visée. Un objet que le jeu déclare ciblable n'est plus écarté définitivement après un survol lent (le jeu ne répond qu'après une image dessinée), et un objet que le jeu survole déjà l'emporte sur notre propre boîte de sélection. Pas encore confirmé sur console.
- Les meutes de critters non ciblables (geckos de l'acte III) ne cachent plus le vrai monstre derrière elles : la mémoire « le jeu ne le survole jamais » retient 32 unités au lieu de 8.
- Maintenir Carré et appuyer sur L ramasse l'objet au sol surligné (Croix marche toujours). L garde son rôle de visée quand il n'y a rien à ramasser.
diamond=offdanscontrols.txtmasque le losange de visée.- Lecture de
controls.txtplus stricte et plus sûre : les nombres hors plage (orbit=1000des anciennes versions,deadzone=15) sont refusés et signalés dansboot_progress.txtau lieu de rendre le personnage incontrôlable ; une faute de frappe dansl=(l=lclik) ne laisse plus L sans effet ;l=aim_assistest reconnu ; un BOM UTF-8 en début de fichier est ignoré.
v0.1.18-beta — 2026-09-29¶
- Nouveau schéma de manette par défaut — merci de le tester et de
donner votre avis sur Discord. L est désormais la visée assistée
(maintenu) : en jeu elle agit sur la meilleure cible (votre cadavre, ce
que pointe le curseur, un ennemi dans un cône, le coffre/la porte/le PNJ
le plus proche) ; dans les menus, les panneaux ouverts et hors partie,
c'est un simple clic gauche. Le stick gauche ne fait que marcher, le
stick droit est un curseur libre. Carré est l'aide aux objets
(étiquettes au sol, croix directionnelle pour parcourir, Croix pour
ramasser). L + Croix = inventaire, L + Rond = carte, L +
Carré = inventaire du mercenaire. Vitesse de stick 18, zone morte
0,15. Croix seule ne clique plus dans les menus — c'est L. Pour retrouver
l'ancien schéma, mettez
l=lclickdanscontrols.txt(sans autre liaisonaim). Les hooks de visée sont maintenant installés par défaut ; leur coût en temps d'image n'est pas encore mesuré. - La fenêtre d'ajout de socket de Larzuk accepte désormais le clic de visée (il ciblait la carte derrière elle). Premier essai sur console seulement.
- Écran-titre : le bouton d'aide « Controls » ne s'ouvre plus que depuis son petit onglet, et non plus depuis tout le bord gauche.
- Décalage du tactile corrigé en jeu.
Bêta : vérifiée à la main sur console pour les menus, les fenêtres de PNJ et le tactile ; les nouveaux défauts n'ont pas encore été testés par la communauté. Inclut les options de la 0.1.17-beta.
v0.1.17-beta — 2026-09-29¶
- Deux options pour le solo, désactivées par défaut (à ajouter dans
env.txt) : D2_RUNEWORDS_LADDER=1: les 23 runewords réservés au ladder (Spirit, Insight, Infinity…) se fabriquent en solo.D2_RESPEC_UNLIMITED=1: la réinitialisation « Reset Stat/Skill Points » d'Akara reste disponible après usage, une fois obtenue (la Tanière du Mal). Aucune n'agit en TCP/IP, Battle.net ouvert ou realm, et aucun fichier du jeu n'est modifié. Elles s'écartent volontairement du jeu d'origine, d'où l'activation manuelle.
Bêta : les deux ont été vérifiées sur une vraie console. Inclut les correctifs de la 0.1.16-beta.
v0.1.16-beta — 2026-09-28¶
- Les ceintures à plusieurs rangs ne clignotent plus. Survoler ou glisser des potions dans une ceinture ouverte de 2 à 4 rangs la faisait clignoter : le jeu recevait deux positions différentes pour la même case. C'est très probablement aussi pourquoi les potions refusaient parfois d'aller dans les rangs du haut — confirmez-le sur Discord.
controls.txt: les lignes décommentées du fichier de référence fonctionnent. Le fichier de référence écrit#l=lclick # commentaire; décommenter une ligne gardait le commentaire, et la ligne était rejetée (par exemplel=altlaissait L en clic gauche). Les commentaires après#et les espaces autour de=sont désormais ignorés.
Bêta : les deux correctifs ont été vérifiés sur une vraie console. Dites-nous sur Discord si quelque chose a régressé par rapport à la 0.1.15.
v0.1.15-beta — 2026-09-28¶
- Les panneaux inventaire, coffre et personnage sont désormais centrés
par défaut. Ils étaient ancrés aux bords de l'écran, avec une large
colonne noire entre deux panneaux ouverts ; ils forment maintenant un
seul bloc de 800 px de large (le modèle SGD2FreeRes), ce qui facilite le
glissement d'objets entre un inventaire et un coffre ouverts.
D2_RES_PANNEAUX=bords(ouedges) dansenv.txtrétablit l'ancien ancrage aux bords.
Bêta : le calcul d'ancrage lui-même n'a pas changé et avait déjà été mesuré sur console avant de devenir le défaut, mais personne n'a encore regardé deux panneaux côte à côte ouverts sur cette build précise. Dites- nous sur Discord si quelque chose a l'air ou se clique mal.
v0.1.14-beta — 2026-09-28¶
- Onglet « Controls » à l'écran-titre. Une petite icône dans la bande
gauche de l'écran-titre ouvre un panneau plein écran listant tous les
bindings réellement en vigueur — défauts + ce que
controls.txta changé — défilable au D-pad ou en glissant, fermé par Rond ou Start. - L, R et Select sont désormais remappables, sans toucher à leur rôle
de préfixe de couche combo :
l=/r=/select=danscontrols.txtchangent ce que ces boutons font seuls (défaut : clic gauche, clic droit, le menu radial). Une nouvelle couchel+fait le miroir de la coucher+existante et démarre entièrement libre, à remplir par chacun. - Une ligne fautive de
controls.txtle dit désormais. Un bouton inconnu, une action inconnue, ou un combo que Select n'a pas étaient auparavant ignorés en silence ; chaque ligne rejetée est maintenant nommée dansboot_progress.txt. - Une copie de référence entièrement commentée de
controls.txtest embarquée dans le VPK et copiée versux0:data/d2vita/controls.txtau tout premier démarrage du jeu — elle ne remplace jamais un fichier déjà présent.
Bêta : démarre proprement sur console réelle, mais personne n'a encore
testé à la main chaque nouveau remap (l=, r=, select=, la couche
l+). Retours bienvenus sur Discord avant que ça devienne la release par
défaut.
v0.1.13 — 2026-09-28¶
- Fini les à-coups de l'acte V. Sur la patrouille scriptée de Harrogath
(console réelle, 110 s), les images de plus de 60 ms passent de ~25 à 3,
et le fps atteint le plafond du jeu lui-même : 24,0 → 25,0 img/s. La cause
était chez nous : un limiteur de cadence à 25 Hz, écrit pour le jeu en
ligne, tournait aussi en solo (il s'armait dès que
D2NETétait présent, ce que la configuration par défaut fait toujours). Diablo II en solo dessine déjà exactement une image par pas de simulation de 40 ms ; le limiteur attendait un peu plus de 40 ms à chaque image, dérivait contre l'horloge du jeu, et le jeu sautait alors un dessin toutes les quelques secondes. Le limiteur est désormais désactivé par défaut. En ligne : il n'y a plus de limiteur non plus — pas encore remesuré en ligne ; si le jeu tourne trop vite dans une partie Battle.net,D2_ONLINE_CAP=25dansenv.txtrétablit l'ancien limiteur. - Moins de calcul par image (~1,6 ms sur le fil de jeu, ~5 % d'une
image). Les appels les plus fréquents du jeu vers le runtime (lectures
d'horloge, sections critiques — ~650 par image) sont servis depuis le code
traduit au lieu d'en sortir puis d'y revenir ; la DLL Glide ring copie les
sommets de la perspective en ligne ;
wsprintfAn'alloue plus. Charge du cœur principal sur la patrouille : ~77 % → ~74 %. Prouvé identique sous qemu (image identique au pixel sur 4000 images, test de contention des sections critiques) et mesuré sur console en passes entrelacées. - Moins de lectures carte quand du contenu neuf arrive : un saut lit désormais 32 Kio d'avance au lieu de 8 (~60 % de lectures carte en moins sur la patrouille), sans RAM supplémentaire.
- Sol en perspective natif (
D2_F3NATIF=1) plus rapide, toujours optionnel : servi en ligne et écrivant ses dessins directement, ~1,25 ms de plus par image sur la patrouille (0 divergence face au code du jeu sur 168 503 cellules comparées).
v0.1.12 — 2026-09-27¶
- Le sol en perspective ne clignote plus. Dans les scènes lourdes en perspective (la porte de Harrogath : ~1,3 Mo d'enregistrements Glide par image), le tampon de rendu ne pouvait pas contenir à la fois l'image en cours d'envoi au GPU sur le second cœur et la suivante, et la DLL Glide jetait en silence la fin de chaque image — un morceau de sol, différent à chaque image. Le fil d'envoi rend maintenant la place au fil de sa lecture au lieu d'attendre la fin de l'image. Console, à la porte, perspective ON : 0 enregistrement perdu, 24 img/s (un premier correctif qui envoyait ces images en synchrone supprimait le clignotement mais tombait à 9 img/s).
- L'option Résolution du jeu zoome de nouveau. 800×600 dessine au
960×544 natif de la Vita comme avant ; 640×480 dessine désormais en
848×480 — la hauteur du 640×480 d'origine, au format de l'écran — agrandi
×1,13 en plein écran : les personnages sont aussi gros qu'en 640×480
natif. Avant, choisir 640×480 ne changeait que l'art du bandeau. Le
changement en cours de partie marche dans les deux sens (le monde
s'arrêtait aux deux tiers de l'écran après un passage en 640).
D2_RES640=LxHforce une autre taille,D2_RES640=0rend le 640×480 d'origine, bordé. Confirmé sur console. - Trous du bandeau comblés en 640×480 aussi. Le bandeau 640 et la colonne entre deux panneaux ouverts sont comblés avec la pierre du panneau d'inventaire du jeu, lue dans le dessin que le jeu a déjà chargé, dès le premier affichage de l'interface — pas besoin d'ouvrir un panneau d'abord, et aucun art Blizzard n'est ajouté au paquet. Pas disponible pour les personnages classiques (non Lord of Destruction).
- Les trous du bandeau ne reviennent plus avec la perspective OFF, et la colonne noire entre deux panneaux ouverts (personnage + inventaire) est de nouveau comblée en 960×544 — sa position attendue n'avait pas suivi le centrage vertical des panneaux. Confirmé sur console, perspective ON et OFF.
- L'acte V tourne plus vite : le pilote Glide annonce maintenant deux unités de texture, ce qui lève le plafond de 3 Mio du cache de sprites de D2 — il renvoyait ~50 textures déjà connues par image. Banc de patrouille console : ~20 → ~24 img/s (le plafond du jeu est 25).
- Monstres qui clignotaient (Death Maulers) corrigés dans l'atlas de textures : avec deux unités de texture, l'atlas pouvait se remplir dans les zones sauvages et un téléversement raté laissait l'ancien sprite lié. L'atlas passe à 48 Mio, un téléversement raté laisse la texture non liée plutôt que périmée, et une classe de taille pleine emprunte les pages inutilisées des autres. Vérifié avec l'oracle de textures sous qemu (718 dessins à la mauvaise texture → 0) ; confirmation console encore en attente.
- Le journal de démarrage (
boot_progress.txt) est maintenant écrit de façon asynchrone : ses rapports périodiques ne bloquent plus le fil de jeu (30 à 107 ms chacun auparavant).
v0.1.11-beta7 — 2026-09-24¶
- La carte explorée est conservée d'un waypoint à l'autre (et d'une
partie à l'autre). D2 garde l'automap d'une zone dans
<personnage>.ma0/.ma1/.ma2(un par difficulté) : il écrit le fichier en quittant la zone et le relit en y entrant. Le runtime répondait « fichier introuvable » à toute ouverture d'un automap absent — un vieux contournement pour le chargement d'acte d'un nouveau personnage — ce qui refusait aussi la sauvegarde : le fichier n'existait jamais et chaque entrée de zone repartait d'une carte vierge. Toutes les ouvertures d'automap sont maintenant honorées comme sur Windows (le jeu gère lui-même le fichier vide, vérifié sur console : aucun blocage), et chacune est journalisée dansboot_progress.txt.
v0.1.11-beta6 — 2026-09-24¶
- Le menu principal n'est plus décentré après Save & Exit. Au retour
d'une partie, D2 n'appelle ni
SetResolutionniGetResolutionSizeet garde sa fenêtre Glide telle quelle : la bascule 960×544 de la partie restait armée et l'art 800×600 du menu était dessiné à gauche d'une fenêtre de 960 avec une bande noire à droite (signalé par deux joueurs, reproduit sur la console du mainteneur). Le runtime détecte maintenant la boucle des menus de Fog tournant avec la bascule armée, rétablit le 800×600 natif et la taille de fenêtre ; l'entrée en partie suivante réarme la bascule.
Mémoire :
- Plafond du tas invité relevé de ~32,9 à ~56,9 Mio : une session de
75 minutes a rempli l'ancien plafond et s'est terminée sur une
« Unrecoverable internal error » de Blizzard (Halt 904, rapport
SZDVJ7PNYRTOS54K). La place vient de la fenêtre VirtualAlloc (216 → 160 Mio ; deux longues sessions du parc ont culminé à 97–98 Mio), pas du cache de sprites du jeu, qui reste à 64 Mio — aucun compromis sur les fps. - Tas hôte 38 → 46 Mio (il était à 31,9 Mio avec 624 Kio libres à la fin de cette même session).
- Journal de démarrage : les lignes
alive:portent maintenantheap=<utilisé>/<plafond>MBà côté deva=, pour voir une session s'approcher du mur avant qu'elle ne meure.
Avec le plugin noyau kubridge (v0.3 ou plus, optionnel mais recommandé — celui que les gros portages Vita exigent déjà ; un avis au démarrage le signale quand il manque, X ou 10 s pour continuer) :
- Pool JIT 16 → 32 Mio. Le noyau plafonne
sceKernelAllocMemBlockForVMà 16 Mio par processus (un second bloc est refusé même avec 220 Mio libres) : toutes les sessions des joueurs tournaient jusqu'ici sur un seul segment de 16 Mio, avec retraduction du code en fin de session. Le pool ouvre maintenant un second segment RWX de 16 Mio hors de ce quota. Sans le plugin il reste à 16 Mio, etboot_progress.txtdit dans quel cas on est (JIT: kubridge present/absent). - Les rapports de crash portent l'état x86 exact au moment de la faute :
un handler d'abort en mode utilisateur enregistre, avant le dump du noyau,
l'adresse hôte fautive, lecture ou écriture, le dynablock et l'instruction
x86, et les huit registres x86 vivants — ligne
CRASH abort …dansboot_progress.txtetcrash.log. - Fidélité des exceptions Win32 : une violation d'accès du jeu est
livrée à sa propre gestion structurée des exceptions — les handlers de
cadres en
fs:[0]d'abord, puis le filtre de dernier niveau — avec unEXCEPTION_RECORDet unCONTEXTconstruits depuis les registres x86 vivants. Le filtre de Fog écrit son vraiCrash.txt(ACCESS_VIOLATION, chaîne d'appels depuis l'instruction fautive) et termine le processus comme sur Windows ; le runtime sort proprement et le rapport est ramassé au démarrage suivant — le rapporteur lit maintenant aussi les résumés d'exception de Fog. Jusqu'ici une telle faute n'était qu'un dump noyau sans rapport côté jeu. - Pages de garde sous le tas invité : les 124 Kio de marge nulle sont
en
PROT_NONE, un déréférencement nul-plus-décalage par le jeu faute à la source — et est enregistré — au lieu de corrompre silencieusement un voisin. - Barrière d'écriture pour le code auto-modifiant : le
protectDBde box86 atteint maintenant un vraimprotect, et une écriture invitée dans une page traduite est servie par le handler (blocs marqués, page rouverte, écriture reprise) au lieu de passer inaperçue. Active par défaut — éprouvée sur console sans aucune faute et à cadence inchangée ;D2_PROTECTDB=0dansenv.txtla coupe.
v0.1.11-beta5 — 2026-09-24¶
- Avertissement au démarrage quand un fichier de jeu requis n'a pas la
bonne taille (ex. un
patch_d2.mpqd'un autre niveau de patch que 1.14d) — affiché à l'écran, nécessite d'appuyer sur X pour forcer le démarrage au lieu de charger silencieusement une mauvaise version.
v0.1.11-beta4 — 2026-09-23¶
- Fond LiveArea mis à jour (contribution communautaire, issue #19) : ajoute la marque Blizzard Entertainment et déplace le logo complet « Diablo II: Lord of Destruction » en haut, même illustration de base et même bordure sinon.
v0.1.11-beta3 — 2026-09-23¶
- Étiquette de build à l'écran (coin haut-droit : version + hash de
commit), pour qu'une capture d'écran de rapport de bug dise exactement
de quelle build elle vient.
D2VITA_BUILDTAG=0dansenv.txtla masque. - Panneaux en 960x544 centrés verticalement, en plus du centrage horizontal déjà livré en v0.1.11-beta.
v0.1.11-beta2 — 2026-09-23¶
- Crash d'épuisement de la piscine JIT corrigé (signature
SMRD2J34ZXU2A55I, crash n°1 en volume — 143 rapports / 42 consoles au 22/09). Le mécanisme d'éviction-et-réessai (déjà livré en v0.1.10) ne se déclenchait que si l'allocateur bas niveau refusait explicitement une demande. Il se déclenche désormais aussi directement sur l'occupation de la piscine (≥95% pleine), fermant un second chemin vers le même crash que le seul compteur de l'allocateur ne pouvait pas voir. Budget de réessai relevé (8→24 tours d'éviction, 64→192 sorties de secours) — un pari à faible risque, pas encore prouvé par un rapport de terrain, mais les réessais concernés étaient déjà bornés et sûrs côté verrouillage. - Fenêtre VA invitée réduite de 220 à 216 Mio pour redonner un peu de marge à la piscine JIT (elle manquait d'à peu près ça, selon deux estimations indépendantes).
- Pas encore validé sur console — à surveiller sur le nombre de rapports de cette signature dans les jours qui viennent.
v0.1.11-beta — 2026-09-23¶
- Corrigé : en 960x544, les clics à l'écran (croix de fermeture des panneaux, boutons, appuis tactiles, L/R) tombaient sur des coordonnées périmées au lieu de ce qui était dessiné. Le décalage écran est désormais écrit là où le jeu lui-même pose son interface, donc clics et dessin sont toujours d'accord.
- Les panneaux s'ancrent aux bords de l'écran par défaut ; l'ancienne
disposition centrée façon SGD2 devient une option (
controls.txt).
v0.1.10 — 2026-09-22¶
- L'image n'est plus étirée : Glide dessine en 800x600 et l'ancienne
projection le plaquait de façon affine sur tout l'écran (×1,2 en X,
×0,907 en Y — 32 % trop large). Échelle isotrope par défaut désormais
(725×544, bandes noires) ;
D2_ASPECT=etirerestaure l'ancien rendu étiré. - Résolution native 960x544 en option (
D2_RES, absent par défaut) : le jeu dessine directement à la résolution de l'écran Vita au lieu d'agrandir du 800x600 — un texel pour un pixel, sans filtrage. d2vGlideFlushdéporté du fil de jeu vers son propre cœur, et six réglages qui dormaient dans la config de référence depuis début septembre deviennent le défaut compilé : +13 % en jeu réel, a-coups divisés par 29 (mesuré sur console, passes entrelacées).- Les derniers trous de la disposition 960x544 comblés : les panneaux suivent maintenant leur fond (tables, clics, cadre, ceinture), et la colonne/ligne noire entre deux panneaux ouverts a disparu.
- La piscine de code traduit (JIT) de box86 et le tas RW de métadonnées rendus visibles sur la ligne de battement de cœur de la console et dans les diagnostics de plantage, en amont du travail d'éviction livré en v0.1.11-beta2.
- Suppression de
grab_checkrevision.pyet de l'échappatoireD2_ALLOW_OFFICIALqui allait avec.
v0.1.9 — 2026-09-21¶
- Le clavier virtuel s'ouvre désormais tout seul quand un champ texte
prend le focus (nom de personnage, compte/mot de passe Battle.net, nom
de partie) — aucun signal Win32 n'existe pour ce focus, donc il est lu
directement dans l'état d'interface de D2. L'ouverture manuelle
(R+Triangle) fonctionne toujours ;
D2_KBAUTO=0dansenv.txtcoupe l'automatisme. - Opacité du clavier réglable (
D2_KBALPHA=0-100, défaut 80 % — translucide, le personnage/menu reste visible derrière), composée sur le GPU plutôt que relue depuis le CPU.
v0.1.8 — 2026-09-20¶
- Correction des huit signatures de plantage encore actives en 0.1.6 (suivi dans la PR #15) : lectures/écritures de fichiers échouées non rapportées, dossier d'écriture non validé, archives non vérifiées au boot, mauvais dossier de rapport de plantage.
- Plafond du tas invité relevé à ~32,9 Mio (des
ALLOC FAILet un Halt 904 sur les grosses allocations — l'atlas de glyphes des installations en chinois traditionnel était le déclencheur le plus fréquent). - Rendu du menu radial (Select) entièrement déporté sur le GPU : il coûtait ~81 ms par image tant qu'ouvert (24,5 → 8,2 img/s sur console), dont ~70 % rien qu'à relire la CDRAM depuis le CPU pour mélanger. Composité désormais en quads texturés, sans aucune relecture du framebuffer.
- Premier lot de mitigations contre l'épuisement de la piscine JIT, repris de winx86 (la demande de segment décroît au lieu d'abandonner net ; occupation publiée sur le battement de cœur) — pas encore le correctif complet, voir v0.1.11-beta2.
v0.1.7 — 2026-09-20¶
- Release surtout documentation et graphismes : disposition de
keys.txtdocumentée (EN/FR), habillage LiveArea issu d'une contribution communautaire (issue #7).
v0.1.6 — 2026-09-19¶
- Plafond du tas invité relevé à ~25 Mio (un
HeapAllocde 4,2 Mo était refusé au plafond précédent de 20 Mio alors que plus de 200 Mo d'autre mémoire restaient libres) — la même famille de correctif poussée plus loin en v0.1.8. - Les rapports de faute dynarec dumpent désormais les octets et la région de l'opcode fautif, rendant toute cette famille de plantages traçable au lieu de générique.
v0.1.5 — 2026-09-18¶
- Correctif du processus de release uniquement (marge d'empaquetage VPK après le premier segment) — aucun changement côté joueur.
v0.1.4 — 2026-09-20 (étiquette corrigée après coup — voir note)¶
- Le jeu refuse désormais de charger autre chose que le
Game.exe1.14d officiel avant de l'exécuter, plutôt que d'échouer plus tard avec le message cryptique de Diablo lui-même « Unsupported graphics mode ». (Cause racine d'un vrai rapport : un exécutable 1.14b suffisamment proche pour passer la vérification de version.) - Outil d'administration des rapports de plantage : dernière version vue par signature, filtres déroulants.
Pourquoi v0.1.4 est datée après v0.1.5–v0.1.7
Sa première tentative de release a échoué en CI (un problème d'empaquetage VPK) ; l'étiquette a été corrigée et repoussée après la sortie de v0.1.5, v0.1.6 et v0.1.7, donc son historique git et sa date de publication tombent après ce que son numéro de version suggère. Le contenu ci-dessus est ce que v0.1.4 a réellement livré, indépendamment du moment où l'étiquette a été corrigée.