30

Le prix c'était 124$, et des photos exclusives que je n'avais jamais vu ailleurs grin

Oui le C c'est jouable, sauf que tout le monde dit que le z80 n'est pas adpaté pour le C (taille des registres entre autres choses), je ne sais pas ce qu'il en est réellement mais force est de constater que personne n'en fait tongue
De plus, vu la taille des libs ca prenais beaucoup de memoire pour pas grand chose. Et il manque beaucoup de fonctions écrites en asm pour calc ti avec le compilateur que j'ai testé (z88dk). Il faudrait au moins faire des routines d'affichage de sprite pour que ce soit "viable".

Mais bon si tu fais tes routines et que tu te sers du C juste pour un peu plus de confort ça peut etre jouable de faire un petit jeu ou autre ...

31

C'est cher tout de même (~100€), presque autant que les Nspire (j'ai eut ma 84+ SE neuve pour ~80€ y'a plusieurs années déjà...) :/

TI doit quand même avoir une bonne marge étant donné le matos... Au même prix on peut facilement trouver 10x mieux (c'est à peu près le prix d'un portable ou d'une tablette android convenable sans forfait).

Enfin c'est sans doute le prix à payer pour pouvoir continuer à programmer sur un processeur de plus de 30 ans en 2013...

32

Ah oui c'est incroyable combien ces simples machines coûtent...

33

20120416.gif

Faut croire que c'est toujours vrai grin

34

Pour moi au dessus de 110 euros c'est cher.
Les calcs devraient couter entre 40 et 110 euros pas plus grin

35

Peut être une 84+ C Pocket SE : http://www.omnimaga.org/index.php?topic=14984 (ou peut être un fake) cheeky

edit : non enfaite c'est un fake inutile, sans intérêt et pas marrant... roll

36

Petit à petit, TI change de marché :
avec la Nspire on a du niveau de gris, la 84+color a la couleur...
Bientôt on aura des GTX 680 dans nos TIs!! N'empêche, ils pourraient toujours tenter de fabriquer des consoles portables.
Si la plate-forme a une version programmable, ils pourraient gagner le jackpot

37

Y'a une version couleur de la nspire aussi.

Sinon y'a déjà quelques consoles ouvertes (gp32, dingoo etc...), mais bien souvent elles ont assez peu d'intérêt (au mieux dessus on a surtout des émulateurs, quelques "homebrews" sympas mais pas plus).

38

deeph, je voudrais commencer à jouer avec des consoles ouverts. Tu en sais quelque chose ? Je crois que le dingoo est très beau mais je voudrais programmer en assembleur, donc je ne veux pas quelque chose si complexe, peut-être quelque chose comme le GBA ou un truc pareil.

Et il semble que la nouvelle n'est pas vraie :P

39

La plupart des consoles ouvertes manquent de charme je trouve (en partie parce qu'elles sont sans doute plus difficiles à programmer en assembleur).

La dingoo me tentait assez la dernière fois que j'y ai regardé, mais c'était plus pour avoir de quoi émuler la gbc/gba (mais finalement mon portable android, un ZTE Blade, fait parfaitement l'affaire), que pour la programmer. De ce que je me souviens, elle avait une communauté assez active (linux a même était porté, il me semble).

Autrement les consoles nintendo (gb, gba, nds voire bientôt 3ds) sont programmables via des linkers. L'assembleur gba semble intéressant et assez facile, mais je n'ai jamais eu le courage de m'y mettre tongue

Enfin perso j'aime surtout le côté "retro" des TI z80, mais si je trouve une console sympa, pourquoi pas tenter de créer quelques programmes ?

Lorsque je cherchais des info sur la dingoo, j'étais tombé là dessus : http://dx.com/c/video-games-699/other-game-consoles-610 (y'a plusieurs "clones" conditionnés sous différentes formes, comme la "psp-like" etc...).

Puis sinon concernant la gp32 et suivantes (gp2x il me semble etc...), selon moi faire de l'asm dessus ça revient à se prendre la tête pour rien (autant faire du C/C++ qui est un meilleur compromis, mais que j'aime pas trop).

edit : finalement la programmation sur gba pourrait être sympa sur ce genre de console "hybride" : http://www.k1gbasp.com/pre-order-k101-free-pouch-bag-headphone-4gb-card-offered-p-47.html (même hardware que les officielles, sauf l'écran et les haut-parleurs qui sont de bien meilleurs qualité, plus la possibilité de transférer directement ses programmes via une carte microSD)...

C'est tentant tongue

40

Merci beaucoup pour le lien smile La Revo k101 a l'aire assez sympa, je crois que programmer en assembleur pour la GBA serait intéressant (et avec le DS qui peut l'émuler on a une audience assez grande). D'ailleurs elle (la Revo) ne coûte presque rien ! Je crois que programmer pour ce genre de console serait très amusant : un console construit pour aider au programmeur et pas le restreindre !

