1

Voila j'ai essayé de faire une dll voici la source: #include <tigcclib.h> DLL_INTERFACE //===========================UNDEAD================================= // Altar of Darkness static unsigned long altarL[]={ 0x0, 0x7E187E0, 0x3C3C3C0, 0x3C3C3C0, 0x24FF240, 0x1981980, 0x1BC3D80, 0x1FE7F80, 0x9FDBF90, 0x9FDBF90, 0x15DDBBB8, 0x141DB838, 0x140FF038, 0x1C0E7038, 0x1C1FF838, 0x1C7FFE38, 0x1FFFFFF8, 0x37FFFFEC, 0x36FFFF6C, 0x3FFC3FFC, 0x3FFE7FFC, 0x3FCFF3FC, 0x3FCFF3FC, 0x3ECE737C, 0x73CE73CE, 0x6F8661F6, 0x6F8661F6, 0x5F8661FA, 0x7B8661DE, 0x7D87E1BE, 0x7FFFFFFE, 0x0}; static unsigned long altarD[]={ 0x0, 0x18000, 0x24000, 0x3C243C0, 0x24FF240, 0x1900980, 0x1A42580, 0x1D24B80, 0x9A99590, 0x9C99390, 0x14099028, 0x1405A028, 0x14042028, 0x1C042038, 0x140FF028, 0x14118828, 0x147A5E28, 0x23CA53C4, 0x224FF244, 0x3648126C, 0x2A842154, 0x2287E144, 0x2E842174, 0x3284214C, 0x41024082, 0x41024082, 0x470240E2, 0x49024092, 0x5102408A, 0x5102408A, 0x7FFFFFFE, 0x0}; // Crypt static unsigned long cryptL[]={ 0x0, 0x18000, 0x3C000, 0xE7000, 0x7E000, 0x3C000, 0x803C010, 0x1C0FF038, 0x361FF86C, 0x1C366C38, 0x1C37EC38, 0x1C3FFC38, 0x1D27E4B8, 0x1FB7EDF8, 0x1FFFFFF8, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x37FFFFEC, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x7F0000FE, 0x7F0000FE, 0x0}; static unsigned long cryptD[]={ 0x0, 0x18000, 0x24000, 0xC3000, 0x66000, 0x24000, 0x803C010, 0x140DB028, 0x22124844, 0x14242428, 0x14242428, 0x143FFC28, 0x152184A8, 0x16A24568, 0x1455AA28, 0x225BDA44, 0x2255AA44, 0x225DAA44, 0x2255AA44, 0x2255AA44, 0x2255AA44, 0x23FFFFC4, 0x41AAAA82, 0x41555582, 0x41AAAA82, 0x41555582, 0x41AAAA82, 0x41555582, 0x41FFFF82, 0x41000082, 0x7F0000FE, 0x0}; // Graveyard static unsigned long graveyardL[]={ 0x0, 0x7E000, 0xFF000, 0x1BD800, 0x366C00, 0x6E7600, 0xFFFF00, 0x4FFFF00, 0xEFFFF00, 0xEE7E700, 0xE6E7600, 0xE6E7600, 0xE6E7600, 0xE2E7400, 0xE366C00, 0xE3FFC20, 0xE1FF870, 0xE1FF870, 0xE3FFC70, 0xE3FFC70, 0xE7FFE70, 0x1F7FFEF8, 0x3FFFFFFC, 0x3FFFFFFC, 0x3FEFF7FC, 0x3FEFF7FC, 0x7FEE77FE, 0x67D7EBE6, 0x7FFBDFFE, 0x7FFFFFFE, 0xFFFF00, 0x0}; static unsigned long graveyardD[]={ 0x0, 0x7E000, 0x81000, 0x118800, 0x224400, 0x424200, 0x818100, 0x4FFFF00, 0xA818100, 0xA824100, 0xA442200, 0xA442200, 0xA442200, 0xA242400, 0xA224400, 0xA224420, 0xA1FF850, 0xA100850, 0xA3FFC50, 0xA200450, 0xE7FFE70, 0x11400288, 0x3FFFFFFC, 0x20400204, 0x2843C214, 0x28442214, 0x44842122, 0x42824142, 0x40918902, 0x7FB99DFE, 0xFFFF00, 0x0}; // Haunted mine static unsigned long hauntedL[]={ 0x0, 0x1C0F0038, 0x3C7FE03C, 0x5CFDFC3A, 0x6FFFFF76, 0x77FBFBEE, 0xAFFDF50, 0x1F7FFEE0, 0x1FBFFDF0, 0x1FDFFBF0, 0x3FFFFFF0, 0x3EFFFFF8, 0x2FFFFFF8, 0x3FFBDFD8, 0x1FFFFFFC, 0x1EFE7FFC, 0x1FFE7EEC, 0x1FFFFFFC, 0x3FFBDFFE, 0x3DFFFFD6, 0x3FFFFFFE, 0x1FFFFDFE, 0x17DFFEFC, 0x1FBFFF7C, 0x1F7F7FB8, 0xBFFFFF0, 0x77DFDFBE, 0x6EFFFFDE, 0x5C7EFFAE, 0x3C0FBC34, 0x1C01E038, 0x0}; static unsigned long hauntedD[]={ 0x0, 0x1C0F0038, 0x2C70E034, 0x44801C22, 0x63248346, 0x7100108E, 0x8900110, 0x14435220, 0x12224450, 0x11124890, 0x24BFFD10, 0x20600648, 0x24A7E508, 0x20281408, 0x11E99784, 0x102A5424, 0x142A5404, 0x11E99784, 0x20281412, 0x2927E482, 0x20600602, 0x12BFFD12, 0x11124884, 0x12224444, 0x144A5228, 0x8800110, 0x7109048E, 0x62824846, 0x447003A2, 0x2C0E1C34, 0x1C01E038, 0x0}; // Ziggurat static unsigned long zigguratL[]={ 0x0, 0x18000, 0x3C000, 0x3C000, 0x7E000, 0x7E000, 0x7E000, 0x63C600, 0x3FFC00, 0x3FFC00, 0x1FF800, 0x1FF800, 0x37EC00, 0x37EC00, 0x6FF600, 0x6FF600, 0xDBDB00, 0xDA5B00, 0x1B7ED80, 0x1B7ED80, 0x7FFFFE0, 0x1FDBF80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0xFDBF00, 0xFDBF00, 0xFDBF00, 0xFFFF00, 0x0}; static unsigned long zigguratD[]={ 0x0, 0x18000, 0x3C000, 0x3C000, 0x66000, 0x66000, 0x66000, 0x63C600, 0x3FFC00, 0x324C00, 0x124800, 0x124800, 0x25A400, 0x242400, 0x499200, 0x481200, 0x93C900, 0x924900, 0x125A480, 0x1242480, 0x7FFFFE0, 0x1999980, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x999900, 0x999900, 0x999900, 0xFFFF00, 0x0}; // Ziggurat+Tower static unsigned long zigguratTL[]={ 0x0, 0x618600, 0xC24300, 0x1824180, 0x1066080, 0x187E180, 0xC7E300, 0x63C600, 0x3FFC00, 0x3FFC00, 0x1FF800, 0x1FF800, 0x37EC00, 0x37EC00, 0x6FF600, 0x6FF600, 0xDBDB00, 0xDA5B00, 0x1B7ED80, 0x1B7ED80, 0x7FFFFE0, 0x1FDBF80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0xFDBF00, 0xFDBF00, 0xFDBF00, 0xFFFF00, 0x0}; static unsigned long zigguratTD[]={ 0x0, 0x618600, 0xC24300, 0x1824180, 0x1066080, 0x1866180, 0xC66300, 0x63C600, 0x3FFC00, 0x324C00, 0x124800, 0x124800, 0x25A400, 0x242400, 0x499200, 0x481200, 0x93C900, 0x924900, 0x125A480, 0x1242480, 0x7FFFFE0, 0x1999980, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x999900, 0x999900, 0x999900, 0xFFFF00, 0x0}; DLL_ID 372331723 DLL_VERSION 0,1 DLL_EXPORTS altarL,altarD,cryptL,cryptD,graveyardL,graveyardD,hauntedL,hauntedD,zigguratL,zigguratD,zigguratTL,zigguratTD DLL_IMPLEMENTATION void _main() {      if (LoadDLL ("wardll", 372331723, 0, 1) != DLL_OK)           return;            if (!GrayOn())           return;      ClrScr();      Sprite32 (0, 0, 32, altarL, GetPlane(0), SPRT_OR);       Sprite32 (0, 0, 32, altarD, GetPlane(1), SPRT_OR);      Sprite32 (0, 32, 32, cryptL, GetPlane(0), SPRT_OR);       Sprite32 (0, 32, 32, cryptD, GetPlane(1), SPRT_OR);      Sprite32 (0, 64, 32, graveyardL, GetPlane(0), SPRT_OR);       Sprite32 (0, 64, 32, graveyardD, GetPlane(1), SPRT_OR);            Sprite32 (32, 0, 32, hauntedL, GetPlane(0), SPRT_OR);       Sprite32 (32, 0, 32, hauntedD, GetPlane(1), SPRT_OR);      Sprite32 (32, 32, 32, zigguratL, GetPlane(0), SPRT_OR);       Sprite32 (32, 32, 32, zigguratD, GetPlane(1), SPRT_OR);      Sprite32 (32, 64, 32, zigguratTL, GetPlane(0), SPRT_OR);       Sprite32 (32, 64, 32, zigguratTD, GetPlane(1), SPRT_OR);            ngetchx();      GrayOff();             }
est-ce correct? parce que tigcc me sort seulement un .89y
alors je vois pas comment je lance le prog
Il faut savoir que tout le code source se trouve dans un projet nommé : Warcraft.
je voudrais que la dll se nomme wardll.
Le compil me sort : warcraft.89y
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

