Registrarse

[RH - ASM] Bloquear Tecla START

Estado
Cerrado para nuevas respuestas.

ANT0N9

Algun Sprite?
Buenas, voy al grano, este tema ya lo había echo, se trata de bloquear la tecla Start por un tiempo definido, pero quiero bloquear la tecla Start sin usar el parche de JPAN porque lo use y me dio problemas. Entonces la pregunta es, se puede bloquear la tecla Start de otra forma? y si se puede alguien seria tan amable de decirme como, gracias.
 

Eaas

Profesional de WaH
Buenas, voy al grano, este tema ya lo había echo, se trata de bloquear la tecla Start por un tiempo definido, pero quiero bloquear la tecla Start sin usar el parche de JPAN porque lo use y me dio problemas. Entonces la pregunta es, se puede bloquear la tecla Start de otra forma? y si se puede alguien seria tan amable de decirme como, gracias.
Pará qué base quieres la rutina, y qué quieres que haga exactamente?
 
Última edición:

Acimut

Profesional de WaH
En Fire Red 1.0 puedes hacer lo siguiente:

Hacer una copia de seguridad de tu rom.

Inserta la siguiente rutina en un offset alineado con suficiente espacio libre, para probar, yo puse mi rutina en 0x0871A250. Necesitarás mucho espacio disponible como puedes observar:
00 B5 07 48 07 4B 00 F0 15 F8 00 28 03 D1 06 4B 00 F0 10 F8 00 BD 05 48 05 4B 00 F0 0B F8 F9 E7 XX XX 00 00 D1 E6 06 08 59 F2 06 08 SS SS SS SS E5 9A 06 08 18 47
donde:
XX XX = flag que controla el start menu. Activado = Ejecuta un script y no ejecuta el start menu. Desactivado = funcionamiento normal del start menu.
SS SS SS SS = puntero a un Script que se ejecuta cuando la flag está activada (no se puede acceder al start menu).

Puedes poner el script que quieras, pero para probar yo usaré este:
Código:
#dynamic 0x800000
#org @inicio
msgbox @startmenudesactivado 0x2
end
#org @startmenudesactivado
= El start menu no funciona\nen este momento.
Puedes usar cualquier flag libre, yo usaré la flag 0x83D, permuto 0x83D, se convierte en 3D 08 y reemplazo por las XX XX.
Como mi script quedó en 0x08800000, pues permuto y reemplazo 00 00 80 08 por las SS SS SS SS, y mi rutina quedaría así:
00 B5 07 48 07 4B 00 F0 15 F8 00 28 03 D1 06 4B 00 F0 10 F8 00 BD 05 48 05 4B 00 F0 0B F8 F9 E7 3D 08 00 00 D1 E6 06 08 59 F2 06 08 00 00 80 08 E5 9A 06 08 18 47

Hooks:
Para que funcione debemos cambiar unos bytes en los siguientes offset:
Código:
0x080581D0:
cambiar: 17 F0 42 F8
por:     B9 F7 0C F8
Código:
0x0806ccec:
cambiar: 02 F0 B4 FA
por:     A4 F7 7E FA
Código:
0x0806ce0e:
cambiar: 02 F0 23 FA
por:     A4 F7 ED F9
Código:
0x080111ec:
Cambiar: 00 21 C1 85 01 49 C1 61 70 47 00 00 FD 11 01 08
por:     10 B5 02 49 00 F0 01 F8 10 BD 08 47 RR RR RR RR
donde:   RR RR RR RR = puntero+1 a @Rutina
Como yo puse mi rutina en 0x0871A250, le sumo 1 = 0x0871A251, permuto = 51 A2 71 08, y el cambio en 0x080111ec me quedaría así:
10 B5 02 49 00 F0 01 F8 10 BD 08 47 51 A2 71 08

Ya insertado todo, puedes activar o desactivar el menú a través de scripts usando setflag para desactivar el start menu, o clearflag para volver a activarlo.


Aquí una muestra de cómo quedaría:


