Faits: Faits: A. Le vendredi 24 janvier 2003, à 04h10, deux agents de la gendarmerie genevoise sont intervenus pour régler un différend entre le portier du "Club 58", à Genève, et deux clients, à savoir A._ et B._, qui s'étaient vu refuser l'accès à l'établissement parce qu'ils étaient sous l'emprise de l'alcool. Après leur avoir expliqué les raisons d'un tel refus, ils les ont priés de quitter les lieux. B._ s'est exécuté en prenant un taxi, alors que A._ a refusé de partir. Ce dernier a été soumis à un test à l'éthylomètre qui a révélé un taux d'alcool dans l'haleine de 1,4 gr o/oo. Après lui avoir une nouvelle fois vainement ordonné de circuler, les agents l'ont conduit au poste de police des Pâquis "pour qu'il y cuve son alcool", avant de le relaxer vers 08h00. Selon le rapport de contravention établi le 27 janvier 2003, A._ aurait vociféré des insultes à l'encontre du portier de la discothèque et des agents de police, troublant ainsi la tranquillité du voisinage. A._ a contesté l'amende de 350 fr. qui lui a été infligée à raison de ces faits, pour excès de bruit, au sens de l'art. 1 al. 1 et 2 du règlement genevois concernant la tranquillité publique et l'exercice des libertés publiques, du 8 août 1956 (ci-après: le règlement concernant la tranquillité publique), et refus de circuler sur ordre de la police, au sens de l'art. 32 al. 2 du règlement genevois sur la propreté, la salubrité et la sécurité publiques, du 17 juin 1955 (ci-après: le règlement sur la sécurité publique). Le Procureur général du canton de Genève a transmis l'opposition au Tribunal de police du canton de Genève le 18 novembre 2003. Par jugement du 21 avril 2004, cette autorité a reconnu A._ coupable d'excès de bruit et de refus de circuler sur ordre de la police, selon l'art. 37 al. 1 ch. 1 et 4 de la loi pénale genevoise du 20 septembre 1941 (LPG), et l'a condamné à une amende de 350 fr. La Chambre pénale de la Cour de justice du canton de Genève (ci-après: la Chambre pénale ou la cour cantonale) a confirmé ce jugement au terme d'un arrêt rendu le 20 septembre 2004 sur appel du contrevenant. La Chambre pénale de la Cour de justice du canton de Genève (ci-après: la Chambre pénale ou la cour cantonale) a confirmé ce jugement au terme d'un arrêt rendu le 20 septembre 2004 sur appel du contrevenant. B. Agissant par la voie du recours de droit public, A._ demande au Tribunal fédéral d'annuler cet arrêt. Il invoque une violation du principe de la légalité des délits et des peines, ancré aux art. 5 al. 1 Cst. et 7 par. 1 CEDH, en relation avec la garantie de la liberté personnelle, de la liberté d'opinion et d'expression, l'inconstitutionnalité de la loi pénale genevoise au regard de l'art. 70 de la Constitution genevoise (Cst. gen.), une violation du principe de la légalité en relation avec le principe de la séparation des pouvoirs et l'arbitraire dans l'application du droit cantonal. Il requiert l'assistance judiciaire. La Chambre pénale se réfère aux considérants de son arrêt. Le Procureur général du canton de Genève conclut au rejet du recours.