2

que ce soit un .89y, je pense que c'est normal : une Dll n'est pas un fichier exécutable, mais un fichier de données ; et c'est à un programme d'appeler ces données en les considérant comme du code.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

mais justement, je sais qu'une dll n'est pas executable.
Mais ou se trouve alors le fichier 89z??? le compilateur ne la pas fait ou quoi?
il faut rajouter des choses?
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

4

pour utiliser ta Dll, il faut que tu crée un autre projet, qui correspondra au programme utilisant des fonctions de la Dll.
(enfin, je pense ; j'ai jamais eu besoin d'utiliser une Dll, jusqu'à présent)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

bah c comme une dll sous win hein :]

6

ah ouè je vois.
Toute la dll forme 1 seul projet.
Mais alors dans le prog principal, il faut faire des #define pour chaque élément à appeler?
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

7

DoomAngel :
Voila j'ai essayé de faire une dll voici la source: #include <tigcclib.h> DLL_INTERFACE //===========================UNDEAD================================= // Altar of Darkness static unsigned long altarL[]={ 0x0, 0x7E187E0, 0x3C3C3C0, 0x3C3C3C0, 0x24FF240, 0x1981980, 0x1BC3D80, 0x1FE7F80, 0x9FDBF90, 0x9FDBF90, 0x15DDBBB8, 0x141DB838, 0x140FF038, 0x1C0E7038, 0x1C1FF838, 0x1C7FFE38, 0x1FFFFFF8, 0x37FFFFEC, 0x36FFFF6C, 0x3FFC3FFC, 0x3FFE7FFC, 0x3FCFF3FC, 0x3FCFF3FC, 0x3ECE737C, 0x73CE73CE, 0x6F8661F6, 0x6F8661F6, 0x5F8661FA, 0x7B8661DE, 0x7D87E1BE, 0x7FFFFFFE, 0x0}; static unsigned long altarD[]={ 0x0, 0x18000, 0x24000, 0x3C243C0, 0x24FF240, 0x1900980, 0x1A42580, 0x1D24B80, 0x9A99590, 0x9C99390, 0x14099028, 0x1405A028, 0x14042028, 0x1C042038, 0x140FF028, 0x14118828, 0x147A5E28, 0x23CA53C4, 0x224FF244, 0x3648126C, 0x2A842154, 0x2287E144, 0x2E842174, 0x3284214C, 0x41024082, 0x41024082, 0x470240E2, 0x49024092, 0x5102408A, 0x5102408A, 0x7FFFFFFE, 0x0}; // Crypt static unsigned long cryptL[]={ 0x0, 0x18000, 0x3C000, 0xE7000, 0x7E000, 0x3C000, 0x803C010, 0x1C0FF038, 0x361FF86C, 0x1C366C38, 0x1C37EC38, 0x1C3FFC38, 0x1D27E4B8, 0x1FB7EDF8, 0x1FFFFFF8, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x37FFFFEC, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x7F0000FE, 0x7F0000FE, 0x0}; static unsigned long cryptD[]={ 0x0, 0x18000, 0x24000, 0xC3000, 0x66000, 0x24000, 0x803C010, 0x140DB028, 0x22124844, 0x14242428, 0x14242428, 0x143FFC28, 0x152184A8, 0x16A24568, 0x1455AA28, 0x225BDA44, 0x2255AA44, 0x225DAA44, 0x2255AA44, 0x2255AA44, 0x2255AA44, 0x23FFFFC4, 0x41AAAA82, 0x41555582, 0x41AAAA82, 0x41555582, 0x41AAAA82, 0x41555582, 0x41FFFF82, 0x41000082, 0x7F0000FE, 0x0}; // Graveyard static unsigned long graveyardL[]={ 0x0, 0x7E000, 0xFF000, 0x1BD800, 0x366C00, 0x6E7600, 0xFFFF00, 0x4FFFF00, 0xEFFFF00, 0xEE7E700, 0xE6E7600, 0xE6E7600, 0xE6E7600, 0xE2E7400, 0xE366C00, 0xE3FFC20, 0xE1FF870, 0xE1FF870, 0xE3FFC70, 0xE3FFC70, 0xE7FFE70, 0x1F7FFEF8, 0x3FFFFFFC, 0x3FFFFFFC, 0x3FEFF7FC, 0x3FEFF7FC, 0x7FEE77FE, 0x67D7EBE6, 0x7FFBDFFE, 0x7FFFFFFE, 0xFFFF00, 0x0}; static unsigned long graveyardD[]={ 0x0, 0x7E000, 0x81000, 0x118800, 0x224400, 0x424200, 0x818100, 0x4FFFF00, 0xA818100, 0xA824100, 0xA442200, 0xA442200, 0xA442200, 0xA242400, 0xA224400, 0xA224420, 0xA1FF850, 0xA100850, 0xA3FFC50, 0xA200450, 0xE7FFE70, 0x11400288, 0x3FFFFFFC, 0x20400204, 0x2843C214, 0x28442214, 0x44842122, 0x42824142, 0x40918902, 0x7FB99DFE, 0xFFFF00, 0x0}; // Haunted mine static unsigned long hauntedL[]={ 0x0, 0x1C0F0038, 0x3C7FE03C, 0x5CFDFC3A, 0x6FFFFF76, 0x77FBFBEE, 0xAFFDF50, 0x1F7FFEE0, 0x1FBFFDF0, 0x1FDFFBF0, 0x3FFFFFF0, 0x3EFFFFF8, 0x2FFFFFF8, 0x3FFBDFD8, 0x1FFFFFFC, 0x1EFE7FFC, 0x1FFE7EEC, 0x1FFFFFFC, 0x3FFBDFFE, 0x3DFFFFD6, 0x3FFFFFFE, 0x1FFFFDFE, 0x17DFFEFC, 0x1FBFFF7C, 0x1F7F7FB8, 0xBFFFFF0, 0x77DFDFBE, 0x6EFFFFDE, 0x5C7EFFAE, 0x3C0FBC34, 0x1C01E038, 0x0}; static unsigned long hauntedD[]={ 0x0, 0x1C0F0038, 0x2C70E034, 0x44801C22, 0x63248346, 0x7100108E, 0x8900110, 0x14435220, 0x12224450, 0x11124890, 0x24BFFD10, 0x20600648, 0x24A7E508, 0x20281408, 0x11E99784, 0x102A5424, 0x142A5404, 0x11E99784, 0x20281412, 0x2927E482, 0x20600602, 0x12BFFD12, 0x11124884, 0x12224444, 0x144A5228, 0x8800110, 0x7109048E, 0x62824846, 0x447003A2, 0x2C0E1C34, 0x1C01E038, 0x0}; // Ziggurat static unsigned long zigguratL[]={ 0x0, 0x18000, 0x3C000, 0x3C000, 0x7E000, 0x7E000, 0x7E000, 0x63C600, 0x3FFC00, 0x3FFC00, 0x1FF800, 0x1FF800, 0x37EC00, 0x37EC00, 0x6FF600, 0x6FF600, 0xDBDB00, 0xDA5B00, 0x1B7ED80, 0x1B7ED80, 0x7FFFFE0, 0x1FDBF80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0xFDBF00, 0xFDBF00, 0xFDBF00, 0xFFFF00, 0x0}; static unsigned long zigguratD[]={ 0x0, 0x18000, 0x3C000, 0x3C000, 0x66000, 0x66000, 0x66000, 0x63C600, 0x3FFC00, 0x324C00, 0x124800, 0x124800, 0x25A400, 0x242400, 0x499200, 0x481200, 0x93C900, 0x924900, 0x125A480, 0x1242480, 0x7FFFFE0, 0x1999980, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x999900, 0x999900, 0x999900, 0xFFFF00, 0x0}; // Ziggurat+Tower static unsigned long zigguratTL[]={ 0x0, 0x618600, 0xC24300, 0x1824180, 0x1066080, 0x187E180, 0xC7E300, 0x63C600, 0x3FFC00, 0x3FFC00, 0x1FF800, 0x1FF800, 0x37EC00, 0x37EC00, 0x6FF600, 0x6FF600, 0xDBDB00, 0xDA5B00, 0x1B7ED80, 0x1B7ED80, 0x7FFFFE0, 0x1FDBF80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0xFDBF00, 0xFDBF00, 0xFDBF00, 0xFFFF00, 0x0}; static unsigned long zigguratTD[]={ 0x0, 0x618600, 0xC24300, 0x1824180, 0x1066080, 0x1866180, 0xC66300, 0x63C600, 0x3FFC00, 0x324C00, 0x124800, 0x124800, 0x25A400, 0x242400, 0x499200, 0x481200, 0x93C900, 0x924900, 0x125A480, 0x1242480, 0x7FFFFE0, 0x1999980, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x999900, 0x999900, 0x999900, 0xFFFF00, 0x0}; DLL_ID 372331723 DLL_VERSION 0,1 DLL_EXPORTS altarL,altarD,cryptL,cryptD,graveyardL,graveyardD,hauntedL,hauntedD,zigguratL,zigguratD,zigguratTL,zigguratTD DLL_IMPLEMENTATION void _main() {      if (LoadDLL ("wardll", 372331723, 0, 1) != DLL_OK)           return;            if (!GrayOn())           return;      ClrScr();      Sprite32 (0, 0, 32, altarL, GetPlane(0), SPRT_OR);       Sprite32 (0, 0, 32, altarD, GetPlane(1), SPRT_OR);      Sprite32 (0, 32, 32, cryptL, GetPlane(0), SPRT_OR);       Sprite32 (0, 32, 32, cryptD, GetPlane(1), SPRT_OR);      Sprite32 (0, 64, 32, graveyardL, GetPlane(0), SPRT_OR);       Sprite32 (0, 64, 32, graveyardD, GetPlane(1), SPRT_OR);            Sprite32 (32, 0, 32, hauntedL, GetPlane(0), SPRT_OR);       Sprite32 (32, 0, 32, hauntedD, GetPlane(1), SPRT_OR);      Sprite32 (32, 32, 32, zigguratL, GetPlane(0), SPRT_OR);       Sprite32 (32, 32, 32, zigguratD, GetPlane(1), SPRT_OR);      Sprite32 (32, 64, 32, zigguratTL, GetPlane(0), SPRT_OR);       Sprite32 (32, 64, 32, zigguratTD, GetPlane(1), SPRT_OR);            ngetchx();      GrayOff();             }
est-ce correct? parce que tigcc me sort seulement un .89y
alors je vois pas comment je lance le prog


