Citation: 6B_1021/2021 E. 2

Il s'ensuit que le recours doit être admis, le jugement attaqué annulé et la cause renvoyée à la cour cantonale pour qu'elle mette en oeuvre une procédure d'appel orale, puis qu'elle rende une nouvelle décision. Au regard de la nature procédurale du vice examiné et dans la mesure où le Tribunal fédéral n'a pas traité la cause sur le fond, ne préjugeant ainsi pas de l'issue de celle-ci, il peut être procédé au renvoi sans ordonner préalablement un échange d'écritures (cf. ATF 133 IV 293 consid. 3.4.2 p. 296; arrêts 6B_1100/2020 du 16 décembre 2021 consid. 6; 6B_662/2020 du 18 août 2020 consid. 2). Le recourant obtient gain de cause et n'a pas à supporter de frais. Il peut en outre prétendre à des dépens qui seront mis à la charge du canton de Neuchâtel (art. 68 al. 2 LTF), ce qui rend au surplus sans objet sa demande d'assistance judiciaire (art. 64 al. 2 LTF). Par ces motifs, le Tribunal fédéral prononce :