Los scripts que he usado para activar o desactivar la flag:
Código:
#dynamic 0x800000
#org @inicio
setflag 0x83D
msgbox @desactivado 0x2
end
#org @desactivado
= Start menu desactivado.
Código:
#dynamic 0x800000
#org @inicio
clearflag 0x83D
msgbox @activado 0x2
end
#org @activado
= El start menu activado.

La rutina la acabo de hacer, pero funciona bien para lo que buscas.
Espero haberte ayudado.
 

ANT0N9

Algun Sprite?
En Fire Red 1.0 puedes hacer lo siguiente:

Hacer una copia de seguridad de tu rom.

Inserta la siguiente rutina en un offset alineado con suficiente espacio libre, para probar, yo puse mi rutina en 0x0871A250. Necesitarás mucho espacio disponible como puedes observar:
00 B5 07 48 07 4B 00 F0 15 F8 00 28 03 D1 06 4B 00 F0 10 F8 00 BD 05 48 05 4B 00 F0 0B F8 F9 E7 XX XX 00 00 D1 E6 06 08 59 F2 06 08 SS SS SS SS E5 9A 06 08 18 47
donde:
XX XX = flag que controla el start menu. Activado = Ejecuta un script y no ejecuta el start menu. Desactivado = funcionamiento normal del start menu.
SS SS SS SS = puntero a un Script que se ejecuta cuando la flag está activada (no se puede acceder al start menu).

Puedes poner el script que quieras, pero para probar yo usaré este:
Código:
#dynamic 0x800000
#org @inicio
msgbox @startmenudesactivado 0x2
end
#org @startmenudesactivado
= El start menu no funciona\nen este momento.
Puedes usar cualquier flag libre, yo usaré la flag 0x83D, permuto 0x83D, se convierte en 3D 08 y reemplazo por las XX XX.
Como mi script quedó en 0x08800000, pues permuto y reemplazo 00 00 80 08 por las SS SS SS SS, y mi rutina quedaría así:
00 B5 07 48 07 4B 00 F0 15 F8 00 28 03 D1 06 4B 00 F0 10 F8 00 BD 05 48 05 4B 00 F0 0B F8 F9 E7 3D 08 00 00 D1 E6 06 08 59 F2 06 08 00 00 80 08 E5 9A 06 08 18 47

Hooks:
Para que funcione debemos cambiar unos bytes en los siguientes offset:
Código:
0x080581D0:
cambiar: 17 F0 42 F8
por:     B9 F7 0C F8
Código:
0x0806ccec:
cambiar: 02 F0 B4 FA
por:     A4 F7 7E FA
Código:
0x0806ce0e:
cambiar: 02 F0 23 FA
por:     A4 F7 ED F9
Código:
0x080111ec:
Cambiar: 00 21 C1 85 01 49 C1 61 70 47 00 00 FD 11 01 08
por:     10 B5 02 49 00 F0 01 F8 10 BD 08 47 RR RR RR RR
donde:   RR RR RR RR = puntero+1 a @Rutina
Como yo puse mi rutina en 0x0871A250, le sumo 1 = 0x0871A251, permuto = 51 A2 71 08, y el cambio en 0x080111ec me quedaría así:
10 B5 02 49 00 F0 01 F8 10 BD 08 47 51 A2 71 08

Ya insertado todo, puedes activar o desactivar el menú a través de scripts usando setflag para desactivar el start menu, o clearflag para volver a activarlo.


Aquí una muestra de cómo quedaría:


Los scripts que he usado para activar o desactivar la flag:
Código:
#dynamic 0x800000
#org @inicio
setflag 0x83D
msgbox @desactivado 0x2
end
#org @desactivado
= Start menu desactivado.
Código:
#dynamic 0x800000
#org @inicio
clearflag 0x83D
msgbox @activado 0x2
end
#org @activado
= El start menu activado.

La rutina la acabo de hacer, pero funciona bien para lo que buscas.
Espero haberte ayudado.
Me sirvió divinamente, eres un crack amigo, esto deberías hacer como mini "tutorial" porque vi que varios usuarios también querían bloquear la tecla Start y recurrían al parche ese de JPAN (que trae muchos problmas)
En fin muchas gracias de verdad 💜
 
Estado
Cerrado para nuevas respuestas.
Arriba