Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
Nouveau jeu Thomson : Mission: Liftoff http://www.logicielsmoto.com/phpBB/viewtopic.php?f=1&t=572 |
Page 1 sur 7 |
Auteur: | exocet [ 01 Oct 2018, 08:15 ] |
Sujet du message: | Nouveau jeu Thomson : Mission: Liftoff |
Bonjour à tous, Nous sommes heureux d'annoncer la sortie d'un nouveau jeu pour Thomson TO8, TO8D et TO9+ : Mission: Liftoff. Prehisto et moi-même travaillons sur ce projet depuis plus de quatre ans et nous pensons qu'il repousse de beaucoup ce qui était considéré comme les limites du TO8, mais nous vous laissons juger :
Mission: Liftoff est librement inspiré par Jetpac, un classique des jeux 8 bits. Le jeu est compatible avec les émulateurs DCMOTO et Teo et l'image disque est disponible ici : http://www.seize-color.net/liftoff/ Trailer : https://www.youtube.com/watch?v=WZnewEG5ZAA Vidéo de gameplay: https://www.youtube.com/watch?v=47ZuQm4XWew
|
Auteur: | Samuel Devulder [ 01 Oct 2018, 12:45 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
G E N I A L! 4ans de boulot. Ca c'est du taf!!! Les animations sont superbes et les bruitages tip-top... Hats off messieurs! (oui j'ai pas trouvé le smiley pour ca, mais bon... c'est pareil) |
Auteur: | Daniel Coulom [ 01 Oct 2018, 12:48 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Quand ils découvrirons Mission Liftoff, beaucoup de joueurs vont devoir réviser leur opinion sur les machines Thomson. Quant aux thomsonistes convaincus, ils savent que la qualité du jeu est la manifestation du talent des auteurs. Une fois de plus ils m'impressionnent, et je les félicite |
Auteur: | W_oo_d [ 01 Oct 2018, 16:47 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Congratulations to all involved in this project for the fantastic game, awesome gfx, music/sfx and playability. |
Auteur: | Fool-DupleX [ 01 Oct 2018, 17:38 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Une tuerie cette prod !! On a l'illusion d'être sur une console de jeu. Le nombre de sprites est incroyable et le son en fond me bluffe totalement ! J'ai toujours dit que sur Thomson, les machines étaient pas si mal et le soft complètement pourri. En voici encore une preuve. |
Auteur: | Fool-DupleX [ 01 Oct 2018, 17:46 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Oh noooooon, y'a même l'étiquette pour la disquette ! Génial ! |
Auteur: | Samuel Devulder [ 01 Oct 2018, 18:07 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Oui, et il y a même un crack intégré : Si tu appuis sur le bouton Action du joystick pendant le chargement tu es invulnérable (dommage que je n'ai pas de joystick sur mes TO8 d'ailleurs) |
Auteur: | Fool-DupleX [ 01 Oct 2018, 18:19 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Je viens de tester sur mon TO9+, c'est même mieux que dans la vidéo Incroyable ! Ce jeu est nickel dans les moindres détails. |
Auteur: | Prehisto [ 01 Oct 2018, 18:20 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Samuel Devulder a écrit: Oui, et il y a même un crack intégré : Si tu appuis sur le bouton Action du joystick pendant le chargement tu es invulnérable (dommage que je n'ai pas de joystick sur mes TO8 d'ailleurs) Sauf que ce mode ne compte pas les points |
Auteur: | Prehisto [ 01 Oct 2018, 19:07 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Quelque précisions techniques, puisque c'est ma partie. Oui, ça a mis 4 ans, d'abord parce que je n'ai bien évidemment pas occupé mon temps seulement à travailler sur le jeu, mais aussi et surtout, parce que le challenge a été de faire un jeu d'une rapidité maximum, ce qui a nécessité un pétrissage assidu du code et des optimisations sans fin. Il a fallu aussi mettre au point des techniques de travail assez inédites. La structure des graphismes Par exemple, vous pourrez toujours chercher les graphismes des sprites en mémoire, vous ne les y trouverez pas. Parce que tous ces graphismes ont été convertis en code. Chaque point de couleur est appliqué "à la main" sans passer par une matrice. Par exemple, une partie du code de l'affichage du jetpack (X contient le pointeur écran, B contient #$F0 (soit 240, pour passer les lignes)): Code: ... SOUNDA abx lda #$f0 anda ,x adda #$09 sta ,x lda #$f0 anda 40,x adda #$04 sta 40,x lda #$44 sta -120,x sta -80,x sta -40,x abx sta 80,x lda #$a3 ... ... ce qui est la façon la plus rapide d'afficher. Les bruitages Pour ce qui est du son 3 voies, il a bien évidemment fallu mixer les différents sons qui doivent être générés (2 banques de données, l'une apparaissant en espace cartouche, l'autre en espace RAM et le code traitant en espace non commutable) et écrire le résultat en mémoire de page directe pour un accès plus rapide. Voici la macro (X contient le pointeur sur le son 1, Y le pointeur sur le son 2, U le pointeur sur le son 3 et DP permet d'accéder au buffer de mixage): Code: SNDADD macro ldd -SNDOFFS+\0,x Read voice 0 addd -SNDOFFS+\0,y Add voice 1 addd -SNDOFFS+\0,u Add voice 2 std <sndbuf+\0 Write buffer endm Ainsi, les 156 octets nécessaires pour générer le son pendant une frame sont remplis en 2156x2 cycles. La lecture du joystick Un problème de taille s'est aussi posé : la lecture du joystick interférait avec la ligne du son, puisqu'utilisant les mêmes registres hardware. Il a fallu donc trouver une astuce pour lire le joystick sans provoquer de hoquet sonore. Je vous livre ici la routine utilisée : Code: *--------------------------------------- * Get joystick parameters *--------------------------------------- ldx #$e7cf Joystick register ldy #$e7cd Joystick register ldu #joydir-5 Joystick table brn * - tempo - (info) SNDSA sndbuf+19 Generate sound ldd #$fbfc ! Mute by CRA to anda ,x ! avoid sound when sta ,x ! $e7cd is written andb ,y ! Activate stb ,y ! joystick port ora #$04 ! Disable mute by sta ,x ! CRA + joystick ldd #$400f ! andb >$e7cc Read position ldb b,u Read orientation stb <astrol+GAORIE1 Orient. anda ,y ! Read button eora #$40 ! status sta <joybtn Joystick button ldd #$fb3f ! Mute by CRA to anda ,x ! avoid sound when sta ,x ! $e7cd written stb ,y Full sound line ora #$04 ! Disable mute by sta ,x ! CRA and sound La collision entre sprites Pour les tests de collision entre sprites, j'utilise ce genre de routine (qui est très rapide et très efficace), ici la routine pour la collision entre la fusée et l'astronaute : Code: ... * Check if astronaut touched rocket ldd <astrol+GYA Read XY astronaut AX0 set 3 Area right offset AY0 set 3 Area top offset AX1 set 3 Area left offset AY1 set 3 Area bottom offset AW set ASTW-AX0-AX1 AH set ASTH-AY0-AY1 BX0 set 4 Area right offset BY0 set 14 Area top offset BX1 set 4 Area left offset BY1 set 4 Area bottom offset BW set RKTW-BX0-BX1 BH set RKTH-BY0-BY1 suba #RKTY -Y rocket subb #RKTX -X rocket adda #AY0+AH-1-BY0 ! Compute addb #AX0+AW-1-BX0 ! zones cmpa #AH+BH-1 ! Skip if no bhs clar3 ! vertical collision cmpb #AW+BW-1 ! Skip if no bhs clar4 ! horizontal collision ... Évidemment, cette routine n'est qu'une routine de collision entre rectangles et varie selon la nature des sprites. Les suba/subb en immédiat sont généralement remplacés par des adressages indexés ou directs quand les deux sprites sont mouvants, et ici le "suba #RKTY" est intégré à l'adda consécutif, mais j'ai développé un peu le code pour plus de clarté. La collision avec les plateaux et les bords d'écran Pour les collisions avec les plateaux ou les bords d'écran, j'utilise une routine spéciale (puisque les plateaux et les bords d'écrans sont immobiles) qui repère la collision en fonction de la direction prise par le sprite. Ici la collision des monstres avec les plateaux et les bords d'écran (je n'ai conservé que la routine sans mouvement et la routine pour la direction Est, mais les routines pour les autres directions sont du même acabit) : Code: *--------------------------------------- * Check ennemy/bar+screen collision *--------------------------------------- ebar fdb nmebar $00 NOMOVE fdb eeebar $02 E fdb wwebar $04 W fdb nmebar $06 (E-W) fdb ssebar $08 S fdb seebar $0A S-E fdb swebar $0C S-W fdb nmebar $0E (E-W-S) fdb nnebar $10 N fdb neebar $12 N-E fdb nwebar $14 N-W *--------------------------------------- * Enemy/Bar collision (no move) * XXX 46 nmebar equ * mul - tempo - mul - tempo - mul - tempo - leax 0,u - tempo - ldd #(ALIVE<8)+NOMOVE rts (info) *--------------------------------------- * Enemy/Bar collision (east) * XXX 38 eeebar equ * exg a,a - tempo - ldd ,u Read coords (info) * bar 1 ---------------------- cmpb #X0BAR1-ENEW eb0 equ *-1 bne eeeb0 exg a,a - tempo - nop - tempo - cmpa #Y0BAR1-ENEH eb1 equ *-1 bls eeeb3 cmpa #Y1BAR1+1 eb2 equ *-1 bhs eeeb4 ldd #(TOUCHED<8)+WEST rts (info) * bar 2 ---------------------- eeeb0 cmpb #X0BAR2-ENEW eb3 equ *-1 bne eeeb1 leax 0,x - tempo - cmpa #Y0BAR2-ENEH eb4 equ *-1 bls eeeb3 cmpa #Y1BAR2+1 eb5 equ *-1 bhs eeeb4 ldd #(TOUCHED<8)+WEST rts (info) * bar 3 ---------------------- eeeb1 cmpb #X0BAR3-ENEW eb6 equ *-1 bne eeeb2 cmpa #Y0BAR3-ENEH eb7 equ *-1 bls eeeb3 cmpa #Y1BAR3+1 eb8 equ *-1 bhs eeeb4 ldd #(TOUCHED<8)+WEST rts (info) *--- Continue eeeb2 leax 0,x - tempo - eeeb3 leax 0,x - tempo - eeeb4 ldd #(ALIVE<8)+EAST rts (info) Toutes les valeurs marquées par une étiquette eb? sont mises à jour pour chaque écran de niveau. Conclusion L'écran du jeu, comme vous le savez déjà, est rafraîchi tous les 25èmes de seconde, sans (trop de) temps morts. Chaque cycle, pour les 39936 cycles nécessaires à la création de l'écran, ont été quasiment utilisés. Bon, évidemment, tous les sprites ne seront pas forcément à l'écran tous ensembles, mais même s'il l'étaient, le jeu n'en serait pas ralenti pour autant. Je tiens à remercier Exocet pour avoir mis à disposition ses impressionnants talents de graphiste et pour sa collaboration sans faille Ainsi que tous ceux qui ont participé à la réalisation de ce jeu, et qui l'air de rien, vont se faire connaître dans le milieu de la communauté Thomson. |
Auteur: | Samuel Devulder [ 01 Oct 2018, 19:59 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Merci pour les explications. Le son 3 voix c'est pendant le jeu j'imagine? La musique du titre c'est de la décompression temps réel à 44khz depuis les 256ko je présume. Avec toutes les macros SNDSA placées dans le code, ce dernier doit prendre une place énorme en ram. Peut-on avoir une idée de l'occupation des 512ko de ram ? |
Auteur: | Prehisto [ 01 Oct 2018, 20:57 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Samuel Devulder a écrit: Merci pour les explications. Le son 3 voix c'est pendant le jeu j'imagine? Absolument. Samuel Devulder a écrit: La musique du titre c'est de la décompression temps réel à 44khz depuis les 256ko je présume. Ha ben oui j'en ai pas parlé! Effectivement, j'ai utilisé la routine d'intro pour Space Project que j'ai un peu retravaillée de telle façon qu'elle prenne en compte le bouton du joystick et qu'elle fasse les changements d'écran. Samuel Devulder a écrit: Avec toutes les macros SNDSA placées dans le code, ce dernier doit prendre une place énorme en ram. Peut-on avoir une idée de l'occupation des 512ko de ram ? En fait, les macros comme SNDSA ne contiennent pas grand chose : Code: SOUNDA macro lda ,y+ ! Generate sta >PORTB ! sound endm Juste ce qu'il faut pour générer le son. L'animation d'intro occupe les banques de 4 à 19, le code pour l'animation s'implantant en RAM non commutable. Pour ce qui est du jeu lui même : les graphiques (+ les programmes de collision, de gestion des mouvements, etc...) vont de la banque 6 à 9, les sons occupent les banques 10 et 11, les fonds d'écran vont de la banque 12 à 14, les graphismes complémentaires en banque 15, et la musique de présentation à 44100Hz va de la banque 16 à 31, c'est-à-dire seulement quand l'extension mémoire est présente. Les banques 0, 2 et 3 servent à l'affichage, et les banques 4 et 5 contiennent les sauvegardes d'écran pour le jeu (pour effacer les sprites + pour fixer les sprites désormais immobiles + pour les mouvements de fusée). |
Auteur: | Samuel Devulder [ 01 Oct 2018, 21:36 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Citation: Ainsi, les 156 octets nécessaires pour générer le son pendant une frame Une frame étant 1/25s, ca veut dire que le son est joué durant le jeu à 25*156=3900hz. C'est ca ? Prehisto a écrit: Ha ben oui j'en ai pas parlé! Effectivement, j'ai utilisé la routine d'intro pour Space Project que j'ai un peu retravaillée de telle façon qu'elle prenne en compte le bouton du joystick et qu'elle fasse les changements d'écran. Hum.. j'ai testé le jeu sur mon TO8D (256ko, sans joystick), donc le son ne se joue pas et je reste coincé sur la page titre du "HALL OF FAME" sans pouvoir sortir ni que ca change d'écran. Sur émulateur je reproduis le même scenario en choissant la même config (TO8D 256k pas de joystick). Le débuggeur m'indique qu'on tourne sur cette boucle: Code: CFF0 BDCF1A JSR $CF1A De ce que je comprends c'est l'init du son et je ne vois pas sous quelle condition la carry passerait à 1. Est-ce l'absence de joystick ou une protection contre les vilains pirates ?
CFF3 24FB BCC $CFF0 (...) CF1A 3416 PSHS X,B,A CF1C 8EE7CF LDX #$E7CF CF1F CCFBFC LDD #$FBFC CF22 A484 ANDA ,X CF24 A784 STA ,X CF26 F4E7CD ANDB $E7CD CF29 F7E7CD STB $E7CD CF2C 8A04 ORA #$04 CF2E A784 STA ,X CF30 C60F LDB #$0F CF32 F4E7CC ANDB $E7CC CF35 B6E7CD LDA $E7CD <== on lit $DC (sous émul.. chez moi $CC je pense (depuis basic)) CF38 8440 ANDA #$40 <== A=$40 CF3A 8840 EORA #$40 <== A=0 CF3C 8BC0 ADDA #$C0 <== A=$C0 et pas de carry :( CF3E A684 LDA ,X CF40 84FB ANDA #$FB CF42 A784 STA ,X CF44 863F LDA #$3F CF46 B7E7CD STA $E7CD CF49 A684 LDA ,X CF4B 8A04 ORA #$04 CF4D A784 STA ,X CF4F 3596 PULS A,B,X,PC |
Auteur: | Prehisto [ 01 Oct 2018, 21:46 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Pour débloquer, peux-tu appuyer une fois sur le clavier (touche quelconque) puis sur le bouton du joystick, en alternant ? |
Auteur: | Samuel Devulder [ 01 Oct 2018, 22:05 ] |
Sujet du message: | Re: Nouveau jeu Thomson : Mission: Liftoff |
Sur mon TO8D je n'ai hélas pas de joystick (j'en ai sur le TO9 mais ce sont des prises DIN.) Je viens de tester sur émul: avec le joystick émulé, l'appui sur action décoince l'écran. Donc oui c'était bien lié à l'absence de joystick sur la machine. Comme on dit ==> RTFM |
Page 1 sur 7 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |