Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
A jam submission

Super Flappy SquareView game page

Submitted by Gamabunta57 — 5 days, 1 hour before the deadline
Add to collection

Play game

Super Flappy Square's itch.io page

Results

CriteriaRankScore*Raw Score
Note générale#173.3133.313
Overall#193.5943.594
Respect du thème#263.8753.875

Ranked from 16 ratings. Score is adjusted from raw score by the median number of ratings per game in the jam.

Pseudo adhérent Premium sur Gamecodeur
Gamabunta57

Elève Gamecodeur depuis...
05/06/2020

Langage / Moteur utilisé
Assembleur 65816 (Super Nintendo)

Temps passé (environ)
18H (pour le moment)

Décrivez votre expérience (déroulement, difficultés, progrès réalisés, bilan personnel)
Préambule :

Il s'agit d'un "truc" pour la Super Nintendo, il faudra donc un émulateur pour le tester. Lors du développement, j'ai utilisé l'émulateur Mesen-S (donc je ne sais pas si les autres fonctionnent correctement pour ce "truc", mais normalement ça devrait le faire quand même).
Si vous souhaitez télécharger Mesen-S, c'est ici:
https://www.mesen.ca/

But :

Évitez de vous prendre les blocs gris, et survivez le plus longtemps possible.

Commandes :

Pour voler: Maintenir B (le bouton de la manette Snes, pas le clavier, ça dépend de votre config de l'émulateur).

C'est tout pour le moment, si vous mourrez faut faire un reset de la console manuellement XD. Aussi, au démarrage, vous tombez directement, donc soyez prêts (c'est aussi pour ça que j'appelle plus un truc, qu'un jeu).

Mon expérience :

J'ai voulu me challenger pour cette Game Jam; faire un "truc" comme dirait David sans forcément que ce soit un jeu.
Ça faisait quelques semaines que j'ai repris l'étude de l'assembleur pour la Super Nintendo et la Game Jam est tombée à point nommé. J'hésitais à participer à cette Jam en faisant quelque chose pour la Snes, mais un certain Duruti m'a dit "GOOOOOOOOO", alors je me suis lancé.

Au final, même s'il s'agit plus d'un "truc" que d'un jeu, je suis content d'être parvenu à ça. J'ai pas mal galéré pour différentes choses :
- Je voulais faire de tout petit test au départ et j'ai estimé à tort que je n'avais pas besoin d'un émulateur plus complet. Du coup, le tout premier émulateur que j'avais à la base, n'avait pas de débogueur : impossible de savoir ce qui n'allait pas lorsque l'écran n'affiche rien du tout. Je ne sais pas pourquoi j'étais resté buté autant de temps sur cette idée. Plus tard, j'en avais trouvé un, puis ayant des doutes sur des potentiels bugs (le problème était entre la chaise et le clavier hein), Duruti m'a trouvé un autre émulateur bien sympa qui se veut précis dans son émulation.
- L'assembleur ... j'en avais fait à l'école il y a longtemps. Mais m'y remettre plus concrètement avec un véritable projet m'a montré à quel point j'étais rouillé. Aussi, je pensais mieux connaître certains aspects de l'architecture de la SNES, mais finalement bien moins que prévu.
- J'ai passé pas mal de temps à démarrer le projet véritablement. J'ai galéré au départ à avoir un écran de couleur unie, car je n'avais pas les bons outils et les bonnes connaissances au départ.
- Ensuite, j'ai eu des surprises où le code vu par le débogueur était différent de ce que j'avais écrit. Des instructions en plus venaient s'insérer parfois entre 2 lignes de code que j'avais écrites. La plupart du temps, elles n'étaient pas exécutées sauf s'il s'agissait d'un break (ça foutait pas mal le bordel, je vous promets). C'était ma méconnaissance de l'assembleur et de wla-dx (le "compilateur") qui préconise l'utilisation de suffixe pour indiquer au niveau des mnémoniques, la tailles des opérandes et ainsi prendre les bons codes machines.
- Également, basculer les registres en 8/16bits qui (en toute logique) a des impacts sur ce qui est lu et écrit en mémoire et je ne prenais pas ça en compte au départ. Quand on n'a pas l'habitude d'y prêter attention, ça foire souvent alors que la logique semble correcte.
- Y a pas de nombre flottant ni de division ou de multiplication possible avec le 65816 (c'est possible de multiplier ou diviser avec la Snes tout même en utilisant des registres spécifiques etc.. mais c'est chiadé)