41

Puis surtout c'est pas les émulateurs qui manquent (il y en a sur à peu près toutes les machines aujourd'hui...) smile

Apparemment son processeur est un ARM7, par contre c'est dommage qu'il n'y ait plus le z80 pour la rétrocompatibilité gb/gbc dans les dernières gba... sad

Si j'ai le temps j'essaie de faire quelques tests de compilation grâce à ce tuto : http://static.patater.com/gbaguy/gbaasm.htm et l'émulateur visual boy advance happy

42

Oui, j'aime beaucoup le z80. Malheureusement la plupart des dispositifs z80 sont assez limités, je voudrais voir un console avec un ez80 ou un z80 modifié, mais l'assembleur ARM m'interesse aussi smile Les instructions mul/div et quelques instructions de décalage plus versatiles seraient vraiment bienvenues grin

EDIT: Et on pourrait se servir de la TI-nSpire pour pratiquer l'assembleur ARM. J'en ai trouvé une, nouvelle, pour environ 80€ (une CX) ici en Chine smile

43

Je trouve que les nspire ont quand l'air assez peu ergonomique, non ? Leur clavier est énorme et la "croix" directionnelle très mal placée (en plein milieu) sick

Et elle a l'air assez imposante :/

En plus de ça, elle est loin d'être totalement ouverte (pas de ndless pour le dernier OS il me semble). Et comme TI n'a qu'a regarder quelles failles il utilise et les corriger pour la prochaine version de son OS, ça laisse peu d'espoir (le downgrade n'est même pas toujours possible à ce que j'ai compris)...

44

Je suis assez d'accord, pour programmer des jeux le clavier est mal foutu.
Après, pour l'OS, il suffit de rester sur les anciennes version, ça change pas grand chose je crois.
Sur ma Ti 84, je suis jamais passé aux OS MP...

45

Oui mais les nspire neuves seront préchargées avec le dernier OS sad

46

Ce sera possible de mettre la main dessus d'ici le printemps 2013 finalement : http://www.1800calculators.com/TI-84%20Plus%20C%20Silver%20Edition%20Color%20Graphing%20Calculator

47

$124 ! C'est bien cher... Si ce n'était pas un z80... mais comme j'aime le z80 ! Dommage qu'il n'y ait pas de "specs". En tout cas je crois bien que je vais m'acheter un de ces Revo k101s. La résolution est beaucoup plus grande aussi : 960x480. Et il semble qu'il sont basés en Chine (comme moi grin), je leur ai écrit et j'attends une réponse smile

48

Pour la Revo k101, ce sont des précommandes aussi ? Il y a un truc que je trouve bizarre, ce sont les boutons X et Y, ils n'étaient pas présent sur la gba... Peut être pour accéder aux menus du linker ?

Autrement, il y a d'autre consoles là : http://www.etronixmart.com/retro-handhelds-c-33.html?osCsid=raij6gq4c7pdlsit7e9cof7v43 (dont une nouvelle version de la dingoo : http://www.etronixmart.com/dingoo-a380-mini-console-2players-gaming-wireless-controllers-p-793.html ).

Moi j'hésite un peu pour l'asm gba, déjà que pour réaliser un vrai jeu sur TI z80 ça prend pas mal de temps et de motivation (à tel point que je n'en ai jamais terminé un jusqu'au bout grin), alors sur une console avec un écran si grand et si coloré, qu'est-ce que ça va être ?

49

Je pense programmer comme je l'ai toujours fait sur les calculatrices : simplement et avec des graphiques bien simples. La GBA serait pour moi donc une calculatrice puissante avec plus d'outils pour le programmeur (ou la programmeuse smile). Je n'ai pas besoin de faire un jeu aussi complexe que les autres jeux GBA (moi seul c'est pas possible !), mais par exemple pour Juego je pourrais ajouter pas mal de choses que je ne peux pas ajouter actuellement parce que ça ralentirait trop le moteur (il faut récrire une grande partie du moteur tout de même). La joie de programmer les TIs c'est dans essayer de les faire ce que tu ne croyais pas possible, dans pouvoir partager quelque chose avec toute une communauté, que des gens qui ne te connaîtront jamais pourront s'amuser à jouer ce que tu as écrit. La joie de programmer la GBA (pour moi) serait dans pouvoir faire les jeux que je rêvais toujours de faire mais que je n'avais jamais un système capable de les supporter (ou plutôt que je n'avais pas l'habilité de les programmer sur les systèmes à ma disposition :P).

Qu'est-ce que ça va être ? Une aventure !

50

Vu comme ça grin

