1

Bon, apparemment, je ne suis pas le seul à essayer d'intégrer Chipper récemment.

Après pas mal de galères (mon kit était passablement daté, exécutables et fichiers include de lyxass), j'ai réussi à compiler l'exemple de Bjoern, j'obtiens bien un fichier .lnx, mais sous Handy, il se contente de faire écran noir, pas de musique :
Avant toutes remarques désobligeante, je tiens à préciser les points suivant :
- oui, j'ai réactivé le son sous Handy
- oui, j'ai réactivé le son sur le PC et vérifié qu'il produisait toujours du bruit
- non, je ne cède pas à une quelconque mode dégénérée, c'est juste pour remplacer une musique ABC dans un programme qui est déjà sonorisé
- oui, c'est une perte de temps


Plus sérieusement, est ce quelqu'un a réussi à faire fonctionner chipper avec newcc65 ?

De mon coté, je vais essayer sur une vraie Lynx, mais je ne vois pas ce que ça pourrait changer...

2

non, pas réussi non plus (j'avais essayé pour Hanoi)
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

3

Bon, l'exemple de Bjoern fonctionne sur une vraie Lynx
Reste à voir si je peux l'intégrer dans mes programmes

4

Je suis fortement intéressé si vous arrivez a faire fonctionner ca :-)

Je tourne uniquement avec abcmusic et ca a l'air d'être galère pour utiliser chipper :/

5

J'ai l'impression qu'il y aurait un truc à créer en matière de musique sur la Lynx, ça semble être un point faible du dév amateur...

D'un autre côté, quand les deux principaux développeurs français voient ça d'un très mauvais œil... grin
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

Bon, remis dans un vrai source, ça crashe au moment ou le programme veut charger le .o de la musique en mémoire.

@Zerosquare, mais non, faut pas dire ça, voir d'un mauvais oeil, l'oeil n'a rien à voir avec l'audition, pfff....
Et en plus, je ne me sens pas visé, avec 1 jour de code Lynx par an, je ne peux pas être dans les 2 principaux développeurs

7

Ok, en fait, c'est un problème de mémoire.
En virant mon écran titre qui prenait 7ko, le fichier se charge et la musique se joue.
Mais j'ai encore un souci de corruption mémoire avec plusieurs sprites qui ne s'affichent pas.

Bref, cure d'austérité et techniques alternatives (chargement des écrans de fond depuis la ROM) à prévoir

8

Au niveau consommation ram, c'est plus ou moins gourmand qu'ABC ?

9

Ok, en fait, c'est un problème de mémoire.
Chipper se charge à l'adresse 0x8000

J'ai viré l'écran titres (7ko) qui faisait que je ne laissait pas assez de place à Chipper, je devais empiéter sur son espace mémoire. Lynxdir me disait que je prenais 36106 octets alors que le module chipper (qui est du code en fait) se charge à 0x8000 (32768), d'ou conflits, trucs bizarres et plantage...

Après ça, j'avais le fond d'écran, la musique, quelques sprites mais pas tous, en particulier, il me manquait l'affichage des sprites chainés.

De son coté, Bjoern redéfinit en dur ses 2 écrans à 0xBD00 et 0xE000 et pas en fonction de MEMTOP.
Mais je continuais à déclarer mon tableau externe de sprites chainés à l'adresses MEMTOP - 16000 (taille écrans) - 110 (taille tableau), ce qui tombait en plein dans la plage de Chipper.
En les repositionnant à 0x8000 - 110, ça fonctionne.
Bref, Chipper, c'est bien, mais ça bouffe plus de mémoire qu'ABC.

Je suppose qu'en fonction de la taille du module, il est possible de charger chipper plus haut dans la RAM et libérer un peu d'espace

Désolé, pas de code source ou de rom à tester pour le moment, ça reste confidentiel grin

10

Pour la RAM, ça doit dépendre de la taille de ton module compilé (fichier .o à intégrer dans la ROM et qui sera chargé en mémoire).
Bjoern par défaut garde un peu plus de 15000 octets, mais je suppose qu'il est possible de réduire, je vais tester ça


Edit : bon, l'adresse $8000 est en dur dans le fichier soundbs.c, procédure SndStart
Don, il faut aussi modifier ce fichier, le recompiler en .obj pour que ça fonctionne...

11

Tu utilises quelle version de chipper ? Je suis parti sur celle pour newcc65 qui est sur son site, et quand j'assemble le *.asm (lynxmodc.asm), lyxass me sort les infos suivantes :

LynxMod_Init $5977 LynxMod_End $5A88 LynxMod_Player (VBL!) $$5A9A LynxMod_effects $5BE6 repeat_table $5D46 ende $5D86 LynxMod Code End $5EDA
Donc du coup je fais comme lui, je déclare 2 tableaux externes à $5977 et $5A9A pour stocker le code et le mod.
(oui et en fait j'ai refait le projet from scratch, d'une part parce que c'est une bonne manière d'apprendre, et ensuite parce qu'on peut rendre le truc plus simple - enfin je pensais grin).

Enfin du coup ca m'intéresse bien de savoir si on a la même version de chipper, parce que moi ca crash.

Ah oui aussi y a ce code machine un peu chelou dans l'update HBL et bon, dur de faire autre chose que de croire sur parole ^^
HBL() interrupt { #asm dc.b $58, $A5, $CE, $C5, $C6, $A5, $CF, $E5, $C7, $10, $15, $AD, $6F, $59, $F0, $26, dc.b $A5, $EE, $85, $C6, $A5, $EF, $85, $C7, $A5, $F6, $85, $CE, $A5, $F7, $85, $CF, dc.b $B2, $C6, $8D, $22, $FD, $18, $A5, $DE, $65, $E6, $85, $E6, $A5, $D6, $65, $C6, dc.b $85, $C6, $90, $02, $E6, $C7, $A5, $D0, $C5, $C8, $A5, $D1, $E5, $C9, $10, $15, dc.b $AD, $71, $59, $F0, $26, $A5, $F0, $85, $C8, $A5, $F1, $85, $C9, $A5, $F8, $85, dc.b $D0, $A5, $F9, $85, $D1, $B2, $C8, $8D, $2A, $FD, $18, $A5, $E0, $65, $E8, $85, dc.b $E8, $A5, $D8, $65, $C8, $85, $C8, $90, $02, $E6, $C9, $A5, $D2, $C5, $CA, $A5, dc.b $D3, $E5, $CB, $10, $15, $AD, $73, $59, $F0, $26, $A5, $F2, $85, $CA, $A5, $F3, dc.b $85, $CB, $A5, $FA, $85, $D2, $A5, $FB, $85, $D3, $B2, $CA, $8D, $32, $FD, $18, dc.b $A5, $E2, $65, $EA, $85, $EA, $A5, $DA, $65, $CA, $85, $CA, $90, $02, $E6, $CB, dc.b $A5, $D4, $C5, $CC, $A5, $D5, $E5, $CD, $10, $15, $AD, $75, $59, $F0, $26, $A5, dc.b $F4, $85, $CC, $A5, $F5, $85, $CD, $A5, $FC, $85, $D4, $A5, $FD, $85, $D5, $B2, dc.b $CC, $8D, $3A, $FD, $18, $A5, $E4, $65, $EC, $85, $EC, $A5, $DC, $65, $CC, $85, dc.b $CC, $90, $02, $E6, $CD #endasm }

12

Ah oui mon .o pour lynxmodc.asm fait 1389 octects une fois compilé.

edit : et je pense que tu es parti sur son .zip qui s'appelle "chip in c" (et j'étais bloqué avec celui la à cause du "include <macros/soundbs.mac>") et je suis donc parti de "mod in c" qui se download en dessous sur son site (et qui me semble bien différent pour le coup).

13

Oui, c'est bien chip in c 1.1 que j'ai utilisé
Pour le soundbs.mac, je l'ai trouvé dans son archive des includes lyxass je crois

ModinC, je crois que c'est quelque chose de plus ancien, ce doit être le player qu'a utilisé Duranik pour Alpine Games, mais pas in game car ça consommait trop si je me souviens bien.

14

Ah cool c'est bon à savoir ! Bon du coup j ai dézippé tout ce que j'ai accumulé comme archives et j'ai fini par trouver soundbs.mac dans les sources de... peg solitaire. Tu peux me confirmer qu'il fait 1895 octets ?

edit : bon l'assemblage ne fonctionnait mais heureusement j'ai pensé à vérifier ce que contenait le template de karri...et j'ai donc trouvé un autre sounbs.mac qui lui permet à lyxass de faire le job.


Quand je compile puis link soundbs.c en revanche, J'ai une liste de warning (erreur ?) de cette forme :
ifnd true ifnd:(.iELSE001) 2 value 0 line 343 defline 65535 ifnd true ifnd:(.iELSE003) 2 value 0 line 354 defline 65535 ifnd true ifnd:(.iELSE004) 2 value 0 line 360 defline 65535 ifnd true ifnd:(.iELSE005) 2 value 0 line 366 defline 65535
Ca me produit un .obj mais bon... Tu as ca aussi ?

15

soundbs.mac, je l'ai trouvé dans le lien :
LyxAss Lynx Assembler Lib download source. Lynx library functions: macros, vardefs and code including my private patches.
du site de Bjoern.
Et il fait 3000 octets

Pour soundbs.c, j'ai ça ce matin en recompilant le source assembleur, je ne me rappelle plus si ça me l'avait fait au début, mais mon soundbs.obj a exactement la même taille

16

Ouep c'est bon aussi pour moi j'ai réussi à compiler son exemple et avoir la plus belle version de popcorn que j'ai jamais entendu grin
(il fallait le bon soundbs.mac mais aussi les compilos et assembleurs patchés).

J'essaye maintenant d'exporter les chansons de chipper (celle du répertoire exemple - la première que j'ai essayé y a un soucis à l'assemblage...), et si tout se passe bien j'essairai d'exporter des mods.

En tout cas ca ouvre de sacrés possibilités et ca m'arrange bien en fait car ca m'enlèverai la seule raison de passer à cc65 (fainéantise quand tu nous tiens ^^).

edit : le genre d'erreur que je me prend quand j'exporte depuis chipper :
zikdemo.asm: 46:ERROR:
Label redefined ! First use here: 44 : <zikdemo.asm>
zikdemo.asm: 48:ERROR:
Label redefined ! First use here: 44 : <zikdemo.asm>
zikdemo.asm: 50:ERROR:
Label redefined ! First use here: 44 : <zikdemo.asm>

17

Ok au temps pour moi, il suffit d'exporter vers "BLL Lyxass" et non pas "BLL newcc65" smile

18

Je n'ai pas encore essayer l'outil (et bon, en fait, je crois que je n'utiliserai pas).
J'avais reçu un autre source plus léger produit par Chipper pour newcc65 soi-disant, mais j'avais du l'adapter :
- j'avais modifié chip.asm pour qu'il fasse un include de ce nouveau fichier
- dans le fichier en lui même, j'avais fait rechercher/remplacer .byte par dc.b
- et j'avais enlevé les lignes .export et déclaration des 4 canaux (vu qu'ils sont déjà déclarés dans chip.asm)

19

J'espère que vous ferez un beau tuto pour les newbies messieurs smile top

20

En fait, le problème est pas tant au niveau du source C (quoique, il y a quelques trucs à ajuster) qu'au niveau des outils qui vont autour.
Il faut utiliser de nouvelles versions par rapport à ce qu'on avait il y a 10 ans.

Je verrai pour faire un zip avec les nouveaux outils, les sources des librairies et leurs versions compilées en .obj pour link65
Et bien sur un petite exemple du genre un écran et 2-3 sprites.

@lordkraken : comment fais tu pour faire boucler une musique courte ?
Pour ma part, pour le moment, j'ai un compteur et je fais SndStop(), SndStart() à la mano. Mais ce n'est pas basé sur la vraie fin de la musique.

21

Fadest : ça sera déjà super ! J'en suis resté aux outils que tu m'as filé à la belle époque où tu m'as détourné du ST tongue

22

Je n'ai pas encore essayer de faire boucler la zik, mais je vais voir avec DeLuchs s'il n'a pas une zik de démo, et si justement on peut faire le loop directement dans le mod (vu qu'on peut boucler les patterns),

