Outro adaptador de Wii Nunchuck para MSX, só que desta vez utilizando um diminuto 68HC908QB8. O funcionamento é idêntico ao das versões anteriores, com a manete analógica simulando as quatro direções básicas em conjunto com os acelerômetros nos eixos X e Y. Os botões 1 e 2 do MSX são mapeados nos botões C e Z do nunchuck.
A foto abaixo mostra o adaptador conectado ao HotBit.
E eis aqui um close da plaquinha. O encapsulamento do CI é um TSSOP de 16 pinos com espaçamento entre os terminais de apenas 0,65mm.
Mostrando postagens com marcador Nunchuck. Mostrar todas as postagens
Mostrando postagens com marcador Nunchuck. Mostrar todas as postagens
quarta-feira, 25 de abril de 2012
terça-feira, 21 de fevereiro de 2012
MSX + Arduino
A plataforma Arduino tem suas qualidades e seus defeitos, mas sem entrar nesse mérito, uma coisa é inegável: A plataforma que 'pegou'. É fácil de encontrar para comprar, e qualquer um pode programar facilmente plataforma, usando seu computador, seja ele um PC ou Mac, sem a necessidade de hardware de programação especial.
Sendo assim, eu resolvi refazer o adaptador de Nunchuck para MSX mas desta vez usando um Arduino como plataforma.
terça-feira, 31 de janeiro de 2012
Road Fighter para Nunchuck
Apesar de ter começado primeiro a adaptação de Road Fighter para Nunchuck eu acabei mudando um pouco o foco para o Ping Pong porque esse último exigiu uma rotina mais genérica, capaz de tratar de até dois Nunchucks simultaneamente.
Dessa forma é possível adaptar o mesmo bloco em binário que lê os nunchucks para a maioria dos jogos da Konami, bastando para isso alterar o ponto de entrada do loop infinito do jogo e o ponto de entrada da rotina que lê os joysticks.
A única modificação necesária no 'driver' J2C foi mudar o endereço de memória dos buffers, pois o Ping Pong ocupa (com variáveis) os endereços entre (E000-E3FF) enquanto o Road Fighter utiliza entre (E000-E7FF).
Segue abaixo o código do carregador em Basic + patch. Assim que possível vou experimentar na máquina real.
Segue o código do bloco em código de máquina
NROAD.BIN
Dessa forma é possível adaptar o mesmo bloco em binário que lê os nunchucks para a maioria dos jogos da Konami, bastando para isso alterar o ponto de entrada do loop infinito do jogo e o ponto de entrada da rotina que lê os joysticks.
A única modificação necesária no 'driver' J2C foi mudar o endereço de memória dos buffers, pois o Ping Pong ocupa (com variáveis) os endereços entre (E000-E3FF) enquanto o Road Fighter utiliza entre (E000-E7FF).
Segue abaixo o código do carregador em Basic + patch. Assim que possível vou experimentar na máquina real.
10 SCREEN 0:COLOR15,1,1:CLS
20 LOCATE 6,3
30 PRINT "ROAD FIGHTER PARA NUNCHUCK"
40 LOCATE12,5
50 PRINT "DANJOVIC 2012"
60 LOCATE 6,7
70 PRINT "HTTP://HOTBIT.BLOGSPOT.COM"
80 BLOAD"ROADFIGH.BIN"
90 FOR I=1 TO 2500:NEXT I
100 '
110 REM Enderecos base
120 BLOD=&H8800 ' carreg jogo
130 INIT=&HD000 ' init nunchucks
140 REQU=&HD022 ' request dados
150 '
160 'gancho loop infinito
170 POKE BLOD+&H7C,&HC3
180 POKE BLOD+&H7D,INIT AND 255
190 POKE BLOD+&H7E,INIT \ 255 AND 255
200 '
210 'gancho leitura joystick
220 POKE BLOD+&H6C5,&HCD
230 POKE BLOD+&H6C6,REQU AND 255
240 POKE BLOD+&H6C7,REQU \ 255 AND 255
250 POKE BLOD+&H6C8,&H18
260 POKE BLOD+&H6C9,&H8
270 '
280 'rotinas leitura nunchuck
290 BLOAD "NROAD.BIN"
300 '
310 'inicializa jogo
320 DEFUSR=&HC800:A=USR(0)
Segue o código do bloco em código de máquina
NROAD.BIN
D000 AF 32 06 E8 CD 9D D0 38 :41
D008 08 3A 06 E8 CB CF 32 06 :02
D010 E8 37 CD 9D D0 38 08 3A :D3
D018 06 E8 CB D7 32 06 E8 FB :AB
D020 18 FE CB 73 20 0A 3A 06 :BE
D028 E8 CB 4F 28 13 A7 18 08 :04
D030 3A 06 E8 CB 57 28 09 37 :B2
D038 CD C2 D0 CD 50 D0 FB C9 :10
D040 3E 0F CD 93 00 3E 0E F3 :EC
D048 CD 96 00 FB 2F E6 3F C9 :7B
D050 21 00 E8 1E 00 7E FE 94 :37
D058 38 02 CB DB FE 6C 30 02 :7C
D060 CB D3 23 7E FE 94 38 02 :0B
D068 CB CB FE 6C 30 02 CB C3 :C0
D070 23 7E FE 94 38 02 CB DB :13
D078 FE 6C 30 02 CB D3 23 7E :DB
D080 FE 94 38 02 CB CB FE 6C :CC
D088 30 02 CB C3 23 23 7E CB :4F
D090 4F 20 02 CB EB CB 47 20 :59
D098 02 CB E3 7B C9 CD 10 D1 :A2
D0A0 CD 67 D1 0E A4 CD 98 D1 :ED
D0A8 CD 59 D2 D8 0E 40 CD 98 :83
D0B0 D1 CD 59 D2 D8 0E 00 CD :7C
D0B8 98 D1 CD 59 D2 D0 CD 46 :44
D0C0 D1 C9 CD 10 D1 CD 67 D1 :4D
D0C8 0E A4 CD 98 D1 CD 59 D2 :E0
D0D0 D8 0E 00 CD 98 D1 CD 59 :42
D0D8 D2 D8 CD 46 D1 CD B0 D2 :DD
D0E0 CD 67 D1 0E A5 CD 98 D1 :EE
D0E8 CD 59 D2 D8 FD 21 00 E8 :D6
D0F0 2E 05 CD D5 D1 FD 71 00 :14
D0F8 FD 23 A7 CD 24 D2 2D 20 :D7
D100 F1 CD D5 D1 FD 71 00 37 :09
D108 CD 24 D2 CD 46 D1 A7 C9 :17
D110 F3 3E 0F D3 A0 DB A2 32 :62
D118 07 E8 38 15 CB B7 CB C7 :50
D120 D3 A1 CB CF D3 A1 47 CD :96
D128 46 D1 CD 46 D1 CD 46 D1 :DF
D130 C9 CB F7 CB D7 D3 A1 CB :6C
D138 DF D3 A1 47 CD 46 D1 CD :4B
D140 46 D1 CD 46 D1 C9 78 CB :07
D148 77 20 0E CB 87 D3 A1 CB :36
D150 CF D3 A1 CB C7 D3 A1 47 :90
D158 C9 CB 97 D3 A1 CB DF D3 :1C
D160 A1 CB D7 D3 A1 47 C9 78 :3F
D168 CB 77 20 16 CB CF D3 A1 :86
D170 CB C7 D3 A1 CB 87 D3 A1 :CC
D178 CB 8F D3 A1 CB C7 D3 A1 :D4
D180 47 C9 CB DF D3 A1 CB D7 :D0
D188 D3 A1 CB 97 D3 A1 CB 9F :B4
D190 D3 A1 CB D7 D3 A1 47 C9 :9A
D198 78 CB 77 20 1C 06 08 CB :CF
D1A0 21 CB 87 30 02 CB C7 D3 :0A
D1A8 A1 CB CF D3 A1 CB 8F D3 :DC
D1B0 A1 10 EC CB C7 D3 A1 47 :EA
D1B8 C9 06 08 CB 21 CB 97 30 :55
D1C0 02 CB D7 D3 A1 CB DF D3 :95
D1C8 A1 CB 9F D3 A1 10 EC CB :46
D1D0 D7 D3 A1 47 C9 78 CB 77 :15
D1D8 20 25 CB C7 D3 A1 01 00 :4C
D1E0 08 CB CF D3 A1 5F 3E 0E :C1
D1E8 D3 A0 DB A2 E6 10 ED 44 :17
D1F0 CB 11 3E 0F D3 A0 7B CB :E2
D1F8 8F D3 A1 10 E4 47 C9 CB :D2
D200 D7 D3 A1 01 00 08 CB DF :FE
D208 D3 A1 5F 3E 0E D3 A0 DB :6D
D210 A2 E6 10 ED 44 CB 11 3E :E3
D218 0F D3 A0 7B CB 9F D3 A1 :DB
D220 10 E4 47 C9 78 CB 77 20 :DE
D228 18 CB 87 D3 A1 30 02 CB :DB
D230 C7 D3 A1 CB CF D3 A1 CB :14
D238 8F D3 A1 CB C7 D3 A1 47 :50
D240 C9 CB 97 D3 A1 30 02 CB :9C
D248 D7 D3 A1 CB DF D3 A1 CB :34
D250 9F D3 A1 CB D7 D3 A1 47 :70
D258 C9 78 CB 77 20 29 CB C7 :5E
D260 D3 A1 CB CF D3 A1 E5 21 :88
D268 D0 07 47 3E 0E D3 A0 DB :B8
D270 A2 E6 10 28 06 2B 7C B5 :22
D278 20 F5 37 3E 0F D3 A0 78 :84
D280 CB 8F D3 A1 47 E1 C9 CB :8A
D288 D7 D3 A1 CB DF D3 A1 E5 :4E
D290 21 D0 07 47 3E 0E D3 A0 :FE
D298 DB A2 E6 10 28 06 2B 7C :48
D2A0 B5 20 F5 37 3E 0F D3 A0 :C1
D2A8 78 CB 9F D3 A1 47 E1 C9 :47
D2B0 E5 F5 21 6D 00 2B 7C B5 :C4
D2B8 20 FB F1 E1 C9 :B6
Assinar:
Postagens (Atom)
