Recent Posts

Pages: 1 ... 3 4 [5] 6 7 ... 10
41
LE VIRTUAL BOY REVIENT.


Bon il faudra un abo online tier 2, mais ça marchera sur Switch 1 et Switch 2.


79€ l'accessoire. (19 la version "carton à la Nintendo Labo"

Quelle joie.
42
L'Atelier du Mercredi / Re: [Gonzo] Questions de bricolo en tout genres
« Last post by Metalish on 12 September, 2025, 17:30:34 »
Merci beaucoup messieurs  :-*
43
Dur dur le ND quand-même. J'ai enfin eu une date pour Metroid Prime 4 mais alors le trailer PUE DU FION c'est inquiétant!
Le jeu Yoshi pourquoi pas, sinon beaucoup de réchauffé, un triste anniversaire pour les 40 ans du plombier...
44
Oui, c'est effectivement mon sentiment, peut-être juste un camp au tout début pour gagner un niveau vite fait.

Là on découvre "à la cool" (si je puis dire, on fonce à tout berzingue vers les églises et les éventuels mid-boss qui traînent), je lirai des tutos ou chercherai de l'aide si on galère trop. Les premiers essais ont montré qu'il fallait bien planifier son trajet pour trouver du monstre, des fioles et des grâces tout en se dirigeant (en spirale si besoin) vers le centre. L'un des enjeux est notamment de ne pas se retrouver coincés entre le cercle bleu et une falaise sans "ascenseur magique". Bref on joue comme des noobs mais pour l'instant ça nous va bien.
45
On a démarré Night reign avec mon frère et le pote et c'est déstabilisant si on imagine - à tort - que l'on va jouer à un Souls en coop. Pour moi qui n'ai jamais joué à un battle royal, c'est tout un délire que l'on découvre : choisir une route le plus vite possible et s'y tenir, rechercher des mid-boss et du loot à tout berzingue, s'adapter à ce qu'on trouve plutôt que chercher un objet ou une arme précis, etc. On verra si ça nous amuse sur le moyen/long terme, pour l'instant ça passe. Enfin... Je dis que ça passe mais on galère bien quand même !

Si un jour vous croisez un certain "Gérard l'archer" qui lance des flèches de feu, c'est moi !

Si tu as l'occasion de jouer avec quelqu'un qui connait bien, n'hésite pas. C'est pas évident quand on débute...
Le mieux est d'essayer d'aller au gros point de la map (château, montagnes, volcan, etc...) le plus vite possible tout en faisant des geôles et des églises pour les fioles. Les petits camps ou petits châteaux ne rapportent pas trop et font perdre du temps.
46
C-C-C-COMBO BREAKER (ouais j'ai des refs de vieux)

vu que je boude (avec souffrance) la sortie non physique d'hollow knight 2, j'ai pris quelques jeux pour faire placebo (spoiler : on y est pas).

ender magnolia (ender lilies 2), un metroidvania loli-dark mais soigné, j'avais poncé le un (ça va c'est pas un monstre de difficulté) et le deux c'est tout pareil, c'est joli, ça bouge bien, des combats de boss intenses, et des builds intéressants.
alors ouais ça fait mal de passer derrière HK, tant ça met sa claque en terme de level design, world design, gameplay etc... même si le jeu reste dans le haut du panier.
bon après moi je suis pas difficile, un metroidvania, des bosses vénères, des zones secrètes et une fin cachée et je suis un mec content.
à recommander aux afficionados ou à ceux qui ont aimé le premier.

steamworld heist 2, je savais même pas que le jeu était sorti, mais les steamworld chez moi c'est une affaire de famille (à part steamworld quest, ce jeu n'a jamais existé), on y joue tous et on se tire la bourre sur les trophées.
rien de neuf sous le soleil, c'est le premier en mode +++. plus varié, plus beau, plus d'options, comme steamworld dig 2 par rapport au 1
de très bons changements de gamedesign  genre le sniper qui doit reload (ça change tout son fonctionnement, en mieux), et un système de multiclasse intéressant, bref, si vous avez aimé le 1, foncez.
2 reproches toutefois, la carte avec les combats navaux qui sont pas vraiment nécessaires, et la difficulté adaptative.
c'est con, mais j'aime bien me donner du mal pour aller chercher le true last boss ou la fin cachée, ici rien de ça tu peux poncer le jeu en easy sans aucun drawback, même pas un trophée pour avoir fini le jeu en hard, c'est sévère.
47
Oldies but SO goodies / Re: [Foutrac] Trucs, bidules, machins et généralités oldies
« Last post by Bodom on 12 September, 2025, 10:57:45 »
Quand j'aurais le temps, je vous ferai un petit dossier.

