Page 1 of 2

Émulateur NES

Unread postPosted: 18 Aug 2018, 08:04
by zardam
J'avais commencé le port d'un emulateur NES (nofrendo) sur la NumWorks il y a un certain temps, et j'ai finalement passé un peu de temps pour arriver au stade "utilisable". Le code est assez moche, mais ça fonctionne.

Il manque encore quelques fonctionnalités, principalement la sauvegarde de l'état à la sortie de l'application.

Un tout petit peu plus d'information ici : https://zardam.github.io/post/nofrendo/


Re: Émulateur NES

Unread postPosted: 18 Aug 2018, 08:33
by Lionel Debroux
Hu hu. C'est logique, la machine est assez puissante pour tourner ce genre de choses.
Bien joué :)

Re: Émulateur NES

Unread postPosted: 18 Aug 2018, 09:56
by critor
Merci pour cet énième monument de ta part sur NumWorks.
C'est annoncé : viewtopic.php?t=21765&p=234362#p234362

Re: Émulateur NES

Unread postPosted: 18 Aug 2018, 10:52
by jean-baptiste boric
Il vaut mieux utiliser un dépôt séparé pour les applications third-party, ça permet de les composer plus facilement:

https://github.com/boricj/numworks-tic-tac-toe
https://github.com/boricj/numworks-hello-world

Sinon, quel est la raison du remplacement de malloc dans le firmware?

Re: Émulateur NES

Unread postPosted: 18 Aug 2018, 13:45
by zardam
Merci pour la news :)

Le malloc par défaut n'est pas très "efficace", car il ne permet d'allouer que des blocs de la taille d'une puissance de 2. Du coup, pour un firmware compilé avec toutes les applis, une des allocation de l'émulateur échoue. Il est possible d'optimiser coté émulateur, car il fait plusieurs allocations ce qui gâche pas mal d'espace avec l'implémentation par défaut, cela permettrait de se passer du changement de malloc.

L'autre point qui "bloque" pour en faire une application third-party est la nécessité d'avoir un timer. Si https://github.com/numworks/epsilon/pull/626 n'atterrit pas dans le firmware officiel, ce ne doit pas être une très grosse affaire de rapatrier ça dans l'application (il y a déjà du code spécifique au hardware à l'intérieur de toute façon).

Re: Émulateur NES

Unread postPosted: 19 Aug 2018, 13:55
by Thom986
Bravo !
Très impressionnant.

Re: Émulateur NES

Unread postPosted: 30 Sep 2018, 13:02
by zardam
Je déterre un peu le sujet, mais j'ai mis en ligne une page pour uploader facilement le firmware avec l'émulateur. C'est à peu près testé, et dispo ici : https://zardam.github.io/webnofrendo

Le firmware est basé sur la version officielle 1.7.0.

Re: Émulateur NES

Unread postPosted: 30 Sep 2018, 14:08
by critor
Super, merci pour avoir fortement facilité la procédure ! :bj:

Re: Émulateur NES

Unread postPosted: 02 Oct 2018, 19:47
by critor
Voilà, ton outil révolutionnaire, mettant la recompilation firmware et l'émulation NES à portée de tout-le-monde, a été testé et annoncé :
viewtopic.php?t=21875&p=235656#p235656

Cela m'a permis notamment de tester l'émulateur.

Serait-il stp possible de supprimer la touche
alpha
pour quitter ?
Il n'est pas rare de l'accrocher par erreur en s'échinant sur la croix directionnelle en cours de partie.
Et comme la progression dans le jeu est alors immédiatement perdue, je crains que tu ne reçoives pas que des lettres d'amour... (j'étais au monde 8 de Super Mario Bros 3)

Pour quitter, la touche
clear
suffit, et est moins facile à presser par erreur en cours de partie. :)

Re: Émulateur NES

Unread postPosted: 04 Oct 2018, 01:50
by zardam
:)

Ce n'est pas si révolutionnaire que ça, les firmwares sont précompilés, mais effectivement, WebDFU c'est très pratique (ça fonctionne même sous android avec un port OTG :o ).

J'ai fait une petite mise à jour. Maintenant, l'état de l'émulateur est préservé lorsque l’on quitte l'application. Attention, la touche
clear
fait un reset de l'émulateur.

Sinon, j'aime bien le fait que toutes les autres touches fassent quitter l'appli, ça évite de devoir tout essayer quand on ne sait pas (et ça peut être utile en mode "panique" éventuellement :D ).