1
C'est ma version du jeu "Chasse aux taupes" pour le TI-Concours 2013 smile Tu es un prisonnier qui veut s'évader de la prison. Il faut tuer les agents de police (mort aux vaches, mort aux condés ! wink) avec les touches 1-9 pendant que tu traverse la prison en cherchant la sortie. Pour le moment il n'y a que 3 niveaux, et le dernier niveau n'a pas de sortie, parce qu'il y avait une limite de 4ko et j'avais plus d'espace ! Si tu as des suggestions, je serait très heureux de les recevoir ! Je ne sais pas comment développer cette idée.

http://www.ticalc.org/archives/files/fileinfo/452/45275.html

84191.gif

EDIT : Oups, c'est "taupes" pas "topes" :P
2
C'est génial ! Tu as réussis à caser pas mal de choses déjà en 4ko (déjà rien que le smooth scrolling fou) top

Si tu as besoin de le traduire en français, je peux y jeter un œil.

Et je vais le tester de ce pas ! smile

edit : c'est peut être un peu trop rapide sur 84+SE, je me demande s'il y aurait moyen de mettre le processeur à la même cadence qu'une 83+ normale facilement.

Sinon le titre fait un peu bizarre en français, non ? Le mot 'chasse' sous entend 'abattre' ce qu'on chasse, or là il cherche justement la liberté. Enfin ça reste compréhensible.

Autrement il faut que je vérifie, mais j'ai l'impression qu'on meurt lorsque une balle sort de l'écran et qu'on était dans sa trajectoire (même si on s'est pas fait toucher), à moins que ce soit parce qu'il y a trop de têtes simultanément ?

Mais bravo, c'est original comme idée, je me demande d'où ça t'es venu ? tongue