A la base le romhacking me paraissait être quelque chose d'extrêmement compliqué, mais en réalité, pour qui a quelques bases d'informatique (et même pas de programmation - tant l'assembleur est loin des if then else qu'on connait), c'est très accessible. Et surtout, c'est passionnant de détricoter les mécanismes d'un jeu.

Pour faire un exemple très simple, la suppression de l'apparition des monstres au bout de quelques secondes :

On lance le jeu avec Mame en mode debug, ce qui ouvre en plus du jeu une interface dans laquelle on peut afficher le code asm, la mémoire, et taper des commandes qui permettent de faire moult choses utiles (genre arrêter le programme quand il arrive à une instruction donnée, ou que telle valeur est écrite à tel emplacement mémoire).

On sait que les monstres apparaissent au bout de quelques secondes, et que si on se déplace cela n'arrive pas. Il y a donc forcément un timer quelque part en mémoire. On utilise donc l'outil qui permet de chercher des cheats, comme ce qu'on trouve sur quasiment tous les émulateurs.

On tape donc "cheatinit", cette commande fait simplement un cliché de toutes les valeurs en mémoire. On attend un peu et on tape "cheatnext +", cela va ressortir toutes les valeurs qui ont augmenté depuis le cliché, et et éliminer toutes les autres du cliché initial. En retapant "cheatnext +", cela va ressortir toutes les valeurs qui ont encore monté, et ainsi de suite, jusqu'à arriver à une liste suffisamment restreinte (4 ou 5 adresses). On va donc les regarder ces valeurs en mémoire tout en laissant le jeu tourner, et bingo, on voit qu'à la zone 100CBA, la valeur monte très vite et revient à 0 dès que les monstre apparaissent.

Donc c'est cool, on a la zone du compteur, maintenant on fait quoi avec ça ? Et bien on va voir comment elle est utilisée, avec une commande très pratique, le "watchpoint". On met donc un watchpoint sur 100CB8 en lecture, ce qui va suspendre l'exécution du jeu dès que cette zone est lue par le programme. La commande à peine entrée, le jeu s'arrête et on voit ça au niveau de la zone d'exécution :

Code: [Select]
00C9EE  addq.l  #1, ($cb8,A6)                               52AE 0CB8
00C9F2  move.l  ($cb8,A6), D0                               202E 0CB8
00C9F6  cmp.l   D1, D0                                      B081
00C9F8  bcs     $ca00                                       6506
00C9FA  jsr   $2ff60.l   ($cb8,A6)                          4EB9 0002 FF60
00CA00  rts                                                 4E75

Le code est arrêté à l'instruction C9F2, qui copie la valeur mémoire à 100CB8 dans D0, ce qui a bien déclenché l'arrêt du programme suite à une lecture de cette zone mémoire.

Note : les valeurs mémoire sont rarement notées "en dur" dans le code, mais plutôt sous la forme ($cb8, A6), les registres d'adresse (de A0 à A7) étant chargés au préalable dans le code pour simplifier les opérations et limiter ainsi l'occupation de mémoire. Ici l'adresse 100000 est chargée dans A6 au moment de l'exécution, ($cb8, A6) indique donc l'adresse 100CB8. Par rapport au fait de noter l'adresse en dur, ça fait économiser 1/3 de place dans la ROM, et vu les milliers d'instructions c'était extrêmement important à l'époque.

Bref, le code est ici très simple :

addq.l  #1, ($cb8,A6) : ajoute 1 dans cette zone mémoire
move.l  ($cb8,A6), D0  : copie cette valeur mémoire dans D0
cmp.l   D1, D0  : Compare D0 à D1
bcs     $ca00 : Si c'est plus petit, on saute à l'instruction ca00
jsr   $2ff60.l : appelle la sous-routine qui est située à l'adresse 2ff60
rts : return from subroutine = on quitte la fonction

Note : Les registres de données (D0 à D7) sont des zones mémoires dédiées auxquelles le CPU peut accéder très rapidement, et sont souvent utilisées pour faire des calculs et des comparaisons.

