Page 1 sur 1
Débutant sur HuC
Publié : sam. 26 juil. 2025 19:50
par fabio_16bits
Salut à tous.
Donc je me mets (tant bien que mal) au HuC/HuCC.
Et évidemment j'ai pas mal de questions.
Je code sur MegaDrive en général, et je voulais faire un tour sur PCE.
Je commence avec les bases :
Les "directives" sont toutes inclues dans le main.c, mais hors de la boucle main (évidemment).
Mais si je veux avoir un fichier init.c dans lequel je crée mes fonctions qui initialisent mes différents écrans, ils n'ont pas accès ni aux tilesets, ni aux tilemaps ni aux palettes.
Ce qui oblige à les avoir dans le main.c
Pourquoi pas, mais si toutes mes routines doivent être dans le main, ça risque de vite devenir indigeste.
Est-ce que je m'y prends mal ? (c'est certainement le cas).
Enfin, je suis preneur de toute l'aide possible.
Merci

Re: Débutant sur HuC
Publié : sam. 26 juil. 2025 21:47
par touko
Normalement il ne devrait pas y avoir de problèmes d'accès, sauf si tu utilises des datas déclarées après l'include de ton .c
Enfin sur les anciennes version de huc ça marchait comme ça, et je pense pas que ça change avec Hucc .Kaminari est celui qui utilise la dernière version, donc je pense que c'est plus lui qui va répondre à tes question le mieux possible .
Re: Débutant sur HuC
Publié : dim. 27 juil. 2025 01:20
par Kaminari
Comme le suggère Touko, l'ordre de tes includes est important.
Idéalement, tu linkes d'abord tes datas et ensuite les fonctions externes qui s'en servent. Le compilo est linéaire et ne peut pas deviner à l'avance si tes ressources graphiques sont placées après ton code.
Lire une tilemap en .bin avec farpeek()
Publié : dim. 10 août 2025 15:15
par fabio_16bits
Hello.
La doc de HuCC étant ce qu'elle est, je rame un peu avec la fonction farpeek();
J'ai une tilemap au format .bin.
Les pointeurs étant en 16 bits et n'accédant qu'à la RAM, j'ai besoin d'accéder à la partie .DATA
D'où la fonction farpeek().
Elle semble prendre comme argument l'adresse d'un label inclus grâce à une directive, ok.
Mais je suis bloqué là.
De plus, est-ce qu'on incrémente de 1 pour passer de tile en tile, ou de 2 octets ?
Bref, voilà où j'en suis.
à votre bon coeur messieurs dames.
Re: Lire une tilemap en .bin avec farpeek()
Publié : dim. 10 août 2025 16:17
par Kaminari
Je ne saurais t'éclairer, les fonctions far_ étant pour moi un grand mystère (et malheureusement non documentées). Comme j'utilise la librairie de tilemapping de HuCC, je n'en ai pour le moment jamais eu besoin, même si ce sujet m'intéresse. Je sais que ces fonctions ont été retravaillées il y a quelques mois dans HuCC. Pour info, les prototypes sont déclarés ici (section "Memory Access") :
https://github.com/pce-devel/huc/blob/m ... -baselib.h
Re: Lire une tilemap en .bin avec farpeek()
Publié : lun. 11 août 2025 16:32
par x7r
Salutation
Si je ne dis pas de connerie, farpeek() (qui semble remplacer farpeekb() dans l'ancien toolkit) lit un octet en ROM.
Ca fait un bail que je n'ai pas touché au devkit, mais un truc comme ça devait fonctionner :
#incbin(my_level, "folder/file_level.bin")
char x;
char y;
char z;
x = farpeek(my_level);
y = farpeek(my_level+1);
z = farpeek(my_level+2);
Je n'ai jamais utilisé farpeekw() mais d'après ce que je lis ça doit lire un mot en ROM. Je suppose que l'incrémentation de l'adresse doit alors se faire en +2. On aurait donc :
#incbin(my_level, "folder/file_level.bin")
int a;
int b;
int c;
a = farpeekw(my_level);
b = farpeekw(my_level+2);
c = farpeekw(my_level+4);
Re: Lire une tilemap en .bin avec farpeek()
Publié : mer. 27 août 2025 21:35
par Kaminari
farpeek(address) sans underscore est l'ancienne syntaxe, même si elle est toujours supportée. Elle a été remplacée par far_peek().
HuCC a récemment introduit une nouvelle méthode avec le pointeur set_far_base(bank, address) et diverses fonctions far_xxxx() qui peuvent se servir de ce pointeur. Je l'utilise par exemple pour gérer les fadein/fadeout (fonction far_fade_to_black) à partir d'une palette de référence située en ROM.
Exemple de test avec far_peek()