MSX Village forum

La Place des Développeurs Final Smash Cette fois c'est le bon !?

Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10444

Le 22/07/2021 à 11h44

Reprise du message précédent

J'ai testé différents trucs avec OpenMSX la config NMS8245

ODO démarre bien Final Smash si il y a une extension Mémoire 64k insérée dans un slot

j'ai testé en réel avec un 8280 + une extension 64k Elektor et ça fonctionne


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2750

Le 24/07/2021 à 12h13
Metalion :
Lorqu'on initialise une ROM, il faut rechercher la 2e page de la ROM (8000h-BFFFh) dans tous les slots.
Cette recherche utilise le BIOS.
Tu as fait comment ?


Pour ma cartouche de 48K visible par le CPU de 0000h à BFFFh (page 0 à 2) et ayant son entête en 4000h (page 1), mon code de démarrage récupère le slot de la page 1 et l'applique aux pages 0 et 2, puis fait de même avec les informations de slots étendus.
Voici mon code :

Code ASM :
    ; Set all pages slot equal to Page 1 slot
    in        a, (PPI_A)                ; Get primary slots info [P3|P2|P1|P0]
    ld        b, a                    ; Backup full slots info
    and        a, #0b00001100            ; Mask all pages slots but P1 [00|00|P1|00]
    ld        c, a                    ; Backup P1
    rrca                            ; P1>>1
    rrca                            ; P1>>1
    or        a, c                    ; Merge [00|00|P1|P1>>2]
    ld        c, a                    ; Backup [00|00|P1|P0]
    add        a, a                    ; P1<<1
    add        a, a                    ; P1<<1
    add        a, a                    ; P1<<1
    add        a, a                    ; P1<<1
    or        a, c                    ; Merge [P1<<4|P1<<2|P1|P0]
    out        (PPI_A), a                ; Set primary slots info
    ld        d, a                    ; Backup new slots
    ; Set all pages subslot equal to Page 1 subslot
    ld        a, (SLTSL)                ; Read secondary slots register of selected primary slot
    cpl                                ; Reverses the bits
    and        a, #0b00001100            ; Mask all pages slots but P1 [00|00|P1|00]
    ld        c, a                    ; Backup P1
    rrca                            ; P1>>1
    rrca                            ; P1>>1
    or        a, c                    ; Merge [00|00|P1|P1>>2]
    ld        c, a                    ; Backup [00|00|P1|P0]
    add        a, a                    ; P1<<1
    add        a, a                    ; P1<<1
    or        a, c                    ; Merge [00|P1<<2|P1|P0]
 
    ld        (SLTSL), a                ; 
    ; Restore initial Page 3 slot
    ld        a, b                    ; Restore initiale slots
    and        a, #0b11000000            ; 
    ld        b, a                    ;
    ld        a, d                    ; 
    and        a, #0b00111111            ; 
    or        a, b
    out        (PPI_A), a
 


Je change le slot de la page 3 ou se trouve la pile (stack) pendant une partie du code mais vu que les interruptions sont désactivés, que je n'utilise aucun push/pop ni call, ça ne devrait pas poser de soucis.


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10444

Le 19/08/2021 à 13h06
@aoineko: alors envoi au MSXdev ou pas ??


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2750

Le 19/08/2021 à 19h53
Je relance juste le jeu après mes congés ; je vais voir ce qu'il resterait à faire pour une version "light" pour la MSXdev, mais j'ai peu de temps et donc pas beaucoup d'espoir. :)


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2750

Le 16/09/2021 à 12h16
J'ai pas pu finir une version à temps pour la MSXdev'21 mais voici la dernière version (non-finie) : Final Smash 0.2.18.
Pour cette version Light (sans IA), il manque principalement les règles spécifiques au service.
Et il n'y a pas de musique non plus (j'ai retiré celle dont je n'avais pas les droit), mais bon, ça n'empêche pas de s'amuser. ^^

Je pense que pour la suite il va falloir me résoudre à entrer dans le monde merveilleux des "mapper".
D'après ce que je comprends, il va falloir que je développe des outils pour positionner les datas aux bons endroits ; ce qui n'est pas simple en langage C.


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 22/09/2021 à 18h04
Salut Guillaume