edit 2 : la traduction (j'ai aussi traduit la citation, mais je me demande si c'est nécessaire) :
Traduction
texto: .db "Maintenant je sais pourquoi",0 .db "je suis o",$af," je suis, pourquoi",0 .db "ils m'ont enferm",$96," et cach",$96,".",0,0 .db "-Gabriel Pombo da Silva",0,$ff menu: .dw jugarTxt .dw acercaTxt .dw salirTxt liberteTxt: .db "La chasse ",$90," la libert",$96,0 highScoreTxt: .db "Score:",0 jugarTxt: .db "Jouer",0 acercaTxt: .db "...",0 salirTxt: .db "Fuir",0 nivelCompletadoTxt: .db "Niveau termin",$96,"!",0 .db "Temps restant:",0 puntosTxt: .db "Total points:",0 muertoTxt: .db "Tu es mort en luttant",0 .db "pour ta libert",$96,0 highScoreTxt2: .db "Nouveau score!",0
3
Oui c'est très beau bravo !
4
deeph (./2) :
C'est génial ! Tu as réussis à caser pas mal de choses déjà en 4ko (déjà rien que le smooth scrolling fou) top
Oui, mais pas de scrolling horizontal, les maps sont assez petits smile Du scrolling vertical est très simple! Et j'ai écrit une petite routine pour afficher les numéros parce que les routines de TI surement ralentiraient trop le moteur. Les textes (Puntos/Tiempo) son des sprites que ne s'affichent qu'une fois, en chargeant le niveau. La routine fastcopy permet du scrolling pour la parte gauche, mais pas pour la partie droite, ce qui causait des problèmes pour afficher les pistoles (ils se déplaçaient avec le niveau).
deeph (./2) :
edit : c'est peut être un peu trop rapide sur 84+SE, je me demande s'il y aurait moyen de mettre le processeur à la même cadence qu'une 83+ normale facilement.
Je ne savais pas qu'il courrait à une autre vitesse sur la 84+SE, je n'active rien de spéciale :/ Est-ce plus vite que dans le screenshot ?
deeph (./2) :
Sinon le titre fait un peu bizarre en français, non ? Le mot 'chasse' sous entend 'abattre' ce qu'on chasse, or là il cherche justement la liberté. Enfin ça reste compréhensible.
Ah je ne savais pas, je pensais qu'il avait aussi la signification de "chercher". J'ai seulement changé le nom parce que je ne voulais pas chasser des topes, y a-t-il un nom meilleur ?
deeph (./2) :
Autrement il faut que je vérifie, mais j'ai l'impression qu'on meurt lorsque une balle sort de l'écran et qu'on était dans sa trajectoire (même si on s'est pas fait toucher), à moins que ce soit parce qu'il y a trop de têtes simultanément ?
La seule manière de mourir/perdre c'est d'être abattu par une balle, qu'est-ce que tu veux dire ? La détection de collision se fait avec les coordonnées actuelles de chaque balle, et on peut ignorer tous les "gardiens" si l'on veut, seulement qu'ils vont tirer pas mal de balles sur toi :P
deeph (./2) :
Mais bravo, c'est original comme idée, je me demande d'où ça t'es venu ? tongue
Merci grin Je pensais que c'était dommage de tuer quelqu'un (ou quelque chose) qui ne t'a jamais rien fait de mal, donc j'ai décidé d'utiliser des gardiens de prison. Initialement je voulais faire un jeu style Mario avec des méchants et items qu'il fallait éviter (ou sauter dessus), je pensais peut-être que les gardiens sortiraient de leur cadre pour entrer dans le map ou qu'il jetteraient un méchant, mais c'était un peu compliqué et j'avais déjà peu d'espace. Donc ils utilisent simplement leurs pistoles. Je voudrais ajouter plus de choses, mais je ne sais pas ce que je pourrais y ajouter. Le formate des maps est très flexible, aussi, on peu définir collisions de toutes les côtés, il y a quelques tiles qui te permettent de passer par le dessus, quelques qui te permettent de passer par la gauche ou la droite, etc.
Voici du code source :
brush_data:
;byte de acción:
;0: se puede pasar desde abajo, armado = no
;1: se puede pasar desde arriba, armado = no
;2: se puede pasar desde la izquierda, armado = no
;3: se puede pasar desde la derecha, armado = no;4: avanzarte al próximo nivel una vez dentro

edit 2 : la traduction (j'ai aussi traduit la citation, mais je me demande si c'est nécessaire) :
Merci beaucoup ! Il reste encore les sprites "Puntos/Tiempo/Nivel", mais je crois qu'il ne faut pas toucher "PTS" et "NV", et peut-être je peux changer la "o" de TMPO en une "S" et ça suffira smile

Si vous avez des idées (ou plus de bogues), je suis tout oreilles !
5
chickendude (./4) :
Du scrolling vertical est très simple!

Il faut que je prenne le temps de lire le code source, ça m'a l'air intéressant et surtout pas trop long tongue
chickendude (./4) :
Je ne savais pas qu'il courrait à une autre vitesse sur la 84+SE, je n'active rien de spéciale :/ Est-ce plus vite que dans le screenshot ?

C'est un peu plus vite, sans doute parce que ça s'exécute à 15MHz, non ?
chickendude (./4) :
Ah je ne savais pas, je pensais qu'il avait aussi la signification de "chercher". J'ai seulement changé le nom parce que je ne voulais pas chasser des topes, y a-t-il un nom meilleur ?

Ça le sous-entend aussi, mais pas seulement. Enfin le nom est compréhensible, et de toute façons je n'arrive pas à en trouver un meilleur... tongue
chickendude (./4) :
La seule manière de mourir/perdre c'est d'être abattu par une balle, qu'est-ce que tu veux dire ? La détection de collision se fait avec les coordonnées actuelles de chaque balle, et on peut ignorer tous les "gardiens" si l'on veut, seulement qu'ils vont tirer pas mal de balles sur toi :P

