Página 2 de 5

Re: Escape from ASYLUM!

Publicado: Dom, 08 Dic 2013, 12:24
por na_th_an
En WOS hay algunos que suelen ser muy suyos. El primero se queja de que parece apresurado, parece que no entiende que ha sido apresurado adrede. Andrew simplemente dice que preparará el hack pack pronto :D Es un crack, no entiendo como saca los POKEs tan pronto.

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 13:24
por D_Skywalk
AJUDA! :cry:

Necesito detectar si el usuario pulsa, joy (kempston o sinclair) en la música, por que si eligen joystick no pueden salir de la música de batalla. Esta es la función en music.h

$this->bbcode_second_pass_code('', '.play_note
; Read keyboard
LD E,A
XOR A
IN A,($FE)
OR $E0
INC A

.player_wait_key
JR NZ,EXIT_PLAYER
LD A,E
LD E,0
')

¿como podría añadir que salga con joy también?

Un saludo y gracias chicos :_

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 13:29
por na_th_an
El joystick sinclair está mapeado al teclado (1-5 o 6-0 dependiendo del puerto), así que este no te da problemas.

Para el kempston habría que leer el puerto ¿31? y si da diferente de ¿0? es que hay algo pulsado. Tendría que investigarlo.

Sería añadir esa comprobación detrás del jr nz, exit_player.

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 13:32
por na_th_an
No lo he probado, pero debería ser tan sencillo como añadir esto después de jr nz,exit_player:

$this->bbcode_second_pass_code('', 'in a, 31
jr nz, exit_player')

Leemos el valor del puerto 31 y si no es cero (el joystick se mueve en alguna dirección) saltamos a exit_player también.

Si se quiere restringir al botón, supongo que habría que hacer un and con 16, porque el kempston levanta el bit 4 con el botón:

$this->bbcode_second_pass_code('', 'in a, 31
and 16
jr nz, exit_player')

http://chuntey.wordpress.com/2010/01/06 ... -programs/

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 13:46
por D_Skywalk
Probandooooo!!!

:corchoneta: :corchoneta: :corchoneta: :corchoneta:

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 13:52
por D_Skywalk
Nop, no sale del bucle de la musica :_
[UPDATE1]
Espera es un error de compilacion...

[UPDATE2]
$this->bbcode_second_pass_code('', ' IN A,($1F)
AND 31
JR NZ,EXIT_PLAYER
')
Así funciona pero la música va muy mal, supongo por que tiene que hacer dos lecturas de puerto...

:| :|

Completo:
$this->bbcode_second_pass_code('', '.play_note
; Read Kempston
IN A,($1F)
AND 31
JR NZ,EXIT_PLAYER

; Read keyboard
LD E,A
XOR A
IN A,($FE)
OR $E0
INC A

.player_wait_key
JR NZ,EXIT_PLAYER
LD A,E

')

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 14:15
por na_th_an
Yo decía de ponerlo después del jr nz, exit_player otro que hay más abajo. Si lo pones donde lo has puesto tú te estás cargando el registro A que se usa justo después y por eso te estás cargando la música.

$this->bbcode_second_pass_code('', '.play_note
; Read keyboard
LD E,A
XOR A
IN A,($FE)
OR $E0
INC A

.player_wait_key
JR NZ,EXIT_PLAYER
; AQUI
; Read Kempston
IN A,($1F)
AND 31
JR NZ,EXIT_PLAYER
; %%%
LD A,E
')

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 14:16
por D_Skywalk
Estaba justo probándolo y se come notas :?

$this->bbcode_second_pass_code('', '.play_note
LD E,A
XOR A

; Read keyboard
IN A,($FE)
OR $E0
INC A

.player_wait_key
JR NZ,EXIT_PLAYER

.player_wait_joy
; Read Kempston
IN A,($1F)
AND 31
JR NZ,EXIT_PLAYER

.player_wait_end
LD A,E


.l8168 EXX
EX AF,AF ; beware!
ADD HL,BC
OUT ($FE),A
JR C,L8171
JR L8173
.l8171 XOR $10
.l8173 ADD IX,DE
JR C,L8179
JR L817B
.l8179 XOR $10
')

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 14:20
por na_th_an
La verdad es que no tengo muy claro cómo se engloba el cacho de código que has puesto con todo el player, y ahora mismo aquí no lo puedo mirar.

Prueba así:

$this->bbcode_second_pass_code('', '.play_note
LD E,A

; Read Kempston
XOR A
IN A,($1F)
AND 31
JR NZ,EXIT_PLAYER

; Read keyboard

XOR A
IN A,($FE)
OR $E0
INC A

.player_wait_key
JR NZ,EXIT_PLAYER

LD A,E')

Re: Escape from ASYLUM!

Publicado: Lun, 09 Dic 2013, 14:23
por D_Skywalk
He añadido un poco más por si vale...
Espera el problema parece otro, he dejado todo como estaba y sigue mal.

Me había comido un ...
$this->bbcode_second_pass_code('', '.player_wait_end
LD A,E
LD E,0
')

Bendito git diff XD

Ahora necesito una variable para cuando este en batallas con kempston :?
Por que si no lo tienes enchufado, siempre devuelve 255 al parecer...