ARTICLES
73 / 74 |
Renegade - Cheat mode
L'activation du sang rouge dans Renegade n'est pas une légende, voici les explications concernant la programmation du test clavier :
#02D2
di
ld hl,#0040 Buffer des touches pressées pour les 10 lignes a scannées
Routine scan touche pressée, Si aucune touche pressée A=#FF
ld bc,#f40e
out (c),c
ld b,#f6
in a,(c)
and #30
ld c,a
or #c0
out (c),a
out (c),c
inc b
ld a,#92
out (c),a
push bc
set 6,c
#02F0
ld b,#f6
out (c),c
ld b,#f4
in a,(c)
cpl Inversion de tous les bits de A, donc si aucune touche pressée A=0
ld (hl),a On stocke
inc l Incrémentation du buffer
inc c Ligne suivante
ld a,c
and #0f
cp #0a 10eme ligne atteinte ?
jp nz,#02f0 non, alors on boucle
pop bc
ld a,#82
out (c),a
dec b
out (c),c
ei
ret
#030E
ld a,(#a76f)
push af
call #0396
ld (#a76f),a
#0318
ld c,a C contient la valeur qui nous intéresse, autrement dit #FF pour cheat code OK
pop af
xor c
and c
ld (#a770),a stocke valeur pour traitement de mouvement ou de coup
ret p retour boucle principale du jeu si ESC pas pressé
inc c
jr nz,#032f si C<>0 saute le cheat code et passe en Pause
#0323
ld a,#18
ld (#0e1d),a
xor a
ld (#03db),a
...
#032F Jeu mis en pause
...
#0396
call #02d2
1ere Pass de comparaison des touches pressées avec le cheat code attendu.
Touches clavier
Ligne #08 ; #01 ; #00 ; #00 ; #07 ; #05 ; #08 ; #07
Valeur #04 ; #01 ; #02 ; #04 ; #08 ; #80 ; #20 ; #20
ld h,#00
ld b,#00
ld de,#03bb
call #03a6
2eme Pass de comparaison
Touches clavier + Joystick
Ligne #08 ; #01 ; #00 ; #00 ; #09 ; #09 ; #09 ; #09
Valeur #04 ; #80 ; #40 ; #80 ; #01 ; #02 ; #04 ; #08
ld de,#03cb
#03A6
ld c,#01 Compteur C mis a 1
#03A8
ld a,(de) A contient l'unité de la ligne qu'on veut comparer
add #40 on additionne #40 a A,
ld l,a on se cale avec le buffer précèdent des touches pressées par ligne en #40 a #49
inc de
ld a,(de) A contient la valeur des touches qui doivent être pressées pour cette ligne
inc de
and (hl) On compare A avec ce qui est dans le buffer correspondant à cette ligne
jr z,#03b3 Si différent, Carry a 0 puis on saute
scf Sinon on met la Carry a 1
#03B3
rl c On multiplie C par 2 + la Carry
jr nc,#03a8 Fin de la Pass ? non, on boucle alors !
ld a,c on mets le résultat final dans A
or b OR B, B qui vaut 0 pour la première Pass, donc ça ne change rien
ld b,a B contient le résultat final pour la première Pass
ret
#03BB
db #08,#04,#01,#01,#00,#02,#00,#04
db #07,#08,#05,#80,#08,#20,#07,#20
#03CB
db #08,#04,#01,#80,#00,#40,#00,#80
db #09,#01,#09,#02,#09,#04,#09,#08
A la fin de la deuxième Pass, A contient le résultat de la deuxième Pass, puis le OR B, avec la valeur de B obtenu lors de la première Pass, donnera une valeur totale dans A, qui sera elle-même mis dans C, au retour du CALL en #0318
Matrice Clavier CPC
LIGNES | Colonne / Bit | |||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
0 | Fleche Haut | Fleche Droite | Fleche Bas | Pave Num 9 | Pave Num 6 | Pave Num 3 | Pave Num Enter | Pave Num . |
1 | Fleche Gauche | Copy | Pave Num 7 | Pave Num 8 | Pave Num 5 | Pave Num 1 | Pave Num 2 | Pave Num 0 |
2 | CLR | [ | Enter | ] | Pave Num 4 | SHIFT | CTRL | |
3 | £ | - = | @ | P | + ; | * : | ? / | > |
4 | 0 | 9 | O | I | L | K | M | < |
5 | 8 | 7 | U | Y | H | J | N | ESPACE |
6 | 6 | 5 | R | T | G | F | B | V |
7 | 4 | 3 | E | W | S | D | C | X |
8 | 1 | 2 | ESC | Q | TAB | A | CAPS LOCK | Z |
9 | Joystick Haut | Joystick Bas | Joystick Gauche | Joystick Droite | Joystick Fire | NC | NC | DEL |
LIGNES | Example : ESC + W + A + D + Espace + ← + ↓ + → (bit 0 a gauche vers bit 7 a droite) | Hexa | |||||||
Colonne / Bit | |||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
40 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 06 |
41 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 01 |
45 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 80 |
47 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 28 |
48 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24 |
LIGNES | Example : ESC + Joy ↑ + A + D + Espace + 0 + ↓ + Enter (bit 0 a gauche vers bit 7 a droite) | Hexa | |||||||
Colonne / Bit | |||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
40 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 44 |
41 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 80 |
45 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 80 |
47 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 20 |
48 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24 |
49 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 01 |
Combinaison physiquement possible avec valeur dans Registre B pour 1ere Pass, et A pour 2eme Pass
TOUCHES | Ligne | Registre | |||||||
40 | 41 | 45 | 47 | 48 | 49 | B | A | C | |
ESC+W+A+D+Espace+←+↓+→ | 00000110/06 | 00000001/01 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | FF | 80 | FF |
ESC+W+A+D+Espace+←+↓+Enter | 01000100/44 | 00000001/01 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | DF | A0 | FF |
ESC+W+A+D+Espace+←+.+→ | 10000010/82 | 00000001/01 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | EF | 90 | FF |
ESC+W+A+D+Espace+←+.+Enter | 11000000/C0 | 00000001/01 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | CF | B0 | FF |
ESC+W+A+D+Espace+0+↓+→ | 00000110/06 | 10000000/80 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | BF | C0 | FF |
ESC+W+A+D+Espace+0+↓+Enter | 01000100/44 | 10000000/80 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | 9F | E0 | FF |
ESC+W+A+D+Espace+0+.+→ | 10000010/82 | 10000000/80 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | AF | D0 | FF |
ESC+W+A+D+Espace+0+.+Enter | 11000000/C0 | 10000000/80 | 10000000/80 | 00101000/28 | 00100100/24 | 00000000/00 | 8F | F0 | FF |
ESC+W+A+D+Joy↓+←+↓+→ | 00000110/06 | 00000001/01 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | FB | 84 | FF |
ESC+W+A+D+Joy↓+←+↓+Enter | 01000100/44 | 00000001/01 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | DB | A4 | FF |
ESC+W+A+D+Joy↓+←+.+→ | 10000010/82 | 00000001/01 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | EB | 94 | FF |
ESC+W+A+D+Joy↓+←+.+Enter | 11000000/C0 | 00000001/01 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | CB | B4 | FF |
ESC+W+A+D+Joy↓+0+↓+→ | 00000110/06 | 10000000/80 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | BB | C4 | FF |
ESC+W+A+D+Joy↓+0+↓+Enter | 01000100/44 | 10000000/80 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | 9B | E4 | FF |
ESC+W+A+D+Joy↓+0+.+→ | 10000010/82 | 10000000/80 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | AB | D4 | FF |
ESC+W+A+D+Joy↓+0+.+Enter | 11000000/C0 | 10000000/80 | 00000000/00 | 00101000/28 | 00100100/24 | 00000010/02 | 8B | F4 | FF |
ESC+W+A+Joy→+Espace+←+↓+→ | 00000110/06 | 00000001/01 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | FE | 81 | FF |
ESC+W+A+Joy→+Espace+←+↓+Enter | 01000100/44 | 00000001/01 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | DE | A1 | FF |
ESC+W+A+Joy→+Espace+←+.+→ | 10000010/82 | 00000001/01 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | EE | 91 | FF |
ESC+W+A+Joy→+Espace+←+.+Enter | 11000000/C0 | 00000001/01 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | CE | B1 | FF |
ESC+W+A+Joy→+Espace+0+↓+→ | 00000110/06 | 10000000/80 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | BE | C1 | FF |
ESC+W+A+Joy→+Espace+0+↓+Enter | 01000100/44 | 10000000/80 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | 9E | E1 | FF |
ESC+W+A+Joy→+Espace+0+.+→ | 10000010/82 | 10000000/80 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | AE | D1 | FF |
ESC+W+A+Joy→+Espace+0+.+Enter | 11000000/C0 | 10000000/80 | 10000000/80 | 00001000/08 | 00100100/24 | 00001000/08 | 8E | F1 | FF |
ESC+W+Joy←+D+Espace+←+↓+→ | 00000110/06 | 00000001/01 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | FD | 82 | FF |
ESC+W+Joy←+D+Espace+←+↓+Enter | 01000100/44 | 00000001/01 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | DD | A2 | FF |
ESC+W+Joy←+D+Espace+←+.+→ | 10000010/82 | 00000001/01 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | ED | 92 | FF |
ESC+W+Joy←+D+Espace+←+.+Enter | 11000000/C0 | 00000001/01 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | CD | B2 | FF |
ESC+W+Joy←+D+Espace+0+↓+→ | 00000110/06 | 10000000/80 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | BD | C2 | FF |
ESC+W+Joy←+D+Espace+0+↓+Enter | 01000100/44 | 10000000/80 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | 9D | E2 | FF |
ESC+W+Joy←+D+Espace+0+.+→ | 10000010/82 | 10000000/80 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | AD | D2 | FF |
ESC+W+Joy←+D+Espace+0+.+Enter | 11000000/C0 | 10000000/80 | 10000000/80 | 00101000/28 | 00000100/04 | 00000100/04 | 8D | F2 | FF |
ESC+Joy ↑+A+D+Espace+←+↓+→ | 00000110/06 | 00000001/01 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | F7 | 88 | FF |
ESC+Joy ↑+A+D+Espace+←+↓+Enter | 01000100/44 | 00000001/01 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | D7 | A8 | FF |
ESC+Joy ↑+A+D+Espace+←+.+→ | 10000010/82 | 00000001/01 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | E7 | 98 | FF |
ESC+Joy ↑+A+D+Espace+←+.+Enter | 11000000/C0 | 00000001/01 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | C7 | B8 | FF |
ESC+Joy ↑+A+D+Espace+0+↓+→ | 00000110/06 | 10000000/80 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | B7 | C8 | FF |
ESC+Joy ↑+A+D+Espace+0+↓+Enter | 01000100/44 | 10000000/80 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | 97 | E8 | FF |
ESC+Joy ↑+A+D+Espace+0+.+→ | 10000010/82 | 10000000/80 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | A7 | D8 | FF |
ESC+Joy ↑+A+D+Espace+0+.+Enter | 11000000/C0 | 10000000/80 | 10000000/80 | 00100000/20 | 00100100/24 | 00000001/01 | 87 | F8 | FF |
Article rédigé par Stéphane BEGUE
Article créé le : | Samedi 21 Avril 2018 à 16 h 23 |
Dernière mise à jour le : | Samedi 21 Avril 2018 à 18 h 01 |