
J'avais dit que le pachinko controller serait le prochain hard sur lequel je me pencherai. Mais cet après-midi, en glandant devant la TV, j'ai réussi à extraire la routine de lecture du pad analogique d'Operation Wolf et After Burner II. En forçant les valeurs du pad dans mednafen je suis arrivé à ça:
Pour rappel, et si je ne raconte pas trop de conneries, 2 pad analogiques peuvent être utilisés sur PC Engine, le MicomSoft XE-1AP et le monstrueux Cyber-Stick. Seuls 4 jeux (tous de NEC Avenue) supportent ces pads:
- Afterburner II
- Forgotten Worlds
- Operation Wolf
- Outrun
Le pseudo code de la routine de détection/lecture du pad analogique est:
Code : Tout sélectionner
byte tab[] = {
0x00, 0x01, 0x08, 0x09, 0x02, 0x03, 0x0a, 0x0b,
0x04, 0x05, 0x0c, 0x0d, 0x06, 0x07, 0x0e, 0x0f
}
X = 0
joyport = 0
delay
for (count=0; count<5; count++)
{ joyport = 2
delay
for(Y=0; Y<256; Y++)
{ A = joyport
if( (A & 3) == 0 )
break;
}
if( Y == 256 )
NOT FOUND
joyport = 3
delay
A = joyport
Y = A & 0x0F
out[X++] = tab[Y]
joyport = 2
delay
for(Y=0; Y<256; Y++)
{ A = joyport
if( (A & 3) == 1)
break;
}
if( Y == 256)
NOT FOUND
joyport = 3
delay
A = joyport
Y = A & 0x0F
out[X++] = tab[Y]
}Dans tous les cas, on a dans Operation Wolf:
Code : Tout sélectionner
v30 = (out[0] << 4) | out[1]
Y = (out[2] << 4) | out[6]
v31 = unknown_array[Y]
Y = (out[3] << 4) | out[7]
v32 = another_unknown_array[Y]
v33 = (out[4] << 4) | out[8]
v34 = (out[5] << 4) | out[9]