Enfaite j'ai l'impression qu'on ne meurt pas instantanément lorsque la balle nous touche (elle continue un peu son chemin).
chickendude (./4) :
Merci beaucoup ! Il reste encore les sprites "Puntos/Tiempo/Nivel", mais je crois qu'il ne faut pas toucher "PTS" et "NV", et peut-être je peux changer la "o" de TMPO en une "S" et ça suffira smile

Ah oui, mais effectivement changer le 'o' en 's' est suffisant !

C'est bizarre, il y a une ligne de plus dans la citation du jeu, mais pas dans la source : "Now I know why things are as they are, and why I am the way I am." ? (En français ça donnerait en gros : "Maintenant je sais pourquoi les choses sont comme elles sont, et pourquoi je suis comme je suis").
6
deeph (./5) :
C'est un peu plus vite, sans doute parce que ça s'exécute à 15MHz, non ?
Non, ça devrait s'exécuter à 6 MHz... Je ne sais même pas comment on active l'exécution 15MHz!
Enfaite j'ai l'impression qu'on ne meurt pas instantanément lorsque la balle nous touche (elle continue un peu son chemin).
Oui, il y a une petite animation de "sang" mais on la voit pas très clairement. Le jeu s'exécute jusqu'à la fin de cette animation smile
Ah oui, mais effectivement changer le 'o' en 's' est suffisant !

C'est bizarre, il y a une ligne de plus dans la citation du jeu, mais pas dans la source : "Now I know why things are as they are, and why I am the way I am." ? (En français ça donnerait en gros : "Maintenant je sais pourquoi les choses sont comme elles sont, et pourquoi je suis comme je suis").
Oui, originalement je voulais y mettre le texte entier, mais j'avais enlevé la plupart pour que le jeu soit moins de 4ko. Pour la version Ticalc j'avais ajouté l'autre ligne au dernier moment (le jeu surpasse 4ko, quelque chose comme 4010) mais j'ai pas mis à jour le screenshot :P Le texte originale était en espagnol.

Voici une version qui peut assembler des .8xp français/espagnols : chasse.7z

Merci ! smile
7
Activer 15Mhz :

ld a,1
out ($20),a ;set 15MHz


edit : Ce port est en doublon avec un autre port je crois, faudrait aller voir sur wikiti pour plus d'infos smile
8
chickendude (./6) :
Non, ça devrait s'exécuter à 6 MHz... Je ne sais même pas comment on active l'exécution 15MHz!

À la base la TI 84+SE tourne à 15MHz il me semble, donc les programmes exécutés aussi, non ? À moins que j'ai tout faux, de toute façons c'est toi l'expert tongue

Enfin le nombre de têtes simultanées est aléatoire ? Il faudrait peut être le limiter en fonction des niveaux (2 têtes au maximum pour le niveau 1 etc...), parce que là c'est vrai que ça commence dur.

À ce que j'ai compris tu ne vas plus te limiter à 4ko, donc autant rajouter des niveaux, et pourquoi pas quelques objets sur la carte pour pimenter le gameplay (des pièges, des bonus qui tue tous les gardes d'un coup etc...). Il y a du potentiel smile
chickendude (./6) :
Oui, il y a une petite animation de "sang" mais on la voit pas très clairement. Le jeu s'exécute jusqu'à la fin de cette animation

Ah ok, mais de toute façons les collisions sont correctes, c'est juste que ça me semblait bizarre (pendant 1/2 sec on se dit "c'est bon je l'ai esquivée", mais enfaite non tongue).

edit : le lisez-moi est excellent grin

En lieu d'aller à la chasse des adorables topes, on va chasser de vraies bêtes : les fonctionnaires de prison ! Tu as été emprisonné/e pour qui sait quels délits, condamné/e à renoncer à ta liberté pour te réinsérer à l'heureuse société de fiers moutons patriotiques.

