[VG5000] Lode Runner

Cette catégorie traite de développements récents destinés à 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

Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Lode Runner

Message par Carl »

IMG_5364.JPG
IMG_5364.JPG (961.65 Kio) Consulté 3864 fois
Xavier_

Re: [VG5000] Lode Runner

Message par Xavier_ »

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) Consulté 3856 fois
Sinon, c'est impeccable sur le vrai !
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa »

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

PS/ Merci Carl pour ton aide précieuse
Xavier_

Re: [VG5000] Lode Runner

Message par Xavier_ »

@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 : 512
Inscription : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa »

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 de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Lode Runner

Message par Carl »

IMG_5367.JPG
IMG_5367.JPG (997.84 Kio) Consulté 3838 fois
Carl
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [VG5000] Lode Runner

Message par Papy.G »

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 : 512
Inscription : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa »

The next one:
runtap.zip
(2.53 Kio) Téléchargé 102 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.
Dernière modification par joaopa le 09 mai 2020 01:18, modifié 5 fois.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Lode Runner

Message par Carl »

une partie du R est noire...
Img_5369.jpg
Img_5369.jpg (443.4 Kio) Consulté 3821 fois
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: [VG5000] Lode Runner

Message par joaopa »

Une dernière pour la route
runtap.zip
(9.93 Kio) Téléchargé 147 fois
Avatar de l’utilisateur
hlide
Messages : 3497
Inscription : 29 nov. 2017 10:23

Re: [VG5000] Lode Runner

Message par hlide »

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

Re: [VG5000] Lode Runner

Message par Xavier_ »

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

Que de suspens !
Guillaume
Messages : 46
Inscription : 26 avr. 2020 15:24
Localisation : Nice

Re: [VG5000] Lode Runner

Message par Guillaume »

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
Inscription : 26 avr. 2020 15:24
Localisation : Nice

Re: [VG5000] Lode Runner

Message par Guillaume »

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 de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [VG5000] Lode Runner

Message par Papy.G »

joaopa a écrit : 09 mai 2020 00:03Alors 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