Malgré ça, je suis content, vraiment. J'ai réussi à faire quelque chose et j'ai réussi à résoudre des problèmes qui nécessitent une façon de penser différente de ce à quoi je suis habitué. J'imaginais aussi que les principes de la boucle d'init/update/draw ne s'appliquaient pas forcément dans le cadre de l'assembleur avec une architecture spécifique. En fait, si, tous les principes vus sur Gamecodeur s'appliquent de la même manière (l'implémentation change un peu par contre), et je ne sais pas pourquoi je m'étais mis ça en tête ...

J'ai une petite satisfaction personnelle, qui vient du fait que le 65816 n'offre pas d'instructions pour les multiplications et divisions. J'ai réussi malgré cette contrainte à trouver une solution pour résoudre un problème particulier en adoptant un point de vue différent.

Pour ce qui concerne le jeu, j'avais aucune idée de ce que je voulais faire (qui implique une inertie/gravité), mais genre 0. J'ai commencé par implémenter un sprite qui est soumis à une gravité, j'ai ensuite fait en sorte d'avoir un "jetpack" etc .. Je ne me suis pas pris la tête à sortir un jeu, mais j'en ai profité pour implémenter des choses que je voulais voir:
- système de gravité et d'inertie (merci DeadSystem pour l'idée de "simuler" des nombres flottants)
- limiter la vitesse de déplacement vertical
- limiter le déplacement du sprite verticalement pour qu'il ne sorte pas de l'écran
- détecter des collisions avec le décor en utilisant des hotspots (y en a que 2 pour le moment à la droite du sprite, en haut et en bas)
- implémenter une petite parallaxe
- gérer du transfert via le DMA (Direct Memory Access) de la SNES

Mine de rien, c'était un rêve de gosse pour moi de faire ça, donc j'ai gagné :D :D :D.

Leave a comment

Log in with itch.io to leave a comment.

Comments

Submitted

Félicitations, c'est vraiment du taf de code en assembleur, chapeau pour le travail réalisé .

Developer

Merci beaucoup ! J'ai toujours voulu savoir comment étaient fait les jeux à l'époque. Maintenant quand je regarde les jeux auxquels je jouais, je trouve que c'est dingue ce qu'ils faisaient.

Submitted

Comment on fait pour reset le jeu? dés que j'arrive je meurt et je peut plus rien faire

Developer

Tout d'abord merci d'avoir testé :D.
Je ne suis pas allé jusque là, il n'y pas de reset in-game possible, il faut utiliser le reset de l'émulateur.

Submitted

Bravo pour cette prouesse technique et pour la réalisation de ce rêve de gosse !^^

Developer

Merci beaucoup :D

Submitted

Sympa mais trop dur pour moi ^^

Developer

Merci :D.
Je confirme, le jeu est super difficile. Je voulais aller plus loin mais les difficultés rencontrées au départ m'ont fait perdre un temps fou et je n'ai pas pu peaufiner.

Submitted

Hello, Testé avec snes9x et de mon coté ça marche bien :) Pas contre le jeu est très difficile, réussi a en passer que 3 :) En tout cas bravo car je pense que ça a pas du être facile techniquement. C'est cool de voir qu'on peut coder sur des vieilles consoles comme la snes. Je serai curieux de voir si il y a possibilité de tester sur une vraie console

Developer

Hello!
Merci :D. Je suis content de voir que certaines personnes ont pu tester au moins. Le jeu est en effet super difficile (et arriver à en passer 3 c'est déjà pas mal).
On peut tester sur une vraie console à condition d'avoir le matériel nécessaire (c'est pas mon cas). Et je pense que ce que j'ai fait ne fonctionnerait pas sur une vraie machine. Y'a peu de chance parce que les émulateurs, même précis, n'émule jamais à 100% la machine et tout leur "défaut". Et dès le départ j'ai eu des différence de comportement en utilisant différent émulateur (que j'ai tenté de corriger). Mais si je réalise un projet plus sérieux, j'aimerai tester sur une vrai console (là ce serait une consécration).

Submitted

Quelle prouesse ! Excellent ! Bravo !

Developer

Merci beaucoup :D.

Submitted

Sacré défi technique !

Developer

Honnêtement, je pensais que ce serait plus simple (j'avais déjà testé des trucs un à un, mais jamais mis le tout ensemble). Au final, bien que je suis arrivé moins loin que ce que j'avais imaginé, je suis tout de même content d'être parvenu à ça.

Submitted

Le jeu est très difficile pour un premier niveau mais bravo pour le travail effectué!

Developer

Merci :D. Alors, oui, en effet, c'est très difficile. Je considère même pas qu'il s'agit d'un premier niveau mais plus un truc de test technique.

Submitted (1 edit)

Bien joué pour ce bon début et cette participation bravo XD

Developer

Merci beaucoup!

Submitted

Alors honnêtement ça démarre pas sur mon PC sous Windows 10 mais je note qd-même pour le défi que tu t'es fixé, visiblement très technique (j'ai pas compris le quart de ton commentaire!).
Motivant!

Developer

haa dommage que ça ne fonctionne pas. Est-ce que je peux te demander quel émulateur tu as utilisé?
Merci d'avoir essayé.

Submitted

Le truc justement c'est que je ne vois pas avec quoi l'ouvrir (à part Windows Store proposé systématiquement...non je blague)!

Developer(+1)

Ha d'accord, je ne l'avais pas compris en ce sens. Il s'agit d'un jeu pour la console Super Nintendo, tu peux ouvrir ce genre de fichier uniquement avec un emulateur à trouver sur le net (il en existe peut-être sur le Windows Store lol, mais j'ai jamais essayé). Parmi ceux que je connais il y a :

- Zsnes

- Snes9x

- Bsnes

- Mesen-S

Si tu souhaites avoir plus d'emulateur avec un catalogue de jeu à disposition, tu peux chercher RomStation (pareil, ça se trouve sur le net mais je pense pas que c'est sur Windows Store... Après on sait jamais, j'ai pas vérifié) 

Lancer avec Ares, j'aurais aimé connaitre les touches. Parce que là, le jeu ce lance et je vais direct dans le décor.

Developer

Merci d'avoir essayé! Je note en effet que je n'ai pas précisé les touches dans la page de la Game Jam mais seulement sur la page du Jeu lui-même (faut que je corrige ça).
Pour info, c'est le bouton B de la manette Snes qu'il faut utiliser. J'ai pas testé sur Ares, je connaissais pas, et si ça se trouve, ça marche tout simplement pas pour une raison.

Submitted

Le jeu ne fonctionne pas pour moi malgré mon utilisation de mensen. Dans tout les cas, bravo pour ce défis technique Gamabunta57!

Developer

Merci beaucoup, et merci d'avoir essayé. Est-ce que tu as testé avec "Mesen" ou "Mesen-S"? J'utilise "Mesen-S", donc je pense que ça devrait fonctionner. "Mesen" de mémoire est un émulateur Nes et non Snes, et leurs noms peuvent porter à confusion.

Submitted

Ha c'était ça le problème. Ça fonctionne. Bravo pour ton jeu!

je suis IMPRESSIONNÉ, vraiment un grand bravo, t'as surmonté tous les obstacles, et à la fin t'as réussi à nous proposer quelque chose.

j'espère que tu y à pris goût et que par la suite tu nous proposeras un jeu, et pourquoi pas, un homebrew original sur cette merveilleuse machine qu'est la Snes.

 n'oublie pas, que souvent ce que l'on voit n'est pas ce que l'on croit, c'est l'ingéniosité, le savoir faire, et les petits tours de passe passe qui ont fait la gloire de ces machines..

donc GG à toi, et je te souhaite de continuer dans ta lancée, et de t'éclater ;)

Developer

Un grand merci :D ! Merci également pour l'idée de la gestion des "nombres flottant" sans nombre flottant.
J'aimerai aller plus loin sur cette plateforme (avec un autre type de jeu pour être honnête) et pourquoi pas en essayer d'autres à l'occasion. Je pense que ça sera plus en parallèle d'autres projets et dans tous les cas faut que je termine déjà un projet que j'ai en cours.