[VG5000] Lode Runner

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Répondre
Avatar du membre
Carl
Modérateur
Messages : 11133
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Lode Runner

Message par Carl » 08 mai 2020 21:30

IMG_5364.JPG
IMG_5364.JPG (961.65 Kio) Vu 264 fois

Avatar du membre
Xavier_
Messages : 157
Enregistré le : 24 avr. 2020 21:20

Re: [VG5000] Lode Runner

Message par Xavier_ » 08 mai 2020 21:42

Merci Carl pour tout ce travail.

joaopa, le rouge sur le dernier caractère de LODERUNNE'R', et un problème de recouvrement de caractères.

En effet, tu as 4 caractères (briques) à gauche et 3 caractères à droite.
Donc, tes coordonnées en X (colonnes) tapent sur le lettrage.
Img_5351.jpg
Img_5351.jpg (38.51 Kio) Vu 256 fois
Sinon, c'est impeccable sur le vrai !

joaopa
Messages : 500
Enregistré le : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa » 08 mai 2020 22:03

The very last try ....
runtap.zip
(2.53 Kio) Téléchargé 6 fois
@Xavier Que veux-tu dire par <<Sinon, c'est impeccable sur le vrai !>>?

PS/ Merci Carl pour ton aide précieuse

Avatar du membre
Xavier_
Messages : 157
Enregistré le : 24 avr. 2020 21:20

Re: [VG5000] Lode Runner

Message par Xavier_ » 08 mai 2020 22:12

@Xavier Que veux-tu dire par <<Sinon, c'est impeccable sur le vrai !>>?
Simplement que ton acharnement a payé, et cela semble être le dernier problème, la dernière ligne droite pour la maîtrise de ce VDP lent, anarchique et capricieux.
Bravo.

Tu en es à combien de NOP d'attente ? (ça va dépendre de la commande envoyée?)

joaopa
Messages : 500
Enregistré le : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa » 08 mai 2020 22:23

J'ai rajouté des test_BUSY juste avant le remplissage d'une série de registres ponctué par une exécution. Dans l'ancien code qui foire totalement, j'essayais de profiter du temps d'exécution de l'EF9345 pour remplir les registres.

Avatar du membre
Carl
Modérateur
Messages : 11133
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Lode Runner

Message par Carl » 08 mai 2020 22:38

IMG_5367.JPG
IMG_5367.JPG (997.84 Kio) Vu 238 fois
Carl

Avatar du membre
Papy.G
Modérateur
Messages : 2240
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [VG5000] Lode Runner

Message par Papy.G » 08 mai 2020 22:39

Selon la doc, on peut bourrer les registres sans test au moins pendant le vblank, en respectant le timing d'exécution, si la broche n'est pas câblée dans la machine, cette information est disponible dans le registre d'état (bit2). Dès lors qu'on a le signal, on sait qu'on a un certain temps avant le prochain scan, et de façon régulière précise et prévisible à partir de là si l'horloge est commune au CPU et au VDP. Pendant les scans, l'exécution des commandes serait suspendue, et donc les timings sont difficilement prévisibles, il faut absolument tester le bit busy après chaque exécution.

Contrairement à un périphérique série, les registres ne sont pas tamponnés sur le 9345, il n'est pas indiqué dans la doc que l'on peut les modifier pendant l'exécution d'une commande (peut-être même que c'est indiqué de ne pas le faire, mais je ne m'en souviens plus).
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

joaopa
Messages : 500
Enregistré le : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa » 09 mai 2020 00:03

The next one:
runtap.zip
(2.53 Kio) Téléchargé 4 fois

Bon en fait, il y a un truc que je ne comprends pas dans le code BASIC du jeu:

Code : Tout sélectionner

142 ET 1,3:D$=CHR$(101)+CHR$(101)+CHR$(101)+CHR$(101)
143 CURSORX 5:CURSORY 1:PRINT D$:CURSORX 30:CURSORY 1:PRINT D$
144 CURSORX 5:CURSORY 2:PRINT D$:CURSORX 30:CURSORY 2:PRINT D$
Alors que si l'on compte sur l'image, on voit qu'il y a une largeur de 5 decors au hasard (coordonnées X=35,36,37,38,39), le bord du cadre est X=34. Comme il y a 2 briques en double largeur, pour que la dernière brique soit alignée avec la fin du bord du tableau, le debut des briques devrait commencer à X=31. On peut vérifier autrement: lode runner est en double largeur à partir de cursorx=9. Comme cette chaîne de caractères est de longueur 11, le premier caractère brique doit être à CURSORX=31.
Pourtant dans le code, on se place à CURSORX=30. Et CA MARCHE. Comprends pas.
Quelqu'un peut-il éclairer ma lanterne?


PS/ Petite amélioration du BASIC tant qu'on y est. Les CURSORY en fin des deux lignes sont inutiles. On peut les supprimer.
Modifié en dernier par joaopa le 09 mai 2020 01:18, modifié 5 fois.

Avatar du membre
Carl
Modérateur
Messages : 11133
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Lode Runner

Message par Carl » 09 mai 2020 00:32

une partie du R est noire...
Img_5369.jpg
Img_5369.jpg (443.4 Kio) Vu 221 fois

joaopa
Messages : 500
Enregistré le : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa » 09 mai 2020 00:54

Une dernière pour la route
runtap.zip
(9.93 Kio) Téléchargé 14 fois

hlide
Messages : 1610
Enregistré le : 29 nov. 2017 10:23

Re: [VG5000] Lode Runner

Message par hlide » 09 mai 2020 06:27

On se croirait au comptoir d'un bistro : allez une dernière... ^^

Avatar du membre
Xavier_
Messages : 157
Enregistré le : 24 avr. 2020 21:20

Re: [VG5000] Lode Runner

Message par Xavier_ » 09 mai 2020 07:05

:lol:
Je reste pour sucer les bouchons des bouteilles vides…

Que de suspens !

Guillaume
Messages : 46
Enregistré le : 26 avr. 2020 15:24
Localisation : Nice

Re: [VG5000] Lode Runner

Message par Guillaume » 09 mai 2020 12:32

Il y a de l'animation sur le fil de discussion le week-end!!
C'est une source de plaisir de vous voir vous activer pour faire marcher ce jeu de manière satisfaisante.
Et j'ai l'impression que ca va fonctionner très vite au vu des derniers développements.

Joaopa: Je suis sur le mode chasing, peu de modification à faire. Je t'envoie cela au plus vite.
Les tableaux 11 à 30 sont prets! Je poste.

Guillaume
Messages : 46
Enregistré le : 26 avr. 2020 15:24
Localisation : Nice

Re: [VG5000] Lode Runner

Message par Guillaume » 09 mai 2020 12:42

Code : Tout sélectionner

10 REM4|+&}/|+EoE%|+)oi|&}&)s@rEo@)s@yq'~#s@v}~#q@oC&FoE$o3v$z~'vGoHv+yv)}#oir}%&oD+Eo&x$}+oZ%}9oo\?\z}*otsoGp}%op}#~#sxoB{oo?[?
11 REM[?sxt|tocoe$~t|tstoA_[otsq}$xor~#p}$oCxo[A[@[@[xoAo@[A[(xrq[}$[(rerp}FoA^'qB*o.u*r*uZ=|i&}.|p}(oHu|Cryo_\'p~#t}&v'oDoCo@)$
12 REM}$utqa'Bo?(q~$sa%&soDo@(a}&ocuq~)?&voGt&voGtAoH%}%Co?AoH#oApCo?%u&oAr}$pZ|=|j2tt?#}#?'tp}$ooq}#C#}$ooq}#poqqovoqqopppoooop
13 REMvpoooopppq}~}$rrq}~}$pqoCrooroCqroooopoqqopoooorxpoooopxs}&q}~}$t}%oDroCqoEusoooorvuo.vuv}$#vZ+|4+|)}(~%A(|(BoE$@'|'@%v%@&
14 REM|&@&v}~#A%|$}A&r}%@oB$|$BoAoE$r@#|#@%z$o}~$@o@&t}'oAst?o@oA'ro0wrs}'~%wroEoDoCo@zo.qzq+qZP|G?#}1|?#~#}%??{AoBr}%|Eo??{AoL#
15 REMA$o??&q}#~'B#A$o??oGoF#A$o??rDoC}}?#A}#o??rDoLo??r?&}s}$~%}#?o??rAoEoEo?o??q}AvoEo?o??o@{?$s$q@%o?o??o@{?oCoF}}#o?o??o@{?o
16 REMCoD}Do??o~%o@}@s}$~'o?Z$|;$|3g$|,~(uoCo?&?oA%~s}#o'usAoE$~$r}$vvCoB$vv'uvv$}$r}$vv@oJspB#o$o.p}$pB#o$q}+ocp?#}?#oEo.pCo)o.u
17 REMo)p*}#q~%oZ-|&|--|&|-%}#~%o?|&|?r~#}%oCoao?|&|?oaoCoo?%?r?|&|?%o?%?oo?%?r?|&|?%o?%?oo?#}#?r?|&|?%o?#}#?ooCr?|&|?%oCoo?%?r?
18 REM|&|?%o?%?oo?%?ob?oBo?bo?%?oo?%?%o?so?r?%?oo?~}#?%o?q}~o?r?#}~?oo@{@%o?_[?r@{@ot{$wq{'ou{~s%p{(oZ|=|nko?#~%?/?'?pC1C#p?#A1?
19 REM}A#pC#~&~(~#C#pA#?{O#?#pC{A#}@#}Fo?#pC{Oo?#pC{Oo?#pC{B&Go?#pC{B&Go?#pC{B%}oFo?#zBogqy^/u$^(~),}0|$*oE$}(|$&}%uD&|$Hx}&|$,o
20 REMD|Co@$~+u|'sHu|#~%r}HoE\%oBHo.sHv}#bs@(@v@%s@$}}$@t}(sIoErs-vFo&}&#o1oZ)o6#~}&o3}~#o@~}$o1}~@oq@$oB|oCr@$ozoo}&voz}osvozoo
21 REM}.oz}oo.ozoo}.oz}oo.ozoo}.oz}oo.ozoo}.oz}oo.ov%oo}.osoNso(}'}-roOtro/}%odq}GoG'oAFoo0rEoofvr?}#}@ou~#q}$~#q}CotoB]BoA'uzr'
22 REMuzr&~r}$ojq}oIq}'}$oAzpG#rzzru}&s#}&rZ.~,~&{o{o{o{o{o{o{o{o{o{o{o{o{o{|{o{o{o{o{o{o{o{o{o{o{o{o{o{|}o?po?o}o?po?o}o?po?o}o
23 REM?|{o?o{o?o{o?o{o?o{o?o{o?o{o?|{o?o{o?o{o?o{o?o{o?o{o?o{o?|{o?o{o?o{o?o{o?o{o?o{o?o{o?|#o?o}o?po?o}o?po?o}o?po?|{o?o{o?o{o?o
24 REM{o?o{o?o{o?o{o?|{o?o{o?o{o?o{o?o{o?o{o?o{o?|}ppppppppppppp|oX|x}#~#}%}#~(|o_____[|o})2}|Z$r~&`%~`so`%}#`r`o`%`$`#o`%p`$o`#
25 REMq`#p`&`$p`$q`#o}#p`$q`$`%q`}r`o$o`$`ra&o}$`soo`%`#o`$a$`#oe#`$p`%`q`}#`%q`%p`#o`#`%o}aq`$t`q`p`#`$oa#r`#s`#q`o`#}#`~o`$p`$`
26 REMo`$`$q`p`q`&r`%`&q`o`#r`%q`#`%`%q`p`p`$`$o}`%`%`$p}`o`#r`#`#o`#`$}`%`#p`#p`q`%`t`#`#`#`o`$%t}'})r|<||'}#~$}'}$~#}&|||||Fro
27 REMF|||.rz)oKu}$~$}t}#}'o}#~$}Ep}#}C}#}#oD)pB%B#u&}$u}(p}&$oTq$z,q$p}&}oEo}%}#qHvoG,vx$})vu}$?[?[?[?[?[?[?[?[?[?[?[?[?[?[;|$6
28 REM'|#%{BooDoooou|+r?$x|#&}'po?$w|$&?}'oo?$v|%%A}'o?$u|&$C}&o?$t|'F&o?$u|&#}C'o?$v|%%A(o?$w|$&?)o?$x|#)~&o?$r~(|#oL{G#|#M+o?|
29 REMN%}}}}}}o@|<||<||+~2|oA{TooA{Tor}%@g@)ov}?s~#}@&~$oqA$@pF$Coq?}?$@v@$@}@or%@v@$CoqA$Foo@$@}@oqA$Foo@$CoqA$@(p@)oqA$@'}p@&}
30 REM$oHoGoEE$}oD#}#oE%|:%|(}+}(}o{?soAtoAo?$?oqD%oCrq}#oo}#~*trB#oo{B+Ao?)op[B)@*o?#op[C'@)o?qop[I&}%r@p[I%A$tp[&A#A*r~}p[$}#@#
31 REM}#@'~$r@p[oIoDr@qzur@qv,r@oY.o@o.,~}o@o}~,,oDy+}oDo}+*oHw(~}oHo}~((oLu'}r}}}}}}}}%o}'&oPs%}oPo}%$oTq$oTq$o8q$o8q$y-qZ/~}/
32 REM-Fr~#}$)~#}+o?oCo'}CvptoA{A&ofpo}&o-vpE#}+vwAoEvog}$r~%s}$v}G$FsB)}%})wCoA{Aq}$r}&'vLo'o7o'p}%(}*oZ_____[|?onfo|||?qt@$~%}
33 REM'o|}#?qpSo?qpA.}'o?qr?#Qqqo?%}$?#}#?#}#?#}$?qqo@oPqoaqoC#C(?qqqs?#}?'~%?qqqoapBoaEqqqqtqEqqqqoaqqEqqqqqp?oA#}}}#?qo#qp~qqo
34 REMAoCPp}}oC)}&}1}}Nx@,}$}$x+oFq}%}$+woF#&}#~}#o4%oDoe'}'%uuoGo#}#uuxoAs~#q~#}#v}#o(oAoDsoC(og&}$t&}#o})oDr}#EvuoC)vo.)q}$#u}
35 REM'%_^-|&$[+[,|#\##[%}}#~&?w|#\#\@oF\s~$|}\#[AoIo@]?o^[@ooo?f?ooo?cobo[@po?$}&?po?#}&}#o[@po?$&?po?*o[@o}oBoBo}o?[([o[GoNo[(
36 REM@ooo@$}&}%}#o[e?opoomo[#}&?ro.~#o[)rqI#o^&rpA#}@$}#@o[D[o}#}qK2|-1||-0||./||/.||0.|1,o@o0,o@o}/)oEq~+#?q~#o?#}#}#?p?o?v$AoJ
37 REMoAt%@#}$B#}%o}$@r&Bq}#Apo@p?r'?}?oAp}#po}?o}?r$~%Pp#_____]&['['[+|[&['['[%}'|[&[{B['[B$A|[A+Ao~$}'}|[IroF#?o[)%p@o?%}&?o[
38 REM?oGp}?o?#Cp?o[?g@p@o?#?&p?o[?$?$?#}@rop?#Ap?o[?$?$?$?ooBo@}Ap?o[?$?#}?$?o?(?#Aqo[?$B$?o?#B#?&o?oo[?o@$@ooo?#?}@#Ep[?r\?oo@%
39 REM?$@}&o?[?r[%o@{B{Eo?[?oA&t~+p[<|#'~6|#oHq~$}'}$|#yoCrAoAp}(}#s[urp?$A#?#p}}#[s~#rp?#A$?#p\#[G\p?$A#?#p\-[}p?#A$?#p[f$}$[op?
40 REM}#A#?#p[}(Bo[opC$?#p\,popF#p\&}'o@yp\#D%qo_]?_,qo/,qZ|<||(.~(||%[?o?[i[?o?[%||%[}p[#}(}#[#p[%||#[@#p@[([@#o}@[#|||[}$q}[#
41 REM}%}[#}#p?}[||[|A#r@[$[Cp?#?|[['t[#}[}&p?$}[['oC[o?[@$}p@#?[[#}#~#r~$t@t[[oBr[@oA[%r?o[#o[#}#r?$p}#?%q~[p#o[@#pA$rA#p@[p#p}[
42 REM#p[&s}[#p[}#p#rA'uA%pZ/|0j$|0$}&}#[q|#}.G_\q}o[t?[?[?[?_%_\t,\$}([p~}$gp\Cr\Bo*p\'o~&Bo*p\#FpBo#}&}#p\#?(?pBoA~$?#p\#?%}$?p
43 REM@}?oE#p\#Fp@#?o*s?$}%?s?oL#o@pEo,&p}woZ$~#a#`/~(B$r`+@tB$p@#`%~%`@t?}}?$p@`#E$`tB$tE#poA$(ob$E#q?}?$&`'pE#qA$'B#p@}}}@#v%`
44 REM#B#pE#vA`#?}}?#o`'`#`v?}?$B#p`%`#qB%A)r%qB%,qA$q?}}?%%@'q?}?$qB%%@'q?{?$x,vx[<|['}}}}~#~#~('|[H{Mo=o&[#}$})}(}[#o&[E{E{B[
45 REM#o=o([$}&}'}$[%o([A{D{C[%o=o)[$}'}&}[&o(\L[&o=o=o}}}}%~,}'o[#oH_[E]#o!
Tableaux de 1 à 30 (4591 octets)

Avatar du membre
Papy.G
Modérateur
Messages : 2240
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [VG5000] Lode Runner

Message par Papy.G » 09 mai 2020 13:06

joaopa a écrit :
09 mai 2020 00:03
Alors que si l'on compte sur l'image, on voit qu'il y a une largeur de 5 decors au hasard (coordonnées X=35,36,37,38,39), le bord du cadre est X=34. Comme il y a 2 briques en double largeur, pour que la dernière brique soit alignée avec la fin du bord du tableau, le debut des briques devrait commencer à X=31. On peut vérifier autrement: lode runner est en double largeur à partir de cursorx=9. Comme cette chaîne de caractères est de longueur 11, le premier caractère brique doit être à CURSORX=31.
Pourtant dans le code, on se place à CURSORX=30. Et CA MARCHE. Comprends pas.
Quelqu'un peut-il éclairer ma lanterne?
J'avais fait des essais sur Minitel, les caractères doublés en largeur n'ont pas besoin de commencer en colonne paire, et on peut n'en utiliser que la moitié, notamment en bord d'écran pour les "briques". On peut même utiliser une moitié gauche d'une lettre et la moitié droite d'une autre, il me semble (jai pas souvenir d'avoir testé ça, cela dit).
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

Répondre