MSX Village forum

La Place des Développeurs MSXgl MSX Game Library

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 27/12/2022 à 22h59

Reprise du message précédent

Pas encore... ça arrive, ça arrive. ^^

C'est moins simple car c'est mon seul outil qui utilise une librairie externe (FreeImage).


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 28/12/2022 à 07h17
C'est super de pouvoir utiliser n'importe quel type de fichier en entrée, mais franchement, si tu portes ton outils sans cette librairie FreeImage, et donc l'obligation d'utiliser le format BMP en entrée, je ne t'en voudrais pas du tout.
Ça serait vraiment un moindre mal. :)


Sur MacOS il existe un outils en ligne de commande (installé en standard) qui permet de manipuler les images, d'en changer la résolution, et d'en modifier le format facilement.

Code TEXT :
sips -s format bmp image.png --out image.bmp


La ligne de commande ci-dessus permet de changer le format de l'image , png en bmp.
C'est juste un exemple.

Des outils equivalent existent aussi sous linux, à installé séparément, comme imageMagik.
https://github.com/ImageMagick/ImageMagick

Qui doit pouvoir être compilé sur windows aussi je pense. Edité par ericb59 Le 28/12/2022 à 08h49


banniere-ericb59e
Site web    
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 552

Le 28/12/2022 à 17h52
Pour télécharger ImageMagick :
https://imagemagick.org/script/download.php
pas besoin de compiler ...


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 28/12/2022 à 18h13
J'ai peu de temps et beaucoup de choses à faire ; Je ne vais donc clairement pas réécrire mon outil avec une autre lib que FreeImage.
Si j'arrive à faire une version Linux tant mieux, sinon la seule alternative sera « tant pis ». ^^


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 28/12/2022 à 18h20
FreeImage tu l'utilise pour la lecture des fichiers en source et le décodage de l'image je suppose.
J'imagine qu'une fois cette étape passée, tu n'utilise pas FreeImage pour le traitement et l'exportation ? si ?
Si la réponse est non, ma suggestion était de ne pas utiliser freeImage et de ne conserver que la lecture de fichier BMP.
BMP est un format qui est tout simple à charger. Pas besoin de librairie externe.


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 28/12/2022 à 22h00
Je l'utilise aussi pour les changements de couleur, le tramage et d'autres effets.

J'ai bon espoir de pouvoir faire une version Linux, mais c'est pas ma priorité pour le moment.


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 15/01/2023 à 02h42
Hello,

Une nouvelle version de MSXgl est dispo sur GitHub : MSXgl v0.8.0 Alpha.

Cette mise à jour est principalement orienté vers le MSX-DOS (qui était un point faible de MSXgl).

Nouveautés :
- [DOS] Ajout de nombreuses fonctions MSX-DOS 2 pour couvrir les besoins principaux et optimisation des fonctions existantes.
- [DOS] Les targets 'DOS1' et 'DOS2' peuvent maintenant utiliser la fonction du style main(argc, argv) pour obtenir les paramètres de la ligne de commande.
Pour toutes les targets :
void main();

Pour les targets DOS1 ou DOS2 :
void main(u8 argc, const c8** argv);

Pour la target DOS2 uniquement :
u8 main();
u8 main(u8 argc, const c8** argv);

- [DOS Mapper] Ajout d'un nouveau module pour gérer le mappeur de mémoire à travers les fonctionnalités étendues du BIOS du MSX-DOS 2.
- [Input] Séparation du Input manager dans un module à part ('input_manager').
- [Tools] Passage du générateur de DSK de DskTool à msxtar pour permettre la génération de disques de démarrage DOS 2.
- [Build Tool] Ajout d'un nouveau type de cible 'DOS0' pour créer un programme qui démarre du disque avec accès aux fonctions BDOS mais sans passer par la séquence de démarrage MSX-DOS. Cela permet au jeu de démarrer (rapidement) directement à partir du disque.
- [Build Tool] Ajout de script de build pour Linux et correction de certains problèmes (EOL ou problème de chmod).
- [Core] Suppression du "#pragma disable_warning 85" (warning "unreferenced function argument") et correction de plusieurs warnings de compilation.
- [Doc] Mise à jour de la documentation du code source et ajout de la liste des options de compilation sur le wiki.

Ca avance. :)


