Posté le 27/11/2019 15:12
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 171 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 31/05/2023 13:50 | #
Merci ! J'ai réussi finalement depuis, j'ai finalement utilisé fxconv comme Lephenixnoir me l'a conseillé. C'était plus facile à implémenté, mais merci quand même
Albert Einstein
Citer : Posté le 01/06/2023 18:31 | #
Je me suis baladé sur Planet Casio pour savoir comment utiliser FYI et j'ai pas trouvé.
Par conséquent j'aimerai savoir comment overclocker mon jeu ?
Albert Einstein
Citer : Posté le 01/06/2023 18:33 | #
Comment utiliser FYI ? "FYI" veut dire "For Your Information".
Pour l'overclock l'astuce c'est de regarder dans les mini-tutoriels qui sont dans le post principal de gint, dans le tableau des versions. En l'occurrence celui sur l'overclock est https://www.planet-casio.com/Fr/forums/topic13572-65-gint-un-noyau-pour-developper-des-add-ins.html#187840
Note que F5 casse sur certaines fx-CG 50 un peu faibles donc pas ultra recommandé.
Citer : Posté le 01/06/2023 18:37 | #
Merci !
Comment utiliser FYI ? "FYI" veut dire "For Your Information".
Ha ! Autant pour moi
Note que F5 casse sur certaines fx-CG 50 un peu faibles donc pas ultra recommandé.
Quand tu dis "F5" c'est la touche F5 c'est ça ? J'ai pas bien compris ce qui n'est pas recommander, c'est d'overclocker pour les fx-CG 50 ?
Albert Einstein
Citer : Posté le 01/06/2023 18:40 | #
Pardon, le problème c'est que le niveau d'overclock "F5" (nommé ainsi parce qu'il est activé en appuyant sur F5 dans Ptune3) causes des crashs sur quelques fx-CG 50 dont le matériel ne doit pas être en superbe condition. Donc ce qui n'est pas recommandé, c'est d'activer automatiquement l'overclock au niveau F5 sur fx-CG 50 (ie. il vaut mieux laisser l'utilisateur le faire dans Ptune3). Comme les Graph 90+E et fx-CG 50 sont identiques du point de vue des add-ins (et les g3a de l'un installables sur l'autre) je recommande donc que le programme lui-même se limite à F4 même sur Graph 90+E.
Citer : Posté le 02/06/2024 13:28 | #
Hello les gens !
J'essaye de faire une librairie en .a pour Particule avec fxsdk mais je galère un peu parce que j'ai jamais fait de librairie pour casio et j'aimerai bien sollicité un peu d'aide
Alors voila mon CMakeLists.txt :
cmake_minimum_required(VERSION 3.10)
project(Particule)
# Définition des variables
set(CC g++)
set(CPPFLAGS -MMD)
set(CFLAGS -I ${CMAKE_BINARY_DIR}/includes)
set(LDLIBS -lm -L ${CMAKE_BINARY_DIR}/includes)
set(OUTPUT ${CMAKE_BINARY_DIR}/../bin)
set(NAME particule.a)
# Répertoire source
file(GLOB_RECURSE SRCS
"../Particule/*.cpp"
"./Particule/*.cpp"
)
# Include directories
include_directories(
${OUTPUT}/includes
)
# Configuration des options de compilation et de liaison
add_compile_options(${CPPFLAGS} ${CFLAGS})
link_libraries(${LDFLAGS} ${LDLIBS})
# Générer les fichiers objets
add_library(${NAME} STATIC ${SRCS})
# Custom commands for post-build
add_custom_command(TARGET ${NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT}/exedir
COMMENT "Particule.a done !"
)
# Custom target for includes
add_custom_target(includes ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT}/includes
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/../Particule/includes ${OUTPUT}/includes
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/Particule/includes ${OUTPUT}/includes
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Particule.mk ${OUTPUT}
COMMENT "Includes copied"
)
# Dépendance de la bibliothèque sur la cible includes
add_dependencies(${NAME} includes)
# Custom target for cleaning
add_custom_target(clean
COMMAND ${CMAKE_COMMAND} -E remove_directory ${OUTPUT}
COMMAND ${CMAKE_COMMAND} -E remove ${NAME}
COMMENT "Cleaned up"
)
# Custom target for rebuild (clean + all)
add_custom_target(rebuild
DEPENDS clean all
COMMENT "Rebuild all"
)
Je tape ça :
Et j'obtiens ça :
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/leo/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/leo/.local/bin/sh-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:56 (add_custom_target):
The target name "clean" is reserved or not valid for certain CMake
features, such as generator expressions, and may result in undefined
behavior.
-- Configuring incomplete, errors occurred!
See also "/mnt/c/Users/leo/Desktop/CASIO/Projets/ParticuleEngine/CasioCg/build/CMakeFiles/CMakeOutput.log".
See also "/mnt/c/Users/leo/Desktop/CASIO/Projets/ParticuleEngine/CasioCg/build/CMakeFiles/CMakeError.log".
make: Entering directory '/mnt/c/Users/leo/Desktop/CASIO/Projets/ParticuleEngine/CasioCg/build'
make: *** No targets specified and no makefile found. Stop.
make: Leaving directory '/mnt/c/Users/leo/Desktop/CASIO/Projets/ParticuleEngine/CasioCg/build'
Albert Einstein
Citer : Posté le 02/06/2024 13:58 | #
Well, l'erreur "The target name "clean" is reserved" est assez explicite. CMake produit déjà une règle clean, t'as pas besoin de le faire toi-même.
Après y'a des trucs suspects. set(CC g++) à aucun moment ça peut marcher tu vas cross-compiler. CMake trouve ton compilateur tout seul, et dans le cas du fxSDK le fxSDK dit à CMake quel compilateur utiliser. Toi tu t'en occupes pas. Pareil pour -MMD, c'est pas ton problème, CMake gère.
(Note que changer le nom du dossier de build avec le fxSDK c'est pas prévu normalement)
Mis à part tes cibles personnalisées, c'est comme un add-in mais avec add_library(STATIC) et pas de génération de g1a/g3a. Tu peux voir le dépôt Lephenixnoir/Template-gint-library qui montre un exemple. Si tu linkes pas avec gint y'a des trucs nettoyables mais les idées restent les mêmes.
Citer : Posté le 02/06/2024 15:41 | #
Merci ! J'ai réussi a le faire fonctionner.
J'ai une autre question : Est-ce je suis obliger de copier les .hpp de Particule dans mon projet qu'il utilise, ou est-ce qu'il n'existerai pas un moyen de faire sans et d'avoir juste le .a ?
Albert Einstein
Citer : Posté le 02/06/2024 16:23 | #
Techniquement les réponses à ces questions sont non et non. Tu ne peux pas faire avec juste le .a parce que les langages C et C++ ne peuvent interfacer avec des fonctions externes (comme celles qui sont dans des bibliothèques) que si tu donnes leur prototype. Et puis come on y'a tous les types de données tu imagines bien quand sans les définitions des types la lib est inutilisable.
Du reste t'es pas obligé de mettre les headers de Particule dans le projet, pas plus que ceux de gint ne sont dans les dossiers d'add-ins. Il suffit de les installer dans le dossier approprié de la sysroot, lequel t'est—surprise surprise—identifié par le fxSDK sous la forme de la variable FXSDK_INCLUDE.
Voilà comment tu installes les headers dans le bon dossier : https://git.planet-casio.com/Lephenixnoir/Template-gint-library/src/branch/master/CMakeLists.txt#L43-L45
Assure-toi bien que tes headers sont dans un dossier genre ${FXSDK_INCLUDE}/particule à l'installation pour qu'on les inclue avec <particule/truc.h>.
Citer : Posté le 07/06/2024 01:23 | # | Fichier joint
Bonjour !
Alors c'est peut-être qu'une impression mais j'ai l'impression que clock_set_speed ne marche pas, est-ce normal ?
J'ai installer Gint, j'ai fait ce code ci dessous, ca compile, ca se lance mais aucune différence de performance/vitesse d'affichage.
J'ai mis en pièce jointe ce mini test (sources, makefile, .g3a que j'ai build)
Est-ce que c'est a cause de C++ que c'est aussi lent ?
#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/rtc.h>
#include <gint/gint.h>
#include <gint/timer.h>
#include <gint/clock.h>
extern bopti_image_t IMG_ASSET_texture;
int main()
{
int i = 0;
while (!keydown(KEY_EXIT))
{
dclear(C_BLACK);
clearevents();
dimage(i++, 0, &IMG_ASSET_texture);
dupdate();
i = i % 100;
if (keydown(KEY_UP))
clock_set_speed(CLOCK_SPEED_F4);
if (keydown(KEY_DOWN))
clock_set_speed(CLOCK_SPEED_F1);
}
return 0;
}
Albert Einstein
Citer : Posté le 10/06/2024 12:04 | #
Après test, l'overclock marche bien comme attendu et C++ n'est pas coupable (y'a aucune raison que C++ soit coupable). Avec une image de 64x64 en 16-bit, la boucle prend 15.2 ms de base environ, passés presque exclusivement dans dclear() (~4 ms) et dupdate() (~11 ms). Ces deux opérations sont effectuées par le DMA et limitées par la vitesse de la RAM et de l'écran respectivement. Ces deux vitesses sont cadencées par Bϕ = 58.07 MHz qui ne change pas entre les modes F1 et F4. D'où une vitesse avec overclock de 14.8 ms environ, i.e. un changement quasiment imperceptible. Bϕ change au mode F5 mais est un peu fort et pose des problèmes à certaines fx-CG 50. On peut peut-être trouver un juste milieu.
Citer : Posté le 10/06/2024 13:31 | #
Il y a d'ailleurs une PR dans gint suite au changement dans PTune 0.25 de Sentaro.
Elle vise à descendre le multiplicateur x26 --> x25 dans FRQCR : https://git.planet-casio.com/Lephenixnoir/gint/issues/28
C'est a priori plus safe.
Sur ma fxCG50 faiblarde ça passe bien sans glitch.
Citer : Posté le 02/10/2024 12:23 | #
Hello les gens !
Récemment j'ai essayé d'installer Azur et j'ai rencontré quelques difficultés.
J'ai essayé de mettre à jour G++, Cmake et tout le tralala et pourtant j'ai cette erreur.
J'ai essayé sur un autre PC, pareil.
Azur$ fxsdk build-cg install
-- The C compiler identification is GNU 14.1.0
-- The CXX compiler identification is GNU 14.1.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/leo/.local/bin/sh-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/leo/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/leo/.local/bin/sh-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Gint: TRUE (found suitable version "2.11.0", minimum required is "2.8")
-- Found Gint: TRUE (found suitable version "2.11.0", minimum required is "2.2.1")
-- Found LibProf: /home/leo/.local/share/fxsdk/sysroot/sh3eb-elf/lib/libprof-cg.a (found suitable version "2.4.0", minimum required is "2.4")
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/c/Users/leo/Desktop/CASIO/Azur/build-cg
Scanning dependencies of target num
[ 2%] Building CXX object libnum/CMakeFiles/num.dir/src/num.cpp.obj
[ 5%] Building CXX object libnum/CMakeFiles/num.dir/src/str.cpp.obj
[ 8%] Building ASM object libnum/CMakeFiles/num.dir/src/sh4aldsp/div_i32_i16_i16.s.obj
[ 10%] Linking CXX static library libnum.a
[ 10%] Built target num
Scanning dependencies of target azur
[ 13%] Building CXX object azur/CMakeFiles/azur.dir/src/log.cpp.obj
[ 16%] Building CXX object azur/CMakeFiles/azur.dir/src/gint/init.cpp.obj
In file included from /mnt/c/Users/leo/Desktop/CASIO/Azur/azur/src/gint/init.cpp:1:
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:54:10: error: ‘function’ is not a member of ‘std’
54 | std::function<void(void)> const &render, int render_fps,
| ^~~~~~~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:8:1: note: ‘std::function’ is defined in header ‘<functional>’; this is probably fixable by adding ‘#include <functional>’
7 | #include <functional>
+++ |+#include <functional>
8 |
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:54:19: error: expected primary-expression before ‘void’
54 | std::function<void(void)> const &render, int render_fps,
| ^~~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:54:46: error: expected primary-expression before ‘int’
54 | std::function<void(void)> const &render, int render_fps,
| ^~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:55:10: error: ‘function’ is not a member of ‘std’
55 | std::function<int(void)> const &update, int update_ups,
| ^~~~~~~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:55:10: note: ‘std::function’ is defined in header ‘<functional>’; this is probably fixable by adding ‘#include <functional>’
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:55:19: error: expected primary-expression before ‘int’
55 | std::function<int(void)> const &update, int update_ups,
| ^~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:55:45: error: expected primary-expression before ‘int’
55 | std::function<int(void)> const &update, int update_ups,
| ^~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:56:5: error: expected primary-expression before ‘int’
56 | int flags);
| ^~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:56:14: error: expression list treated as compound expression in initializer [-fpermissive]
56 | int flags);
| ^
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/src/gint/init.cpp:48:14: error: ‘int azur_main_loop(void (*)(), int, int (*)(), int, int)’ redeclared as different kind of entity
48 | int flags)
| ^
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/include/azur/azur.h:53:5: note: previous declaration ‘int azur_main_loop’
53 | int azur_main_loop(
| ^~~~~~~~~~~~~~
/mnt/c/Users/leo/Desktop/CASIO/Azur/azur/src/gint/init.cpp:34:15: warning: ‘ml_time’ defined but not used [-Wunused-variable]
34 | static double ml_time = 0.0;
| ^~~~~~~
make[2]: *** [azur/CMakeFiles/azur.dir/build.make:90: azur/CMakeFiles/azur.dir/src/gint/init.cpp.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:925: azur/CMakeFiles/azur.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
Albert Einstein
Citer : Posté le 02/10/2024 12:29 | #
Essaie d'ajouter -fno-freestanding -fno-builtin dans les options qui vont au compilo SuperH
Citer : Posté le 02/10/2024 12:39 | #
Ho ça a marché ! Super merci beaucoup !
Je vais sûrement poser quelques questions plus tard sur Azur vu que c'est la première fois que je le teste, je m'excuse d'avance.
Changer ça dans CMakeLists.txt pour que ça marche
#---
# Compile options
#---
add_compile_options(
-Wall -Wextra
$<IF:$<CONFIG:DEBUG>,-O0,-Os>
$<$<CONFIG:DEBUG>:-g>
-fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}/=
-fno-freestanding
-fno-builtin
)
Albert Einstein
Citer : Posté le 02/10/2024 12:46 | #
Heya, pas de souci. La doc d'Azur n'est pas complète/existante comme celle de gint, donc hésite pas à demander, je suis derrière. Désolé pour l'absence de documents disponibles immédiatement.
Citer : Posté le 02/10/2024 12:53 | #
Okay !
Pour le moment, j'ai juste besoin de clarifier quelques trucs.
Concrètement, si j'ai bien compris, Azur est une sorte de surcouche de Gint ?
Ce que je veux dire par là, c'est que, par exemple, le système d'input n'a pas changé, c'est toujours le même que Gint, il y a uniquement le système de rendu qui est impacté.
Autre question, si je suis passé à Azur, c'est parce qu'on m'a dit que c'est plus rapide. Donc, grosso modo, moi qui cherche à afficher des Quads avec une texture, comment je fais pour écrire dans le buffer et aller super vite ?
Albert Einstein
Citer : Posté le 02/10/2024 14:08 | #
Azur est un moteur entier, mais concrétement tu voudrais plutôt seulement utiliser azrp (AZur Rendering Pipeline) , le truc qui fait du dessin rapide. Pour ça tu peux regarder du côté du shmup de Sly.
Plus spécifiquement, il y a peu de builtins donc il va falloir que tu fasse ton propre shader, même si tu peux commencer avec deux azrp_triangle pour tester.
Lephe a fait un gros post explicatif sur comment s'y prendre en réponse à potter360, il faudrait que je le retrouve
Edit : ici
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 02/10/2024 14:33 | #
Merci ! J'avais déjà lu le post de potter360 avant mais qu'est-ce que c'est compliqué dis donc.
Du coup je suis allé voir le code source de Azuray, je comprend le principe mais le code est inhumain
Et il faut vraiment faire les Shaders en assembleur ?
Albert Einstein
Citer : Posté le 02/10/2024 14:34 | #
Tout est écrit dans le post en gros
(Et pour Azuray c'est du C++, c'est normal )
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 02/10/2024 16:00 | #
Yup, t'as toutes les infos du coup. Il est pas nécessaire d'écrire les shaders en assembleur, d'ailleurs je conseille de toujours les écrire en C au début pour les debugger aisément. Par contre si tu veux les perfs maximales il faut les écrire en assembleur oui. Mais si t'en fais des intéressants (e.g. triangles avec textures affines ou depth-correct) je pourrai les convertir en échange de les ajouter à la bibliothèque de shaders pré-construits.