Bonjour,

En premier lieu, votre DLL ne semble définir que des 'ressources', ce qui n'est pas le rôle des DLLs.

Ensuite, les DLL ne contiennent normalement pas de main : elles contiennent du code, mais ce ne sont pas des applications. Les fonctions - et ressources dans votre cas - qu'offrent les DLL sont utilisés par d'autres programmes. On doit donc compiler la DLL et le programme qui l'utilise séparément. De toute façon, une DLL n'aurait aucune utilité si elle contenait le programme qui en a de besoin. J'imagine que vous aviez mis un main pour des fins de tests, mais vous devriez vous créer un programme séparé.

En plus, pour pouvoir utiliser une dll dans un programme, il ne suffit pas de la charger. Il faut aussi définir au programme les ressources qu'il compte utiliser dans la DLL. Voir l'exemple fourni dans la doc de TIGCC ... ou passer au Java si on est lâche comme moi et qu'on veut laisser cette tâche au compilateur !

Pour d'autres détails, je suis sur que KK se fera un grand plaisir de vous aider ...

8

Quesoft :
En plus, pour pouvoir utiliser une dll dans un programme, il ne suffit pas de la charger. Il faut aussi définir au programme les ressources qu'il compte utiliser dans la DLL.

Les #define dont vous parliez ...