Sinon en sautant sans cesse il y a moyen d'avancer rapidement (par contre au niveau 3 je me suis fait "head shot" sans pouvoir réagir sick).
9
deeph (./8) :
Enfin le nombre de têtes simultanées est aléatoire ? Il faudrait peut être le limiter en fonction des niveaux (2 têtes au maximum pour le niveau 1 etc...), parce que là c'est vrai que ça commence dur.
C'est une très bonne idée ! Oui, pour le moment c'est possible d'avoir 9 têtes à la fois (enfin, je crois que c'est possible, peut-être avec les délais c'est pas possible). Merci smile
deeph (./8) :
À ce que j'ai compris tu ne vas plus te limiter à 4ko, donc autant rajouter des niveaux, et pourquoi pas quelques objets sur la carte pour pimenter le gameplay (des pièges, des bonus qui tue tous les gardes d'un coup etc...). Il y a du potentiel smile
Toutes de bonnes idées, j'aime particulièrement l'item pour tuer tous les gardes d'un coup ! Peut-être on pourra avoir un objet dans les mains et l'utiliser avec [Alpha], ou l'on pourrait avoir un inventaire, je ne sais pas. Je n'ai pas d'idées pour d'autres items non plus..
Ah ok, mais de toute façons les collisions sont correctes, c'est juste que ça me semblait bizarre (pendant 1/2 sec on se dit "c'est bon je l'ai esquivée", mais enfaite non tongue).
Je croyais que c'était un effet intéressant, mais je peux pauser l'action dès que l'on meurt, ce serait facile de faire smile
le lisez-moi est excellent grin
Merci, je l'ai écrit très vitement, jusque avant de l'envoyer aux juges et je sais qu'il est plein de fautes, mais merci !
Contra (./7) :
Activer 15Mhz :

ld a,1
out ($20),a ;set 15MHz


edit : Ce port est en doublon avec un autre port je crois, faudrait aller voir sur wikiti pour plus d'infos smile
Merci, je ne savais pas qu'il était si simple. Et pour le remettre à 6MHz ? un zéro ?
Comme malus tu peux faire des ralentisseurs (des gardiens qui te choppent pendant 1~2 sec), et comme bonus l'inverse : des cellules à ouvrir pour permettre à d'autres prisonniers de s'évader etc...
chickendude (./9) :
Je croyais que c'était un effet intéressant, mais je peux pauser l'action dès que l'on meurt, ce serait facile de faire