C'est peut être pas plus compliqué que l'asm z80, faut voir...

edit : bon bah finalement c'est un peu moins compliqué que je pensais (surtout mettre en place un environnement pour développer et se servir du compilo) :

OgY5

Je comprend pas encore à 100% ce que je fais, mais ça marche grin

51

Wow ! Tu utilises quoi pour assembler ? Comment est le source du programme ? grin

52

DevKitArm (il faut sélectionner seulement GBA, pas PSP et GP32, parce que déjà que ça rajoute plein de fichiers inutiles alors avec ça en plus sick).

En gros dans mon dossier j'ai un dossier "bin" qui contient entre autre "arm-none-eabi-gcc.exe" et "arm-none-eabi-objcopy.exe" (même si le tuto en ./41 spécifie "arm-elf-gcc.exe" et "arm-elf-objcopy.exe", je ne les ai pas et ça marche très bien sans (enfin si quelqu'un a une explication, ce serait sympa smile)), un batch pour compiler qui contient :
cd bin
arm-none-eabi-gcc -mthumb-interwork -specs=gba.specs ..\test.s
arm-none-eabi-objcopy -O binary a.out ..\test.gba
@pause

(Là encore je ne sais pas à quoi correspond le paramètre "-specs", si c'est une référence à un fichier je ne l'ai pas trouvé, mais vu que ça ne bug pas... trifus)