9

ok merci beaucoup
je vais tout retester
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

10

bon maintenant que j'ai tout séparé je sais pas quoi mettre en define. Je comprends pas la différence entre
_DLL_call
_DLL_call_attr
_DLL_entry
_DLL_glbvar
_DLL_reference

sachant que les variables sont des sprites
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

11

DoomAngel :
bon maintenant que j'ai tout séparé je sais pas quoi mettre en define. Je comprends pas la différence entre
_DLL_call
_DLL_call_attr
_DLL_entry
_DLL_glbvar
_DLL_reference

sachant que les variables sont des sprites

Comme vos variables sont des tableaux, vous devez utiliser _DLL_glbvar (variables globales).
Exemple (contre-vérifiez, je n'ai touché qu'une fois aux DLL dans le cadre de mon projet de convertisseur Java et ça commence à faire longtemps) :

#define altarL _DLL_glbvar(unsigned long *,0)
#define altarD _DLL_glbvar(unsigned long *,1)

12

ok merci et c'est pas la peine de vouvoyer lol
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

13

DoomAngel :
ok merci et c'est pas la peine de vouvoyer lol

Pas de problème smile

14

Bon apparemment le compilateur fonctionne bien maintenant. Mais quand je lance le programme, il me dit que la dll n'a pas pu être chargée.
code du prog principal: #include <tigcclib.h> #define altarL _DLL_glbvar(unsigned long *,0) #define altarD _DLL_glbvar(unsigned long *,1) #define cryptL _DLL_glbvar(unsigned long *,2) #define cryptD _DLL_glbvar(unsigned long *,3) #define graveyardL _DLL_glbvar(unsigned long *,4) #define graveyardD _DLL_glbvar(unsigned long *,5) #define hauntedL _DLL_glbvar(unsigned long *,6) #define hauntedD _DLL_glbvar(unsigned long *,7) #define zigguratL _DLL_glbvar(unsigned long *,8) #define zigguratD _DLL_glbvar(unsigned long *,9) #define zigguratTL _DLL_glbvar(unsigned long *,10) #define zigguratTD _DLL_glbvar(unsigned long *,11) void _main() {      if (LoadDLL ("wardll", 372331723, 2, 12) != DLL_OK)           {       DlgMessage ("ERROR", "Error loading DLL!", BT_OK, BT_NONE);       return;     }            if (!GrayOn())           return;      ClrScr();      Sprite32 (0, 0, 32, altarL, GetPlane(0), SPRT_OR);       Sprite32 (0, 0, 32, altarD, GetPlane(1), SPRT_OR);      Sprite32 (0, 32, 32, cryptL, GetPlane(0), SPRT_OR);       Sprite32 (0, 32, 32, cryptD, GetPlane(1), SPRT_OR);      Sprite32 (0, 64, 32, graveyardL, GetPlane(0), SPRT_OR);       Sprite32 (0, 64, 32, graveyardD, GetPlane(1), SPRT_OR);            Sprite32 (32, 0, 32, hauntedL, GetPlane(0), SPRT_OR);       Sprite32 (32, 0, 32, hauntedD, GetPlane(1), SPRT_OR);      Sprite32 (32, 32, 32, zigguratL, GetPlane(0), SPRT_OR);       Sprite32 (32, 32, 32, zigguratD, GetPlane(1), SPRT_OR);      Sprite32 (32, 64, 32, zigguratTL, GetPlane(0), SPRT_OR);       Sprite32 (32, 64, 32, zigguratTD, GetPlane(1), SPRT_OR);            ngetchx();      GrayOff();      UnloadDLL ();       }
code du prog secondaire: #include <tigcclib.h> DLL_INTERFACE //===========================UNDEAD================================= // Altar of Darkness static unsigned long altarL[]={ 0x0, 0x7E187E0, 0x3C3C3C0, 0x3C3C3C0, 0x24FF240, 0x1981980, 0x1BC3D80, 0x1FE7F80, 0x9FDBF90, 0x9FDBF90, 0x15DDBBB8, 0x141DB838, 0x140FF038, 0x1C0E7038, 0x1C1FF838, 0x1C7FFE38, 0x1FFFFFF8, 0x37FFFFEC, 0x36FFFF6C, 0x3FFC3FFC, 0x3FFE7FFC, 0x3FCFF3FC, 0x3FCFF3FC, 0x3ECE737C, 0x73CE73CE, 0x6F8661F6, 0x6F8661F6, 0x5F8661FA, 0x7B8661DE, 0x7D87E1BE, 0x7FFFFFFE, 0x0}; static unsigned long altarD[]={ 0x0, 0x18000, 0x24000, 0x3C243C0, 0x24FF240, 0x1900980, 0x1A42580, 0x1D24B80, 0x9A99590, 0x9C99390, 0x14099028, 0x1405A028, 0x14042028, 0x1C042038, 0x140FF028, 0x14118828, 0x147A5E28, 0x23CA53C4, 0x224FF244, 0x3648126C, 0x2A842154, 0x2287E144, 0x2E842174, 0x3284214C, 0x41024082, 0x41024082, 0x470240E2, 0x49024092, 0x5102408A, 0x5102408A, 0x7FFFFFFE, 0x0}; // Crypt static unsigned long cryptL[]={ 0x0, 0x18000, 0x3C000, 0xE7000, 0x7E000, 0x3C000, 0x803C010, 0x1C0FF038, 0x361FF86C, 0x1C366C38, 0x1C37EC38, 0x1C3FFC38, 0x1D27E4B8, 0x1FB7EDF8, 0x1FFFFFF8, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x36FFFF6C, 0x37FFFFEC, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x63FFFFC6, 0x7F0000FE, 0x7F0000FE, 0x0}; static unsigned long cryptD[]={ 0x0, 0x18000, 0x24000, 0xC3000, 0x66000, 0x24000, 0x803C010, 0x140DB028, 0x22124844, 0x14242428, 0x14242428, 0x143FFC28, 0x152184A8, 0x16A24568, 0x1455AA28, 0x225BDA44, 0x2255AA44, 0x225DAA44, 0x2255AA44, 0x2255AA44, 0x2255AA44, 0x23FFFFC4, 0x41AAAA82, 0x41555582, 0x41AAAA82, 0x41555582, 0x41AAAA82, 0x41555582, 0x41FFFF82, 0x41000082, 0x7F0000FE, 0x0}; // Graveyard static unsigned long graveyardL[]={ 0x0, 0x7E000, 0xFF000, 0x1BD800, 0x366C00, 0x6E7600, 0xFFFF00, 0x4FFFF00, 0xEFFFF00, 0xEE7E700, 0xE6E7600, 0xE6E7600, 0xE6E7600, 0xE2E7400, 0xE366C00, 0xE3FFC20, 0xE1FF870, 0xE1FF870, 0xE3FFC70, 0xE3FFC70, 0xE7FFE70, 0x1F7FFEF8, 0x3FFFFFFC, 0x3FFFFFFC, 0x3FEFF7FC, 0x3FEFF7FC, 0x7FEE77FE, 0x67D7EBE6, 0x7FFBDFFE, 0x7FFFFFFE, 0xFFFF00, 0x0}; static unsigned long graveyardD[]={ 0x0, 0x7E000, 0x81000, 0x118800, 0x224400, 0x424200, 0x818100, 0x4FFFF00, 0xA818100, 0xA824100, 0xA442200, 0xA442200, 0xA442200, 0xA242400, 0xA224400, 0xA224420, 0xA1FF850, 0xA100850, 0xA3FFC50, 0xA200450, 0xE7FFE70, 0x11400288, 0x3FFFFFFC, 0x20400204, 0x2843C214, 0x28442214, 0x44842122, 0x42824142, 0x40918902, 0x7FB99DFE, 0xFFFF00, 0x0}; // Haunted mine static unsigned long hauntedL[]={ 0x0, 0x1C0F0038, 0x3C7FE03C, 0x5CFDFC3A, 0x6FFFFF76, 0x77FBFBEE, 0xAFFDF50, 0x1F7FFEE0, 0x1FBFFDF0, 0x1FDFFBF0, 0x3FFFFFF0, 0x3EFFFFF8, 0x2FFFFFF8, 0x3FFBDFD8, 0x1FFFFFFC, 0x1EFE7FFC, 0x1FFE7EEC, 0x1FFFFFFC, 0x3FFBDFFE, 0x3DFFFFD6, 0x3FFFFFFE, 0x1FFFFDFE, 0x17DFFEFC, 0x1FBFFF7C, 0x1F7F7FB8, 0xBFFFFF0, 0x77DFDFBE, 0x6EFFFFDE, 0x5C7EFFAE, 0x3C0FBC34, 0x1C01E038, 0x0}; static unsigned long hauntedD[]={ 0x0, 0x1C0F0038, 0x2C70E034, 0x44801C22, 0x63248346, 0x7100108E, 0x8900110, 0x14435220, 0x12224450, 0x11124890, 0x24BFFD10, 0x20600648, 0x24A7E508, 0x20281408, 0x11E99784, 0x102A5424, 0x142A5404, 0x11E99784, 0x20281412, 0x2927E482, 0x20600602, 0x12BFFD12, 0x11124884, 0x12224444, 0x144A5228, 0x8800110, 0x7109048E, 0x62824846, 0x447003A2, 0x2C0E1C34, 0x1C01E038, 0x0}; // Ziggurat static unsigned long zigguratL[]={ 0x0, 0x18000, 0x3C000, 0x3C000, 0x7E000, 0x7E000, 0x7E000, 0x63C600, 0x3FFC00, 0x3FFC00, 0x1FF800, 0x1FF800, 0x37EC00, 0x37EC00, 0x6FF600, 0x6FF600, 0xDBDB00, 0xDA5B00, 0x1B7ED80, 0x1B7ED80, 0x7FFFFE0, 0x1FDBF80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0xFDBF00, 0xFDBF00, 0xFDBF00, 0xFFFF00, 0x0}; static unsigned long zigguratD[]={ 0x0, 0x18000, 0x3C000, 0x3C000, 0x66000, 0x66000, 0x66000, 0x63C600, 0x3FFC00, 0x324C00, 0x124800, 0x124800, 0x25A400, 0x242400, 0x499200, 0x481200, 0x93C900, 0x924900, 0x125A480, 0x1242480, 0x7FFFFE0, 0x1999980, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x999900, 0x999900, 0x999900, 0xFFFF00, 0x0}; // Ziggurat+Tower static unsigned long zigguratTL[]={ 0x0, 0x618600, 0xC24300, 0x1824180, 0x1066080, 0x187E180, 0xC7E300, 0x63C600, 0x3FFC00, 0x3FFC00, 0x1FF800, 0x1FF800, 0x37EC00, 0x37EC00, 0x6FF600, 0x6FF600, 0xDBDB00, 0xDA5B00, 0x1B7ED80, 0x1B7ED80, 0x7FFFFE0, 0x1FDBF80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0x1BDBD80, 0xFDBF00, 0xFDBF00, 0xFDBF00, 0xFFFF00, 0x0}; static unsigned long zigguratTD[]={ 0x0, 0x618600, 0xC24300, 0x1824180, 0x1066080, 0x1866180, 0xC66300, 0x63C600, 0x3FFC00, 0x324C00, 0x124800, 0x124800, 0x25A400, 0x242400, 0x499200, 0x481200, 0x93C900, 0x924900, 0x125A480, 0x1242480, 0x7FFFFE0, 0x1999980, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x1199880, 0x999900, 0x999900, 0x999900, 0xFFFF00, 0x0}; DLL_ID 372331723 DLL_VERSION 2,12 DLL_EXPORTS altarL,altarD,cryptL,cryptD,graveyardL,graveyardD,hauntedL,hauntedD,zigguratL,zigguratD,zigguratTL,zigguratTD DLL_IMPLEMENTATION
pourtant je crois que j'ai respecté à la lettre ce qu'il y a dans le tuto sur tigcc. Breaking the 64KB Limit Using a DLL

