Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » Comment faire un jeu en C pour Graph 75 et 35+ ?
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

Comment faire un jeu en C pour Graph 75 et 35+ ?

Posté le 27/11/2019 15:12

Bonjour à tous,
Récemment j'ai voulu commencé à faire un jeux en C mais le souci c'est que je ne parvient pas à trouver les alternatives de certaines fonction présente en BASIC comme par exemple:
-Pxlon
-F-Line
-Getkey
-Text

Tout ce qui relève à des fonction spécifique de la calculatrice, dont ces fonctions (celles que je viens d’énoncé au dessus) qui me semble indispensable.

Merci d'avance pour votre aide


Précédente 1, 2, 3 ··· 9, 10, 11, 12
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

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
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

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 ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24296 Défis: 170 Message

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é.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

Citer : Posté le 01/06/2023 18:37 | #


Merci !
Lephenixnoir a écrit :
Comment utiliser FYI ? "FYI" veut dire "For Your Information".

Ha ! Autant pour moi

Lephenixnoir a écrit :
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 ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24296 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

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 :
CMakeLists.txt
Cliquer pour enrouler


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 :
fxsdk build-cg -c -B build;make -C build

Et j'obtiens ça :
Erreur
Cliquer pour enrouler


-- 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'


"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24296 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

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 ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24296 Défis: 170 Message

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>.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1310 Défis: 0 Message

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;
}

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24296 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2318 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Précédente 1, 2, 3 ··· 9, 10, 11, 12

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 39 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