Oui ce serait mieux comme ça (mais laisse l'animation, elle est très bien) smile
Pour le remettre à 6Mhz :

xor a out ($20),a ;set 6MHz
Merci smile

Et j'aime bien l'idée d'aider à d'autre prisonniers à s'échapper, peut-être chaque niveau peut avoir un gardien dans le map qu'il faut tuer (pendant que les autres gardiens t'attaquent) pour ramener ses clés et libérer les prisonniers de cette section ? Le jeu est toujours assez rapide, on peu encore ajouter pas mal de choses. Je voudrais bien qu'il devienne un type de jeu plateforme, peut-être d'autres personnes pourraient se joindre à ton équipe (je pense aux jeux des Tortues ninja, où l'on avait quatre personnages : les quatre tortues).
Oui mais dans ce cas autant mettre du scroll horizontal aussi, non ? Parce que battre un boss dans une moitié d'écran de 96 pixels de larges ça peut être assez compliqué tongue
Je crois qu'il serait possible, les bosses auront les mêmes dimensions que le joueur, si j'ajoute du scrolling horizontal ça va trop compliquer des choses, je crois. Et d'ailleur, ça va tout ralentir wink

MiuK
Comme tu veux, j'attends de voir happy
J'ai quelques jours libres (ici on a quelques jours fériés !), donc on verra si je consacre un peu de temps à ce petit projet smile Pour le moment il faut plus de niveaux et plus de sprites/tiles (et il faut aussi effacer tous les gardiens avant de commencer un nouveau niveau, je croyais que je le faisait déjà, mais comme tu dis parfois on me tue avant de pouvoir même me bouger !).
Si tu as besoin d'aide pour quoi que ce soit hésite pas, je peux même rapidement te faire un petit éditeur de niveaux à partir de celui de pokémon smile
Merci, je crois qu'il faut pas, pour le moment les cartes sont très simples smile Mais si tu veux aider avec du code (ou des idées !), sois le bienvenu !

Mais je pensais aujourd'hui que je voudrais avoir des tiles diagonales (des pentes) comme dans Mario, mais je ne sais pas la meilleure méthode de l'organiser. Avez-vous des idées ? Je pensais que je pourrais ajouter un masque pour les tiles diagonales et l'on vérifierait la coordonnée Y plus à gauche pour les pentes comme ci : \ et la plus à droite pour les pentes type / avec ce masque... Peut-être il ne faut même pas un masque. J'aime bien le système de points/exp des RPGs, j'ai envie d'ajouter un système pareille ici mais je ne sais pas comment l'intégrer :P
Ça dépend comment sont gérées les collisions. J'ai commencé à lire le code source, mais il faut encore que je vois comment marche le moteur de scroll etc...
chickendude (./18) :
J'aime bien le système de points/exp des RPGs, j'ai envie d'ajouter un système pareille ici mais je ne sais pas comment l'intégrer :P

Quitte à faire un système aussi développer, autant agrandir un peu la carte au moins horizontalement (faire les têtes plus petites), et ajouter des points de vie au joueur, non ?
Les têtes utilisent un petit hack : elles sont alignées au gbuf pour pouvoir les charger directement sans avoir à décaler des bits, etc., je les copie directement :P

Le scrolling verticale est un hack aussi, le gbuf contient un rang de tiles de plus, donc dans la routine pour afficher le gbuf à l'écran (la routine fastcopy) si l'offset y = 2, on simplement saute les deux premiers rangs (de pixels) et affiche les prochain 64 rangs. Le tilemapper dessine 72 rangs dans le gbuf, en lieu de 64.

Je pensais en lieu de PV, on pourrait augmenter sa vitesse, sa capacité de sauter ou de soulever objets, etc. Des attributs physiques. Mais des PV n'est pas une mauvaise idée non plus...
chickendude (./20) :
Les têtes utilisent un petit hack : elles sont alignées au gbuf pour pouvoir les charger directement sans avoir à décaler des bits, etc., je les copie directement :P

Ah ok, mais ce serait pas possible de les réduire en 8*8 tout en les gardant alignées ? Comme ça tu aurais même de la place pour afficher les PV, l'inventaire etc...
chickendude (./20) :
Le scrolling verticale est un hack aussi, le gbuf contient un rang de tiles de plus, donc dans la routine pour afficher le gbuf à l'écran (la routine fastcopy) si l'offset y = 2, on simplement saute les deux premiers rangs (de pixels) et affiche les prochain 64 rangs. Le tilemapper dessine 72 rangs dans le gbuf, en lieu de 64.

Le principe j'ai pigé, maintenant je veux voir comment techniquement tu fais ça tongue

Perso j'avais déjà essayé de faire un tilemapper correcte il y a quelques temps, mais pour qu'il ne soit pas trop gros/compliqué je voulais utiliser une routine de sprites clippés pour chaque tile et les afficher à l'écran selon les offsets (avec une ligne et une colonne de plus, comme tu l'expliques). Ça n'est pas le plus rapide mais c'est le plus simple, enfin si ma routine avait marché (d'ailleurs, je vais essayer de la faire fonctionner si j'ai le temps).
chickendude (./20) :
Je pensais en lieu de PV, on pourrait augmenter sa vitesse, sa capacité de sauter ou de soulever objets, etc. Des attributs physiques. Mais des PV n'est pas une mauvaise idée non plus...

