Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

Projet : 40ème anniversaire PAC-MAN
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=1&t=609
Page 18 sur 19

Auteur:  Neotenien [ 27 Juin 2022, 18:15 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

ADNZ, je ne pense vraiment pas que la société Namco oserait te porter préjudice en cas d'utrilisation de Pac-Man en nom officiel. Il y a eu tellement de version de "Pac-Man" même avec nom officiel sortis ou d'autres avec des noms dérivés.

Sur Thmson on a eu le même principe de jeu mais avec des évolutions ou même sur d'autres plateforme (Atari ici)... il y a des noms dans ces pages en dehors de "Pac-Man" si ça peut t'inspirer et il y a même eu un Pac-Man en labyrinthe 3D (sur C64, qui me parait assez difficile en fait : 3D Glopper sur C64)

Quoiqu'il en soit bravo pour le travail. Cependant, développer un Pacman fluide en mode bm16 (à cause de la taille double des pixel et qu'en plus, faire un déplacement hozizontal pixel par pxl dans ce mode c'est hyper complexe), c'est pas forcément le meilleur choix d'autant qu'il y a eu à écrire toute la partie textuelle. Bcp de plate-forme ont écrit Pacman en 4 couleurs ou,alors utiliser du monolouleur pour les sprite (Hungry Horace sur C64, Spectrum ou Tandy Coco). PacMan versio C64 utiise toute la largeur de l'écran en bm16 et ça parait + logique (pu que la taille de pixel et doublée dans ce mode)

phpBB [video]

et les sprites sont en 2 couleurs.

Pour en revenir au nom, vu qu'à l'origine, Pac" était pour "Puck" qui apparemment signifierait "pizza" pourquoi pas "Pizza Man" ? Ou quelque chose qui rappelle le Thomson, "TOc-Man" ? le c pour... je ne sais pas euh... "crock" ?

Haha je me rend compte que ce message est le 256ème de ce sujetk, j'aime bien les chiffres ronds.

Et à part ça, où peut on trouver la dernière version ?

Auteur:  adnz [ 14 Aoû 2022, 14:55 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Et voilà, c'est dispo en ligne !

https://oxustudio.com/pacman/

Auteur:  Samuel Devulder [ 14 Aoû 2022, 16:51 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Testé à l’instant sous retroarch+. Ça marche bien même si mes scores sont minables.

Il faut en faire de la pub sur systemcfg!

Auteur:  adnz [ 14 Aoû 2022, 19:34 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Merci, ok je vais faire un post, mais je le fais dans "Développements actuels" ?

[EDIT] : ok Développements actuels.
[EDIT] : c'est fait https://forum.system-cfg.com/viewtopic.php?f=25&t=13538

Auteur:  adnz [ 17 Aoû 2022, 19:09 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Bon, alors dans la routine audio j'ai ajouté le test bouton du joystick !
mais il me semble que selon si joystick ou sortie audio le status doit être différent , sinon le son crache.

La boucle de lecture du sample dans pacman.bin
Code:
splash_screen_loop

    LDY #music_index    ; set samples index adresses
    JSR PlayDPCM8kHz    ; call audio routine

        LDA  music_loop ; test if loop = 0
        CMPA #0         ; sample exit to continu
        BEQ ecran_intro ; else loop sample
       
       JMP splash_screen_loop



Code dans player audio PlayDPCM8kHz avec le test bouton joystick pour sortir de la loop audio
Code:
PlayDPCM8kHz
        pshs  d,x,y
                *lda   $E7E6   *_GetCartPageA
                *sta   RestorePage+1-decalage
        *ldd   #$fb3f  *! Mute by CRA to
        *anda  $e7cf   *! avoid sound when
        *sta   $e7cf   *! $e7cd written
        *stb   $e7cd   *! Full sound line
        *ora   #$04    *! Disable mute by
        *sta   $e7cf   *! CRA and sound
    ldu   #DACDecodeTbl-decalage
    lda   #$80                     * init delta value
    sta   smplh+1-decalage
    sta   smpll+1-decalage
ReadChunk
        lda   sound_page,y             * [4] load memory page
        beq  End                      * [3]
        *sta   $E7E6     *_SetCartPageA                  * for each page switch there is a lag, when data in ROM: 24 cycles late in stream
        sta   $E7E5
        ldx   sound_start_addr,y       * [6] Chunk start addr
Loop     
        lda   ,x                       * [4] load data byte
        lsra                           * [2]
        lsra                           * [2]
        lsra                           * [2]
        lsra                           * [2]
        ldb   a,u                      * [5] read high nibble sample
smplh  addb  #00                      * [2]
        stb   smpll+1-decalage                 * [5]
    lsrb                           * [2]
    lsrb                           * [2]
    stb   $e7cd                    * [5] send byte to DAC
        lda   ,x+                      * [6] reload data byte
        anda  #$0F                     * [2]
        ldb   a,u                      * [5] read low nibble sample
smpll  addb  #00                      * [2]
        stb   smplh+1-decalage                 * [5]

                LDA  JOYS              * click joy button
                ANDA #%01000000        * a = bit 6 value
                BEQ  DisableLoop       * test to exit
                        PSHS CC
                        JSR KTST
                        BCS DisableLoopEndRoute
                        PULS CC
                LDA #17-5
        *lda   #18                      * [96] wait
wait   deca                           * ...
        bne   wait                    * ...
        nop                            * ...
        nop                            * ...   
    lsrb                           * [2]
    lsrb                           * [2]                   
    stb   $e7cd                    * [5] send byte to DAC
        cmpx  sound_end_addr,y         * [7]
        beq   NextChunk               * [3]
        lda   #15-8                    * [79] wait
wait2  deca                           * ...
        bne   wait2                   * ...
        nop                            * ...
        bra   Loop                    * [3]
NextChunk
        leay  sound_meta_size,y        * [5]
* IFNDEF T2 
        lda   #10-5                      * [54] wait
wait3  deca                           * ...
        bne   wait3                   * ...
        nop                            * ...
* ENDC
        bra  ReadChunk                * [3]
End
        *lda   #$00
        *sta   $e7cd
        *ldd   #$fbfc  *! Mute by CRA to
        *anda  $e7cf   *! avoid sound when
        *sta   $e7cf   *! $e7cd is written
        *andb  $e7cd   *! Activate
        *stb   $e7cd   *! joystick port
        *ora   #$04    *! Disable mute by
        *sta   $e7cf   *! CRA + joystick
RestorePage       
        lda   #$00
        *sta   $E7E6     *_SetCartPageA
        puls  d,x,y,pc
DisableLoop
        LDA #00
        STA music_loop
        bra End
DisableLoopEndRoute
        PULS CC
        LDA #00
        STA music_loop
        LDA #01
        STA music_loop_out_route
        bra End

Auteur:  Samuel Devulder [ 17 Aoû 2022, 19:28 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Est ce que le bit 6 (%01000000) de JOYS est bien positionné en entrée dans l’init du cna?

Sinon au niveau asm je vois qu’il y a quelques optims possibles.

Auteur:  adnz [ 18 Aoû 2022, 20:45 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Le process c'est :

joue echantillon (envoie au DAC)
test joy
joue echantillon (envoie au DAC)
test joy
etc..

et j'ai ces 2 codes d'init !

Code:
        ldd   #$fb3f  *! Mute by CRA to
        anda  $e7cf   *! avoid sound when
        sta   $e7cf   *! $e7cd written
        stb   $e7cd   *! Full sound line
        ora   #$04    *! Disable mute by
        sta   $e7cf   *! CRA and sound


et

Code:
        lda   #$00
        sta   $e7cd
        ldd   #$fbfc  *! Mute by CRA to
        anda  $e7cf   *! avoid sound when
        sta   $e7cf   *! $e7cd is written
        andb  $e7cd   *! Activate
        stb   $e7cd   *! joystick port
        ora   #$04    *! Disable mute by
        sta   $e7cf   *! CRA + joystick


le premier c'est pour init pour le son clean et le 2eme pour l'init du joystick ??

Auteur:  Samuel Devulder [ 18 Aoû 2022, 21:03 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Bon je vais peut être dire une bêtise (je suis sans doc là), mais j’analyse les deux inits comme suit:

Le 1er positionne les bits 0 à 5 en sortie ($3f dans B).

Le 2e devrait les rebasculer en entrée (tous les bits à 0). Or il fait un and sur $fc, et donc ne mets à 0 que les 2 premiers bits (les autres, bah ça depends, en particulier pour le bit 6). Le complément de $3f est $c0 et pas $fc.

Bon c’est peut être une fausse piste.

Une autre est aussi qu’il faut desactiver et réactiver le joystick entre deux écritures d’échantillons.

Bon désolé de ne pas pouvoir être plus précis ou certain, mais au niveau symétrie entre l’activation et la deactivation du cna (ou dac en anglais), un truc me gêne sans que je sache complètement l’identifier.

Auteur:  Daniel Coulom [ 19 Aoû 2022, 07:38 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Il faut aussi bien vérifier le contenu des registres de contrôle CRA et CRB. Ils permettent en particulier de mettre en sortie les broches CA2 et CB2 en positionnant à 1 le bit b5. Dans le TO8, ces broches sont reliées aux entrées PB6 et PB7, donc aux boutons d'action de chaque joystick. Il est donc possible de modifier ainsi les valeurs lues sur le port PB.

Cette fonction (configuration en sortie de CA2-CB2) n'est jamais utilisée par les programmes Thomson et n'est pas émulée par dcmoto, c'est peut-être pourquoi, si le bit b5 a été positionné par erreur dans pacman, les manettes fonctionnent avec l'émulateur et pas avec la vraie machine.

Autre point à vérifier dans la routine d'initialisation du 6821 : DDRA doit être à zéro (tous les bits de PA sont en entrée) et DDRB doit être à $3F : bits 0-5 en sortie pour le CNA, bits 6-7 en entrée pour les boutons d'action. Ensuite il n'est pas nécessaire de modifier DDRB.

Rappel : le bit 2 de CRA(CRB) doit être à 1 pour accéder à PA(PB) et à 0 pour accéder à DDRA(DDRB).

Auteur:  adnz [ 19 Aoû 2022, 19:41 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Bon OK, ça fonctionne, le son crachote pas et le joystick est OK ingame.
Il ne me reste juste à init correctement au début avant l'écran d'accueil pour ne pas que le bouton s'appuie tout seul et fasse sauter la premiere musique ! et c'est bon :)

[EDIT] : OK tout marche sur le vrai TO8 (juste cette histoire de "C" pour crédit à régler)

Auteur:  Samuel Devulder [ 19 Aoû 2022, 19:50 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Super! T’as fixé quoi au juste du coup?

Auteur:  adnz [ 19 Aoû 2022, 20:10 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

dans la routine audio "PlayDPCM8kHz"

j'ai mis au début ça

Code:
        ldd   #$fb3f  *! Mute by CRA to
        anda  $e7cf   *! avoid sound when
        sta   $e7cf   *! $e7cd written
        stb   $e7cd   *! Full sound line
        ora   #$04    *! Disable mute by
        sta   $e7cf   *! CRA and sound


et en fin de process ça

Code:
        lda   #$00
        sta   $e7cd
        ldd   #$fbfc  *! Mute by CRA to
        anda  $e7cf   *! avoid sound when
        sta   $e7cf   *! $e7cd is written
        andb  $e7cd   *! Activate
        stb   $e7cd   *! joystick port
        ora   #$04    *! Disable mute by
        sta   $e7cf   *! CRA + joystick

Auteur:  adnz [ 20 Aoû 2022, 11:17 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

Finalement c'est pas le joystick le soucis de passage du premier screen tout seul, c'est le clavier !

Dans la loop audio y'a ce code qui me permet de tester si une touche est appuyé :

Code:
...
        PSHS CC
        JSR KTST
        BCS DisableLoopEndRoute
        PULS CC
...


c'est ce code qui réagi comme si une touche était enfoncé et fait sauter le splashscreen...

Auteur:  adnz [ 20 Aoû 2022, 11:45 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

j'ai rajouté le ANDCC pour être sûr que le bit C est à 0 avant le JSR KTST, mais non ça passe quand même comme si j'avais appuyé sur une touche (au premier affichage seulement) !!

Code:
        PSHS CC
        ANDCC #$FE
        JSR KTST
        BCS DisableLoopEndRoute
        PULS CC

Auteur:  adnz [ 20 Aoû 2022, 12:12 ]
Sujet du message:  Re: Projet : 40ème anniversaire PAC-MAN

c'est compliqué cette routine de test KTST, donc Positionne C à 1 si une touche est appuyée.

Mais quand je check le debugger, sur la boucle du splashscreen avec le "press fire" , le bit C bouge de 0/1 tout seul !!! sans que j'appuie sur les touches !

Page 18 sur 19 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/