D'ailleurs à propos de ce tuto, je sais pas si il y a un pb:
dans la dll il est écrit : DLL_VERSION 2,12
mais dans le prog appelant, il y a : LoadDLL ("mydll", 372377271, 2, 11)
pourquoi la version qui au départ est 2,12 est après devenue 2,11 ???
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

15

Ne crée pas une DLL pour tes données, c'est idiot! Une DLL doit être copiée en RAM pour pouvoir exécuter du code. Dans ton fichier, il n'y a pas de code, juste des données, donc il peut être utilisé directement à partir de l'archive. Crée un fichier de données externe, pas une DLL.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

DoomAngel
: pourquoi la version qui au départ est 2,12 est après devenue 2,11 ???

La routine de chargement compare: major==major_fournie, et minor>=minor_fournie. 2==2, 12>=11, donc ça passe.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

DoomAngel :
Bon apparemment le compilateur fonctionne bien maintenant. Mais quand je lance le programme, il me dit que la dll n'a pas pu être chargée.

Je vois :
if (LoadDLL ("wardll", 372331723, 2, 12) != DLL_OK)

alors que :

DLL_VERSION 0,1

Donc, tu demandes la version 2.12 du DLL alors que ton DLL est en version 0.1 ... La major est différente, ça bloque automatiquement.

18

ben justement le truc c'est que je sais pas comment faire un fichier externe de données
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

19

Tu utilises ttextract et ttbin2oth de la TIGCC Tools Suite.
Ou alors tu écris un petit programme pour créer ton fichier externe.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

20

oui j'ai téléchargé tout le pack mais j'ai pas du tout compris comment on fait marcher les différents outils.
il faut le faire a partir de ms dos?
comment à partir de mon prog principal avec les données incluses dedans (sprites donc), je peux réussir grâce à
ces outils d'obtenir un fichier externe et le prog lanceur?
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

21

DoomAngel :
oui j'ai téléchargé tout le pack mais j'ai pas du tout compris comment on fait marcher les différents outils. il faut le faire a partir de ms dos?

À partir d'une fenêtre DOS sous Windows.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

22

ttextract [flags] <infile> <outfile> <starttoken> [<endtoken>]
je sais pas quoi mettre pour le starttoken, le end token ,les flags
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

23

ah je crois que j'ai compris après beaucoup d'essais.
Dans un bloc note nommé wardll.txt j'ai mis
START
// tous les sprites que je veux mettre
STOP
après sous DOS j'ai tapé ...\ttextract wardll.txt wardll.res START STOP
et donc j'ai obtenu wardll.res
puis sous DOS a nouveau : ...\ttbin2oth -89 RES wardll.res wardata
et j'ai alors obtenu wardata.89y
Est-ce que ce que j'ai fait est correct?
Mais après je fait comment pour utiliser le fichier externe? avec les fct de vat.h ?
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

24

DoomAngel
: Est-ce que ce que j'ai fait est correct?

Non. Tes sprites doivent être compilés, pas mis dans un fichier texte.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

de quoi je comprends pas.
Qu'est-ce que je dois mettre dans le fichier .89y?
et les sprites sont à mettre dans un autre projet que le projet principal?
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

26

DoomAngel
: Qu'est-ce que je dois mettre dans le fichier .89y?

Tu compiles un fichier assembleur contenant:
* un marqueur de début
* tes sprites
* un marqueur de fin

On peut le faire avec un fichier C (macro __MARK), mais ce n'est pas très propre, et ça pourrait te causer des ennuis plus tard (cf. GCC 3.4, mode "unit-at-a-time"). Mais ça te donnerait:
__MARK(beginm);
/* tes sprites en variables globales ici */
__MARK(endm);

Attention, le marquer doit avoir un nombre pair de caractères.

Ensuite, tu compiles, tu utilises ttextract, puis ttbin2oth.
et les sprites sont à mettre dans un autre projet que le projet principal?

Oui.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

27

28

DoomAngel :
de quoi je comprends pas.
Qu'est-ce que je dois mettre dans le fichier .89y?
et les sprites sont à mettre dans un autre projet que le projet principal?

Moi, en tant que gars vraiment lâche, je me ferait un prog c qui enregistre tes sprites séquentiellement dans un fichier externe, puis, dans mon jeu, je les rechargerais dans des tableaux alloués dynamiquement...

29

30

Martial Demolins :
idem, mais surtout pour la facilité de maintenance (surtout en cours de développement).


En effet, on peut faire qqc du genre :

Pour les sprites suivante :
static unsigned long altarL[]={...};
static unsigned long altarD[]={...};

On code pour faire la sauvegarde :

FILE *f = fopen("maRes", "wb");

fwrite (altarL, sizeof(unsigned long), 32, f);
fwrite (altarD, sizeof(unsigned long), 32, f);

Dans le jeu, on déclare les tableaux suivants :

unsigned long * altarL ;
unsigned long * altarD ;

On récupère comme suit :

FILE *f = fopen("maRes", "rb");

altarL = malloc(sizeof(unsigned long) * 32);
altarD = malloc(sizeof(unsigned long) * 32);

fread (altarL, sizeof(unsigned long), 32, f);
fread (altarD, sizeof(unsigned long), 32, f);

J'ai pas vérifié (comme je sais que quelqu'un vas le souligner s'il y a une erreur), mais ça devrait fonctionner ...