Autrement j'ai aussi le programme Bimbo pour convertir des images en binaire (seulement 240*160 ou 160*128 par contre hum), et pour finir mon fichier source :
.arm	@ on compile avec les instructions ARM
.text	@ on place le programme en ROM (adresse de départ apparemment)
.global main	@ début du programme (pour que les linkers s'y retrouvent)

main:
	mov r0, #0x4000000	@ on met l'adresse REG_DISPCNT (driver LCD) dans le registre r0
	mov r1, #0x400		@ contraintes de l'instruction mov :
				@ de 0 à 256 : toutes valeurs possibles
				@ de 256 à 1024 : multiples de 4
				@ de 1024 à 4096 : multiples de 16
				@ ici $403 = 1027, on ne peut pas, donc on prend $400 = 1024
	add r1, r1, #3		@ la valeur 0x403 signifie le mode graphique 3 et le BG 2 (cf http://static.patater.com/gbaguy/gba/ch5.htm )
				@ (on ne peut pas mettre directement 0x403 dans r1 en utilisant mov
				@ car ce n'est pas une valeur 8bit, et utiliser un ldr, ldrh etc... est plus long)
	strh r1, [r0]		@ on se sert de l'instruction strh (et pas str) pour écrire en mémoire (à l'adresse du driver)
				@ un demi-mot 32bits (soit 16bits = 2 octets) pour ne pas écraser autre chose
	mov r0, #0x6000000	@ addresse de la mémoire vidéo (VRAM)
	ldr r1, =pic		@ on met l'adresse de notre image dans r1
	mov r2, #0x960		@ le nombre d'octets nécessaires pour remplir l'écran (240*160/16)

loop1:
	ldmia r1!, { r3,r4,r5,r6,r7,r8,r9,r10 }	@ cette instruction charge plusieurs registres puis incrémente ensuite
						@ (LoaD Multiple, Increment After), r1 contient l'adresse de base,
						@ puis chaque registre recevera une valeur 32bits différente (l'adresse est
						@ incrémentée de 4 à chaque itération),
						@ la valeur finale est chargée dans r1 (à cause du !).
						@ C'est un peu comme un :
						@ ld hl,{ r3,r4,r5,r6,r7,r8,r9,r10 }
						@ ld de,r1
						@ ldir	; sauf que ça incrémente de 4, puis qu'on doit mettre la valeur finale dans r1
	stmia r0!, { r3,r4,r5,r6,r7,r8,r9,r10 }	@ on charge notre image dans la mémoire vidéo (même principe : chaque adresse des
						@ registres reçoit la valeur de l'adresse contenu dans r0+4 à chaque itération)
	@ Avec ces instructions il faut juste faire attention à ne pas utiliser le registre initial dans la liste des destinations !
	subs r2, r2, #1	@ on decrémente le nombre de fois où on doit faire notre boucle
	bne loop1	@ goto loop1 si nz

infin:
	b infin		@ boucle infinie

.ltorg			@ ça j'ai pas trop compris (?)

pic:
.incbin "../test.bin"	@ binaire de l'image obtenu avec Bimbo

Voilà, y'a quelques trucs qui me dérange encore, mais sinon c'est compréhensible.

Pour la suite il faut que je vois comment gérer les sprites (s'il faut créer sa propre routine ça peut être sympa) et comment gérer le getkey ! Ensuite j'aurai de quoi faire une petite démo smile

53

Merci, j'ai assemblé mon premier programme et j'ai créé un script pour assembler/envoyer à l'émulateur mon projet smile Mais ... comme les instructions ARM sont puissantes ! Toutes les instructions peuvent s'indexer, sont conditionnelles, peuvent décaler un registre, etc. tout en même temps ! Et on peut choisir si tu veux qu'un registre mette à jour ou non les drapeaux ! Regarde cet exemple :
STR R0, [R1], -R2, LSL #2
R0 = RAM à R1
R1 = R1 - (R2 décalé 2 bits vers la gauche)

Tout ça dans UNE SEULE instruction ! Les couches de l'écran de la GBA me paraissent très intéressantes aussi. L'assembleur z80 nous donnerait :
;r0 = a
;r1 = de
;r2 = hl

 ld a,(de)             ;r1 -> r0
 push hl
 add hl,hl
 add hl,hl             ;décaler hl (r2) deux bits vers la gauche
 ex de,hl
 sbc hl,de             ;r1-(r2<<2)
 ex de,hl
 pop hl
...ou quelque chose pareille :P Mais bien sûr nous ne le ferions comme ça sur le z80, nous ferions quelque chose comme-ci :
ld de,OFFSET
ld a,(hl)
add hl,de


EDIT: Et j'ai trouvé ce PDF : http://morrow.ece.wisc.edu/ECE353/arm7tdmi_instruction_set_reference.pdf

Quant à .ltorg, j'ai trouvé ceci : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/Bgbccbdi.html
Je crois que c'est essentiellement un LUT pour les instructions qui prennent une adresse, parce que les instructions ARM ne peuvent accéder aux adresses plus loin de +/- 4kb. Donc il faudra mettre les .ltorgs où le code ne va jamais s'exécuter (comme après une subroutine où une instruction branch). C'est quelque chose dont l'assembleur s'occupe pour nous.

54

Oui, c'est autre chose que le z80 (on peut facilement optimiser) smile

J'ai lu le tuto en diagonal mais il me semble qu'il y a deux jeux d'instructions, non ? (ARM et "Thumb" ?) Le deuxième a l'air plus simple mais aussi plus restreint.

Autrement il faudrait mettre la main sur les routines du bios (appelées avec swi -SoftWare Interrupt-), parce que sans elles c'est un peu limité...

Si tu arrives à faire obtenir un getkey ou à mettre la main sur une routine de sprites, tu pourrais les partager ?

55

Bien sûr, pour le moment jette un coup d'oeuil ici : http://static.patater.com/gbaguy/oldgba/gbaasm.htm
Il y a une partie qui parle des touches. Les equates :
@ KEY PAD DEFINES
#define KEY_A 1
#define KEY_B 2
#define KEY_SELECT 4
#define KEY_START 8
#define KEY_RIGHT 16
#define KEY_LEFT 32
#define KEY_UP 64
#define KEY_DOWN 128
#define KEY_R 256
#define KEY_L 512
#define KEYS 0x04000130

Le code :
 ldr r3,=KEYS
 ldr r2,=KEY_DOWN
 ldr r4,[r3]
 ands r4,r4,r2

Mais j'ai pas encore testé.

Et pour plus d'information sur les literal pools : http://benno.id.au/blog/2009/01/02/literal-pools
En fin je les comprends complètement smile

56

Bon je n'ai pas la capacité de forker ce topic donc j'en ai juste créé un nouveau : topics/152461-gba-asm-arm-et-si-on-sy-mettait smile

57

De nouvelles images : http://www.omnimaga.org/index.php?topic=14819.msg273993#msg273993

Le contour du clavier est toujours interchangeable, donc les dimensions doivent être les même que celles de la 84+ SE actuelle (c'est d'ailleurs assez inutile ce truc, les quelques fois où j'ai tenté de l'enlever j'ai faillit le casser !).

58

Voici la page officielle de la 84+CSE :
http://education.ti.com/calculators/products/US/ti-84c/

59

Screen size: 320 x 240 pixels (2.8" diagonal)
Screen resolution: 140 DPI, 16-bit color
3.5 MB FLASH ROM memory for data archive and storage of Apps.
21KB of available RAM memory. Support TI Basic and ASM programming

Au final c'est pas si mauvais que ça (hormis la RAM) smile

Il va falloir se mettre aux apps (dommage, j'aimais bien pouvoir faire du SMC) !

60

Peut-être on pourra faire courir des programmes de FLASH, avec la taille des images on ne pourra pas faire grande chose avec 21kb :/ On peut utiliser du SMC avec un app, mais il faudra mettre la routine quelque part dans saferam. Je ne suis pas encore convaincu que la calculatrice pourra supporter des jeux complexes.