Note 2 : D1 a été défini à 200 un peu plus haut dans le code, on remarque que cette valeur change en fonction des niveaux, pour les niveaux 2 et 3 elle est à 100, ce qui fait apparaître des monstres volants au bout de 256 frames seulement (100 en hexa = 256), soit 4,2 secondes à 60 ips. Pour le niveau 1 c'est à 200 soit 512 frames.

Traduction du code :

A chaque frame, le compteur est incrémenté de 1. Il est ensuite placé dans D0, et comparé à D1. S'il est plus petit alors on saute à l'instruction située à CA00 (le rts), on sort donc de la routine sans rien faire d'autre. S'il est égal par contre, on continue le code et on saute à la sous routine située à 2ff60, qui est donc fort logiquement celle qui fait apparaître les monstres.

Maintenant qu'on a compris le code, on a plusieurs solution pour ne plus les faire apparaître. On peut tout simplement virer la commande addq pour ne plus incrémenter le compteur, mais peut-être est-il utilisé par autre chose, et on a la flemme de chercher. On pourrait aussi chercher un peu plus haut dans l'historique du code ce qui charge la valeur 200 dans D1, trouver depuis où ce 200 est lu, et le modifier en FFFF (65536), ce qui passerait le délai de déclenchement à 18 minutes environ.

Ou alors remettre le compteur à 0 et ne rien faire d'autre, c'est ce que j'ai fait :

Code: [Select]
00C9EE  addq.l  #1, ($cb8,A6)                               52AE 0CB8
00C9F2  move.l  ($cb8,A6), D0                               202E 0CB8
00C9F6  cmp.l   D1, D0                                      B081
00C9F8  bcs     $ca00                                       6506
00C9FA  clr.l   ($cb8,A6)                                   42AE 0CB8
00C9FE  nop                                                 4E71
00CA00  rts                                                 4E75

Le code reste le même (on compare à 200, si c'est en dessous on sort de la routine), mais quand le compteur arrive à 200, j'ai remplacé le jsr par un clr de 100cb8, ce qui remet tout simplement le compteur à 0. Problème : l'instruction jsr prenait 6 octets (4EB9 0002 FF60), le clr en prend 2 (42AE 0CB8), il faut donc remplir l'espace restant car sinon il y aura dans le code 42AE 0CB8 FF60, le clr va bien se faire mais ensuite le CPU va vouloir interpréter FF60 et ça va planter. On met donc l'instruction hyper pratique NOP (No OPeration - pour dire au CPU de ne rien faire) pour combler le vide.

Pourquoi remplir l'espace restant et ne pas mettre directement les instructions suivantes ? Car ça décalerait l'intégralité du reste du code, et comme tout est à base d'adresse plus rien ne fonctionnerait.

Désolé si c'est un peu brouillon, mais j'espère avoir au moins un peu démystifié la chose. Une fois que vous avez compris ça, le reste c'est juste apprendre la petite dizaine d'instructions ASM qui représentent 95% du code, assaisonné d'une pointe de raisonnement logique :)
48
L'Atelier du Mercredi / Re: [Gonzo] Questions de bricolo en tout genres
« Last post by gnocchi on 11 September, 2025, 15:31:14 »
Et tu aurais bien raison.
49
L'Atelier du Mercredi / Re: [Gonzo] Questions de bricolo en tout genres
« Last post by PeteMul on 11 September, 2025, 15:30:32 »
L'USB est standardisé, donc moi j'irais sans problème lui coller un transfo USB bien de chez nous. Ce qui serait foireux ce serait d'utiliser le transfo fourni, s'il y en avait un.
50
L'Atelier du Mercredi / Re: [Gonzo] Questions de bricolo en tout genres
« Last post by Metalish on 11 September, 2025, 15:21:47 »
Petite question pour mes électriciens sûrs :

J'ai dégoté un clone de famicom (la FC Home Retro 118) qui est alimentée en USB.
Vu que c'est du matos Jap, est ce que je dois faire gaffe a cette histoire de 110/220V ou le fait que ce soit USB et donc sans transfo me libère du problème ?

La notice ne mentionne que dalle et je n'arrive pas a trouver les specs techniques de la bête sur internet donc je suis un peu paumé...  ::)
Pages: 1 ... 3 4 [5] 6 7 ... 10