On est toujours ignorant avant de savoir.
Github    
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 775

Le 18/01/2023 à 22h21
Il y a des cours pour apprendre à se servir de tout ça?


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 19/01/2023 à 09h58
Il y a :
- un wiki (https://aoineko.org/msxgl) qui explique comment installer la librairie, tester les programmes d'exemple (sample) et créer son propre projet.
- une documentation en ligne (https://aoineko.org/msxgl_doc),
- les nombreux programmes d'exemple (sample) qui illustrent l'utilisation d'un module, d'un périphérique ou d'un média cible particulier (ROM, ROM mappée, MSX-DOS, binaire BASIC, etc.),
- et le Village, MRC ou le serveur Discord (https://discord.gg/pMeadGfv8E) pour poser des questions auxquelles je réponds volontiers. :)

Je pense à créer une vidéo tutoriel pour comment se lancer dans MSXgl mais ce n'est pas une prio pour le moment.
Je pourrais aussi écrire quelques tutos ici en français.

Qu'aimerais-tu avoir comme info ?


On est toujours ignorant avant de savoir.
Github    
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 775

Le 20/01/2023 à 19h39
Je vais déjà explorer tout ça, merci!


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 21/01/2023 à 15h14
@MSXosaure, j'ai écris une présentation de la librairie en français sur le wiki du village : https://msxvillage.fr/wiki/msxgl


On est toujours ignorant avant de savoir.
Github    
Sebbeug Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h33

Messages: 2246

Le 21/01/2023 à 15h25
:top :love


Clé de sol

Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 04/11/2023 à 23h07
Hello,

J'ai ajouté un nouveau module à ma librairie C pour MSX : Sprite tool.
Il permet de modifier en temps-réel les données d'un sprite.

Il ajoute les fonctionnalités suivantes :
- Crop (supprime un bord du sprite),
- Flip (fait une symétrie axiale),
- Mask (masque tous les bits à 0 dans les données),
- Rotate (tourne par étape de 90°).

J'ai aussi ajouté un programme d'exemple (s_sptool) pour illustrer l'utilisation de ce nouveau module :
sample_sprttool

Vous pouvez le tester là : https://webmsx.org/?ROM=https://github.com/aoineko-fr/MSXgl/raw/main/projects/samples/emul/rom/s_sptool.rom Edité par aoineko Le 04/11/2023 à 23h39


On est toujours ignorant avant de savoir.
Github    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1484

Le 05/11/2023 à 12h00
Wow.
Ca c'est impressionnant.
C'est écrit en assembleur ou en C ?
Ou un mix des 2 ?


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 05/11/2023 à 12h27
Pour le moment c'est écrit entièrement en C.
J'ai essayé d'écrire de façon plutôt optimal et j'utilise notamment des tables précalculées (3 x 8 octets) pour accélérer les choses.

Après, il y a quelques "triches" dans le programme d'exemple :
- Les sprites 3 couleurs sont en fait 2 sprites en OR (ça fait moins de calculs).
- Le Flip et le Rotate est précalculé en RAM au démarrage du programme.

Ceci dit, j'ai quand même les données de 8 sprites 16x16 qui sont mis à jour en VRAM à chaque frame, ainsi que tous les calculs de Crop + Flip + Mask qui tiennent en 1 frame.
Dans un vrai cas d'utilisation on pourrait étaler les calculs sur plusieurs frames pour éviter d'avoir des piques d'utilisation du Z80.

Je prévois de toute façon de passer tout ça en assembleur.
Y a moyen de gratter pas mal de cycles.
Je testerai même de unroll les bouclez de 8 itérations pour booster vraiment les calculs (à voir si le code ne devient pas trop gros).
Au final, il n'y a que les Rotate droite/gauche qui sont vraiment gourmands vu qu'ils nécessitent une double boucle pour convertir les bits en colonne sur un octet des lignes. Edité par aoineko Le 05/11/2023 à 12h30


On est toujours ignorant avant de savoir.
Github    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 05/11/2023 à 13h14
Il est modeste, le "flip" des bits dans un octet est déjà en assembleur :siffle ;)

7 6 5 4 3 2 1 0 les bits sont dans "l'ordre"
0 1 2 3 4 5 6 7 les bits sont "flippés" Edité par z80 Le 05/11/2023 à 13h17


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie