mardi 30 octobre 2012

Début de conversion de Lock'n Chase sur MSX

Les tutos vont continuer, mais de mon coté je tente d'adapter la librairie Coleco au MSX. Et finalement, ce n'est pas ça le plus problématique.

Je suis parti de mon code source de Lock'n Chase sur Coleco que j'ai recompilé tel quel sur MSX, en ayant pris soin d'adapter les portions de librairies nécessaire bien sur. 2 gros problèmes sont apparus ...

Le modulo (%) qui fonctionne sur Coleco (mais est gourmand en processeur) ne fonctionne pas sur MSX ... Je ne vois vraiment pas pourquoi ... Je n'ai pas analyser la source assembleur, j'ai plutôt remplacer par l'opérateur AND qui est plus rapide et faire la même chose bien utilisé. Exemple :

if ((mavariable%8))==0 {} est remplaçable par if  (mavariable&7))==0 {} hélas, j'avais un modulo 10, que je ne peux pas remplacer comme cela. L'animation devra être plus rapide car j'ai utilsé un &7.

Ensuite, j'ai l'impression que je ne dispose pas de 32 ko de rom mais peut être uniquement de 16 ko ... En effet, si j'ai le titre du jeu en mémoire, le personnage passe à travers la zone du bas du labyrinthe, comme si elle n'était pas chargé, ou accessible en ROM ... Je ne sais pas pour le moment comment régler le problème...

Sinon voici en vidéo ce que ça donne pour le moment.


2 commentaires:

  1. Ce sont les gars de MSX Village qui vont être content ^^

    RépondreSupprimer
  2. Bonjour!

    Only the first page of a cartridge (the block of 16Kb beginning with "AB") will be automatically selected. The rest of the pages must be selected manually.
    If you are using asMSX assembler, there is a .seach macro to do it the easy way. For other assemblers, use this code (it's what the macro is expanded to, according the asMSX manual):
    call 0138h ;RSLREG
    rrca
    rrca
    and 03h
    ; Secondary Slot
    ld c,a
    ld hl,0FCC1h
    add a,l
    ld l,a
    ld a,[hl]
    and 80h
    or c
    ld c,a
    inc l
    inc l
    inc l
    inc l
    ld a,[hl]
    ; Define slot ID
    and 0ch
    or c
    ld h,80h
    ; Enable
    call 0024h ;ENASLT

    Excusez moi pour ne vous écrir tout en français :(

    RépondreSupprimer