Bad Apple sur Playdate
Vendredi 9 mai 2026
22:35
Un.e ami.e m'a parlé de la trijam qui a lieu en ce moment et je me suis dis que que ça pourrait être l'occasion de faire le portage de Bad Apple sur la playdate que je voulais faire depuis un moment. Je mange un yaourt et je m'y met.
Bon y'a un thème et il faut que ce soit un jeu, donc je sais pas si ça va marcher, je soumettrai on verra bien, au pire ça me fait une contrainte de temps c'est bien.
22:42
Bon il faut que je trouve un moyen de d'avoir une vidéo facilement controllable à la taille de l'écran de la playdate. Je vais faire ça en C parce que flemme d'apprendre l'API lua. Étape 1 je vais regarde comment marche l'API de lecture de vidéo. À priori on peut rendre la frame qu'on veut donc ça va être facile. Je setup un projet.
23:06
C'est bon j'ai un pdx qui compile pour playdate. Mdr, jessaie de télécharger Bad Apple original depuis youtube mais je suis ban à force d'utiliser un client alternatif :')
Ok je l'ai récup depuis une instance Peertube qui l'avait réupload. Je vais la passer dans un convertisseur vers le format vidéo de la playdate en ligne que j'ai trouvé.
Ça met du temps à encoder la vidéo... En attendant je vais extraire le son avec Audacity.
23:43
J'ai une musique qui se joue quand je tourne la crank, c'est cool. J'attends toujours la vidéo qui se process.
23:58
C'est bon j'ai la vidéo qui se lit sur playdate, le son et la musique peuvent perdre en synchronisation. Je dois trouver un moyen de conserver ça.
00:37
J'ai décidé de me baser sur le temps de l'audio et d'afficher les frames en conséquences. Je vais passer d'un FilePlayer à un SamplePlayer pour voir si je peux jouer à l'envers facilement.
01:09
J'essaye de faire jouer l'audio à l'envers mais à ne marche pas. À priori il faut utiliser un autre encodage que ADPCM (qui est pourtant celui recommandé par Panic...), sur le forum ça parle de PCM, je teste. Ça marche !
Plus qu'à syncho l'image et on a ce qui nous faut je crois.
01:29
Je ne comprenais pas pourquoi ma vidéo se coupait avant la fin, je me suis demandé si c'était du à une limitation du SamplePlayer ? En fait la vidéo que j'ai récup est coupée, mais c'est bon YouTube m'a déban, je yt-dlp l'originale (mais il va falloir que la réencode...).
Je fais une pause le temps d'avoir la vidéo entière encodée pour la playdate.
01:50
Reprise du travail, j'intègre la nouvelle vidéo et audio.
Mon premier export audio était de 20Mo or je n'ai que 16Mo de RAM sur la playdate, j'ai paniqué un peu. Mais je me suis rendu du compte que je pouvais exporter en mono et ça divise le poids par deux. À voir si avec la nouvelle vidéo (8Mo) ça passe...
Je teste sur la playdate, j'ai des gros freeze... Je vais essayer de reduire le poids. J'ai changé le taux d'échantillonage à 16000Hz, je reteste.
02:40
Tout marche bien, j'essaye de faire un mode accéléré à base de tourner la manivelle plus vite, mais il est assez instable. Je devrais essayer de prendre la valeur de manivelle sur plusieurs frames. Je vais aussi tenter de ne pas être framerate dépendant. En fait juste en corrigeant avec le delta time ça s'arragnge. Je crois que c'est bon il est fini! J'ai 2h50 de code au compteur. Je fais une build, la page itch et une petite vidéo pour Mastodon!
04:00
C'est sorti !