Sinon maintenant que ca fonctionne bien avec l'exemple de Björn, je vais essayer d'intégrer ca dans mon projet et voir combien de place le code de chipper prend en mémoire (le mod lui même n'est pas un problème puisqu'on peut le charger dynamiquement). Après on gagne 2kb en ne linkant plus abcmusic.

23

Il ne faut pas que tu places des éléments après l'adresse $8000
Et le .o de la musique ne dois pas atteindre l'espace réservé pour les écrans.
Ca laisse une dizaine de ko libres.
Du coup, ton .o doit faire moins de 32 ko au total ($8000)

De mon coté, j'ai été obligé de virer tous mes fond d'écrans (titre, background, game over) du code principal pour ne garder qu'un buffer commun ou je charge le fichier désiré, sinon, ça ne tenait pas.
Ca se fait très bien, surtout avec la nouvelle commande de chargement d'un fichier (celle utilisé dans le code d'exemple chip_in_c)

Tu fais ta rom avec Lynxer ou le nouveau Lynxdir ? Pour l'instant, je fais avec les 2, mais je crois que je vais zapper à Lynxdir.

24

Je suis toujours sur lynxer pour le moment (et je l'utilise pour chip_in_c, ca marche). J'ai un peu trop d'info qui arrivent en ce moment donc une chose après l'autre smile

Sinon pour 0x8000 c'est la ou il charge le mod, mais je ne vois pas pourquoi on ne pourrait pas le charger ailleurs (j'utilise un buffer de 8k adjacent aux 2 screens buffers pour tous mes chargements d'image full screen et cie - précision, je n'utilise pas et ne compte pas utiliser le collision buffer - donc tant que le mod est plus petit que 8k je devrais pouvoir me débrouiller avec ca).