Je pense que si tu fais une version MSX2, tu vas casser la baraque :)
Final Smash est déjà génial aujourd'hui. La physique de la balle est tiptop, les graphs de Ludo tiptop, le jeu tiptop :top

Tchao et bonne soirée ;)
Edité par Ricco59 Le 24/09/2021 à 17h35


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2750

Le 30/12/2021 à 19h43
Je découvre plein de perles aujourd'hui.
Je suis tombé sur un catalogue de jeux MSX de 1989.
Il contient un jeu de tennis pour MSX2 nommé Center Court (page 51).
Il avait l'air super chouette, mais il n'est jamais sorti apparemment. :moue


On est toujours ignorant avant de savoir.
Github    
KN2000 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 30/12/2021 à 21h19
Tant mieux, de toute façon, il n'est pas à la hauteur de Final Smash :p

Je me suis tapé tout le sujet, il y a du niveau, là dedans :|


Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
   
Cylicano Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 24/10/2021 à 11h19

Messages: 537

Le 30/12/2021 à 21h35

aoineko :

J'ai pas pu finir une version à temps pour la MSXdev'21 mais voici la dernière version (non-finie) : Final Smash 0.2.18.
Pour cette version Light (sans IA), il manque principalement les règles spécifiques au service.

Effectivement; c'est du très bon boulot !



Rien ne se perd, tout doit se transformer.

E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2750

Le 31/12/2021 à 00h23
Pour la suite, j'ai besoin de plus de place pour être tranquille et j'hésite un peu :

- Soit je pars sur une ROM 128K avec un mapper ASCII-8/Konami, mais je perds l'accès continue au 16K de la page 0 et à la possibilité d'utiliser mon propre gestionnaire d'interruption (optimisé pour le jeu) ; ce qui m'obligerait à pas mal jongler entre les segments du Mapper (surtout que je stream pas mal de donnée chaque frame de la ROM vers la VRAM).

- Soit je pars sur une cartouche 64K avec des données dans la page 3 à envoyer directement en VRAM (comme ça je peux switch la page 3 avec un code qui ne touche pas à la pile et n'a pas besoin de RAM).

La 2e solution est celle qui demande le moins de modifications dans mon code, mais j'ai peur que les ROM 64K soient mal supportées par les émulateurs et les FlashROM (déjà que j'ai eu des soucis avec les 48K).
Le mapper ASCII-8 nécessiterait de revoir l'organisation de mes données, mais il m'assure une solution viable si j'ai besoin de plus de 64K (j'ai tendance à vite remplir la place que je libère ^^).

Pour trancher, je vais continuer de creuser les formats de ROM les mieux supportés.


On est toujours ignorant avant de savoir.
Github    
KN2000 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 31/12/2021 à 17h13
Pour t'aider à choisir, tu devrais regarder la place qu'occupent des jeux avec la même exigence que toi, au niveau graphisme, son, nuances de jeu, niveau de l'IA... même si leur genre n'est pas le même.
J'ai l'impression qu'avec tout ce que tu veux implanter, tu vas t'approcher des 128 ko...

Pourquoi la configuration suivante ne te conviendrait pas ?
Page 0 RAM - Page 1 CART - Page 2 CART - Page 3 RAM.

Tu peux copier une partie de ton code de la Cartouche vers la RAM.
Tu peux aussi insérer une partie importante de ton code (ou de tes données) sur plusieurs pages de ta cartouche pour éviter de jongler trop souvent avec tes pages... Mais avec des pages de 8ko, ça ne doit pas être vraiment nécessaire.


Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2750

Le 31/12/2021 à 17h50
Oui, j'avais pensé utiliser la page #0 avec de la RAM pour y mettre mon gestionnaire d'interruption et des données, mais pour ce jeu j'aimerai rester compatible avec tous les MSX... même ceux avec moins de 64K de RAM (donc pas de RAM en page #0).
Actuellement, j'ai même poussé le truc à utiliser moins de 8K de RAM (E000h~FFFFh) pour être compatible avec les quelques modèles qui n'ont même pas 16K.

Par contre, pour un future jeu MSX2, c'est une option très intéressante. :top


On est toujours ignorant avant de savoir.
Github    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie