- IMG_5364.JPG (961.65 Kio) Consulté 3819 fois
[VG5000] Lode Runner
Modérateurs : Papy.G, fneck, Carl
- Carl
- Modérateur
- Messages : 13253
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Lode Runner
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.
Sinon, c'est impeccable sur le vrai !
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.
Sinon, c'est impeccable sur le vrai !
Re: [VG5000] Lode Runner
The very last try ....
PS/ Merci Carl pour ton aide précieuse
@Xavier Que veux-tu dire par <<Sinon, c'est impeccable sur le vrai !>>?PS/ Merci Carl pour ton aide précieuse
Re: [VG5000] Lode Runner
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.@Xavier Que veux-tu dire par <<Sinon, c'est impeccable sur le vrai !>>?
Bravo.
Tu en es à combien de NOP d'attente ? (ça va dépendre de la commande envoyée?)
Re: [VG5000] Lode Runner
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.
- Carl
- Modérateur
- Messages : 13253
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
- Papy.G
- Modérateur
- Messages : 3047
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: [VG5000] Lode Runner
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).
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.
Demandez-en plus, ou faites-le vous-même.
Re: [VG5000] Lode Runner
The next one:
Bon en fait, il y a un truc que je ne comprends pas dans le code BASIC du jeu:
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.
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$
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.
- Carl
- Modérateur
- Messages : 13253
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Lode Runner
une partie du R est noire...
Re: [VG5000] Lode Runner
Une dernière pour la route
Re: [VG5000] Lode Runner
On se croirait au comptoir d'un bistro : allez une dernière... ^^
Re: [VG5000] Lode Runner
Je reste pour sucer les bouchons des bouteilles vides…
Que de suspens !
Re: [VG5000] Lode Runner
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.
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.
Re: [VG5000] Lode Runner
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!
- Papy.G
- Modérateur
- Messages : 3047
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: [VG5000] Lode Runner
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).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?
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.