25

Bon bah ca marche à priori. J'ai juste :
1) changé l'adresse ou le fichier est chargé (par ex. 0x9d00)
2) mis la même adresse dans "chip.asm"
3) et enfin modifié les adresses dans SndStart dans soundbs.c
SndStart() { #asm ;; hier hin springen geht nicht jsr SndPauseOn lda $9d00 ldy $9d01 ldx #0 jsr SndStartSound lda $9d02 ldy $9d03 ldx #1 jsr SndStartSound lda $9d04 ldy $9d05 ldx #2 jsr SndStartSound lda $9d06 ldy $9d07 ldx #3 jsr SndStartSound jsr SndPauseOff #endasm }
Donc du coup en n'utilisant pas le collision buffer, je devrais pouvoir garder mes 40ko et quelques de RAM, tout en chargeant indifféremment image et mod de mon buffer unique. Dès que j'ai un truc propre qui marche je posterai le source.

26

top

27

lordkraken (./25) :
Bon bah ca marche à priori. J'ai juste :
1) changé l'adresse ou le fichier est chargé (par ex. 0x9d00)
2) mis la même adresse dans "chip.asm"
3) et enfin modifié les adresses dans SndStart dans soundbs.c
[...]
Donc du coup en n'utilisant pas le collision buffer, je devrais pouvoir garder mes 40ko et quelques de RAM, tout en chargeant indifféremment image et mod de mon buffer unique. Dès que j'ai un truc propre qui marche je posterai le source.
Oui, ça fonctionne, je croyais avoir posté un message dans ce sens hier mais il a du rester dans le navigateur du poste de dev...
Ca m'a couté beaucoup de temps d'ailleurs, car à un moment mes 3 fixhiers (mon source, chip.asm et soundbs.c n'étaient plus alignés murtripaf)

Tu as le même buffer pour tes images et le son ?
Tu fais comment pour utiliser les 2 en même temps ?
Une fois ton image chargée, tu l'affiches et tu charges la musique ?

28

Oui c'est ce que je fais mais forcément ca limite le truc a une image d'intro plein écran fixe avec la musique qui se charge ensuite, et pas d'animation au dessus (sauf à gruger un peu). Maintenant le buffer que je me réserver fait 8k, donc si l'image est assez petit et la zik aussi on doit pouvoir faire tenir les deux ensembles.

Par contre j'ai aucune idée de la rapidité du chargement sur la console. Sur handy c'est instantané donc du coup ca passe plutôt bien.... et pour une intro de jeu c'est quand même classe d'avoir une vraie zik.

29

Bon mon test est fini et fonctionne bien. Il me reste juste un problème en revanche, et je suis curieux de savoir ce que tu as fait Fadest. J'ai utilisé en effet ton tutorial pour charger des fichiers et ca fonctionne tres bien... sauf avec ca. Si je n'utilise pas la fonction LoadFileTo de Bjorn, ca plante. Vu que ce sont les mêmes paramètres dans l'une comme dans l'autre on aurait pu penser qu'elles font la même chose... mais apparemment non...

Sinon sa fonction charge bien les autres fichiers donc je pense que je ne vais pas trop me casser la tête et switcher tout dessus.
edit: et elle fait environ 150 octets de moins

30

Ca a l'air d'etre un sacre bordel le C sur la Lynx sorry
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.