Posté le 27/11/2019 15:12
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 112 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.