L'expérience pourrait avoir ce genre de conséquences sur le joueur, mais je pense que si tu agrandis les niveaux et que tu complexifie le jeu (plus de méchants), il faut contrebalancer de l'autre côté, c'est à dire aider un peu le joueur à survivre, au moins en lui octroyant quelques PV smile
deeph (./21) :
Ah ok, mais ce serait pas possible de les réduire en 8*8 tout en les gardant alignées ? Comme ça tu aurais même de la place pour afficher les PV, l'inventaire etc...
Oui, on peut les réduires, mais ou mettrions-nous les pistolets ? Ou l'on pourrait même laisser l'idée des têtes :P

deeph (./21) :
Perso j'avais déjà essayé de faire un tilemapper correcte il y a quelques temps, mais pour qu'il ne soit pas trop gros/compliqué je voulais utiliser une routine de sprites clippés pour chaque tile et les afficher à l'écran selon les offsets (avec une ligne et une colonne de plus, comme tu l'expliques). Ça n'est pas le plus rapide mais c'est le plus simple, enfin si ma routine avait marché (d'ailleurs, je vais essayer de la faire fonctionner si j'ai le temps).
Si tu utilise une routine de sprites pour afficher chaque tile, ça va surement être plus lent. Moi je les copie directement (aligné) et fais la rotation dans la routine fastcopy, ma "routine de sprite" est comme ci :
;hl = début du sprite
;hl' = endroit actuel dans le gbuf
;de' = nombre de colonnes dans le gbuf
	ld b,8			;8 rangs à dessiner
desSprite: 
	ld a,(hl)		;octet du sprite à dessiner 
	inc hl			;prochain octet 
	exx				;changer aux registres cachés
		ld (hl),a
		add hl,de	;prochain rang du gbuf
	exx
	djnz desSprite
wink Comme ça il ne faut pas calculer l'endroit dans le gbuf chaque fois que tu veux afficher un tile.

deeph (./21) :
L'expérience pourrait avoir ce genre de conséquences sur le joueur, mais je pense que si tu agrandis les niveaux et que tu complexifie le jeu (plus de méchants), il faut contrebalancer de l'autre côté, c'est à dire aider un peu le joueur à survivre, au moins en lui octroyant quelques PV smile
Oui, et ça pourrait être plus intéressant, en lieu d'avoir des "niveaux", d'avoir un map à explorer (mais dans le même style que l'on a maintenant : des chambres de prison) où il faudra revenir au début pour trouver certains items ou extras, je ne sais pas !
chickendude (./22) :
Oui, on peut les réduires, mais ou mettrions-nous les pistolets ? Ou l'on pourrait même laisser l'idée des têtes :P

C'est vrai que si tu tiens à en faire un vrai jeu de plateforme, autant inclure les gardes dans la carte elle même, et donc supprimer les têtes, mais c'est toi qui voit. Enfin si c'est le cas, je pense que le scroll horizontal serait nécessaire : les gardes aurait plus de place pour se déplacer et nous plus de place pour les esquiver (du moins, avant de pouvoir les tuer tongue), et les niveaux seraient plus longs.
chickendude (./22) :
Si tu utilise une routine de sprites pour afficher chaque tile, ça va surement être plus lent.

Oui mais ça reste très fluide, et ça permet de ne pas avoir à utiliser un buffer plus large que l'écran (ce qui est au moins nécessaire pour le scroll horizontal).
chickendude (./22) :
Oui, et ça pourrait être plus intéressant, en lieu d'avoir des "niveaux", d'avoir un map à explorer (mais dans le même style que l'on a maintenant : des chambres de prison) où il faudra revenir au début pour trouver certains items ou extras, je ne sais pas !

Ça va devenir un vrai jeu d'aventure, mais je ne suis pas contre grin

J'ai bien aimé Castlevania pour ça justement, donc pourquoi pas smile
Perso je crois que les têtes sont un peu ennuyantes :P Je vais développer l'idée de la chasse aux "vaches" un peu plus, puis on peut faire un split s'il faut, enlevant les "têtes de merde" (:P) pour faire un jeu plus dans le style de Castelvania.