scripts_n_asm
Thread Id: 28219
Thread Name: FR | ASM | Cambio de sexo
La verdad es que eso del "cambio de sexo" no me acaba de sonar bien xD
Bueno, he visto un comentario de Jota que decía lo siguiente:
Lo voy a probar en FR y te digo, que no todos los wbto de ruby funcionan en FR como tú dices, por ejemplo, el del cambio de sexo y alguno mas en FR no me funcionaron.
Hacer un "cambio de sexo" es cambiar del personaje masculino al femenino o viceversa. Esto, si sacrificamos uno de los personajes (obligando por ejemplo a escoger el masculino), implica tener otro personaje con su propio mini, sprite y backsprite. Lo que es un cambio total de personaje (o de ropa). Y como parece que es algo que puede venir bien, he hecho una rutina para cambiarlo:
.align 2
.thumb
push {r0-r1,lr}
ldr r0, .asdf
ldr r1, [r0]
mov r0, #0x0
ldr r0, .var_8000
ldrb r0, [r0]
strb r0, [r1,#0x8]
pop {r0-r1,pc}
.asdf: .word 0x0300500C
.var_8000: .word 0x020370B8
Como ya sabéis, estos datos en FR son dinámicos, por eso no se pueden cambiar con WBTO. Así que lo que hace la rutina es localizar los datos en la ram y modificar el byte que corresponde al sexo elegido.
La rutina la debéis compilar en un offset que termine en 0, 4, 8 o C y se utiliza así:
(...)
setvar 0x8000 0x(sexo)
callasm 0x(offset de la rutina + 1)
(...)
En la variable 0x8000 tenemos que poner 0x0 (chico) o 0x1 (chica).
Aquí tenéis la rutina compilada lista para insertar en el rom:
03 B5 03 48 01 68 00 20 02 48 00 78 08 72 03 BD 0C 50 00 03 B8 70 03 02
Dios que puto amo!!
En serio, eres un crack, esta rutina está de PM y es Super útil si tienes buena imaginación, y es algo que se agradece bastante.
Solo 1 duda, si haces el cambio de sexo y guardas partida, al cargar partida el sexo sigue cambiado o vuelve a ser el que teniamos antes?
Aportazo! (L)
Iniciado por Jotta
Dios que puto amo!!
En serio, eres un crack, esta rutina está de PM y es Super útil si tienes buena imaginación, y es algo que se agradece bastante.
Solo 1 duda, si haces el cambio de sexo y guardas partida, al cargar partida el sexo sigue cambiado o vuelve a ser el que teniamos antes?
Aportazo! (L)
Sí, se mantiene el cambio al cargar la partida ;D
Vete a tomar por culo tio, así de sencillo! Esto lo estube buscando muchíiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimo jajajajaj ¿Te acuerdas el cambio de backsprite que me implantaste? Pues con esto me hubiese valido igual jajajajajajaja
eres un máquina, no se si le podré dar mucha utilidad a estas alturas, pero me renta. Gran aporte sigue así!
PD: ¿Desde cuando le das al ASM?
Iniciado por Sayer301
Vete a tomar por culo tio, así de sencillo! Esto lo estube buscando muchíiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimo jajajajaj ¿Te acuerdas el cambio de backsprite que me implantaste? Pues con esto me hubiese valido igual jajajajajajaja
eres un máquina, no se si le podré dar mucha utilidad a estas alturas, pero me renta. Gran aporte sigue así!
PD: ¿Desde cuando le das al ASM?
Supongo que desde que aprendió xDD
Buenisima rutina Javi :) Cumple su cometido y está simple y óptima ;) sigue dandonos aportazos asi que nosotros le sabemos dar su uso :rolleyes:
Javi <3
Un gran aporte para los rom hackers de wah ;O
Me servirá para llevar a mi protagonista al quirófano y cambiarle el sexo :awesome: (?)
Con imaginacion se haran cosas chulad!! :)
A mi se me ha ocurrido hacer dos historias paralelas :D
Me viene de perlas para una idea que tengo para el hack :D
He quitado una instrucción inútil y sustituido la multiplicación por un shift, (por que soy así de obsesivo):
.align 2
.thumb
push {r0-r2,lr}
ldr r0, .asdf
ldrh r1, [r0,#0x2]
ldrh r2, [r0]
lsl r1, r1, #0x10
add r1, r1, r2
ldr r0, .var_8000
ldrb r0, [r0]
strb r0, [r1,#0x8]
pop {r0-r2,pc}
.asdf: .word 0x0300500C
.var_8000: .word 0x020370B8
¿Qué método recomiendas para refrescar la cosilla? ¿Un warp?
Iniciado por cosarara97
He quitado una instrucción inútil y sustituido la multiplicación por un shift, (por que soy así de obsesivo):
.align 2
.thumb
push {r0-r2,lr}
ldr r0, .asdf
ldrh r1, [r0,#0x2]
ldrh r2, [r0]
lsl r1, r1, #0x10
add r1, r1, r2
ldr r0, .var_8000
ldrb r0, [r0]
strb r0, [r1,#0x8]
pop {r0-r2,pc}
.asdf: .word 0x0300500C
.var_8000: .word 0x020370B8
¿Qué método recomiendas para refrescar la cosilla? ¿Un warp?
Si, es un warp por narices dado que la funcion que coloca los pointers del sexo en la ram (osea su frameset, pointer 1 y paleta) es una funcion que se procesa una vez, al pasar por warps. (Ya que se refresca ..) no es como cambiando el pointer del frameset que es ejecucion continua.
Buen aporte javi, aunque se cargan el pj femenino pero bue.. Es un buen aporte.
Iniciado por eing
Si, es un warp por narices dado que la funcion que coloca los pointers del sexo en la ram (osea su frameset, pointer 1 y paleta) es una funcion que se procesa una vez, al pasar por warps. (Ya que se refresca ..) no es como cambiando el pointer del frameset que es ejecucion continua.
Buen aporte javi, aunque se cargan el pj femenino pero bue.. Es un buen aporte.
FR tiene una rutina para refrescar sin usar warp, ¿no serviría esa rutina?
Iniciado por Jotta
FR tiene una rutina para refrescar sin usar warp, ¿no serviría esa rutina?
Nop. Parece ser que la rutina no funciona en este caso.
Iniciado por Javi4315♪
Nop. Parece ser que la rutina no funciona en este caso.
Entonces solo nos queda usar warp?
Bueno, aun asi la rutina está genial.
Pero no entiendo, ¿qué diferencia hayq entre tu rutina y la que ha dejado Cosarara?
Iniciado por Jotta
Entonces solo nos queda usar warp?
Bueno, aun asi la rutina está genial.
Pero no entiendo, ¿qué diferencia hayq entre tu rutina y la que ha dejado Cosarara?
Nada, es lo mismo. Lo que ha hecho cosarara es cambiar un par de comandos. Pero no afecta en nada xD
--------------------------
Por cierto, he cambiado la rutina. Ahora utiliza menos registros y es más corta:
.align 2
.thumb
push {r0-r1,lr}
ldr r0, .asdf
ldr r1, [r0]
mov r0, #0x0
ldr r0, .var_8000
ldrb r0, [r0]
strb r0, [r1,#0x8]
pop {r0-r1,pc}
.asdf: .word 0x0300500C
.var_8000: .word 0x020370B8
Está todo en el primer post.
Hola mira, yo inserto la rutina en la dirección 980000 pero cuando inicio el juego no se inicia y al abrirlo con el AM me salen los tiles y las paletas cambiadas.
Lo he probado 2 o 3 veces cambiando el offset y ya no se que mas puedo hacer.
Uso FR en inglés (No se si tiene algo que ver)
Iniciado por IsR
Hola mira, yo inserto la rutina en la dirección 980000 pero cuando inicio el juego no se inicia y al abrirlo con el AM me salen los tiles y las paletas cambiadas.
Lo he probado 2 o 3 veces cambiando el offset y ya no se que mas puedo hacer.
Uso FR en inglés (No se si tiene algo que ver)
¿Cómo estás insertando la rutina? ¿No será que la estás poniendo en 980000 en lugar de 0x980000?
Si realmente quieres que veamos qué haces mal, grábate en vídeo haciéndolo y súbelo a youtube (o haz un montón de capturas).
Vale, ya se de que era el error...
Me equivoqué e insertaba la rutina con CTRL+V en vez de CTRL+B aunque ahora tengo otro problema :/
IMAGEN
Y este es el script que utilizo :
'-----------------------
#org 0x8000DB
lock
faceplayer
msgbox 0x88000F0 '"asodabsd"
setvar 0x8000 0x1
callasm 0x8DB3F01
release
end
'---------
' Strings
'---------
#org 0x8000F0
= asodabsd
En que me equivoqué? :S
No decías que la pondrías en 0x980000?
Sea como sea, prueba a ser más explícito: cambia el callasm por un "callasm 0x88DB3F01". Probablemente se esté escribiendo como "callasm 0x08DB3F01".
Puse lo que me dijiste, pero ahora al hablar se queda pillado--'
Hasta he cogido otro FR y lo inserté en el 980000 y tampoco:/ (Obviamente después en el script puse callasm 0x9800001)
Iniciado por IsR
Puse lo que me dijiste, pero ahora al hablar se queda pillado--'
Hasta he cogido otro FR y lo inserté en el 980000 y tampoco:/ (Obviamente después en el script puse callasm 0x9800001)
En el script tenías que haber puesto callasm 0x8900001, está mal.
Iniciado por IsR
Puse lo que me dijiste, pero ahora al hablar se queda pillado--'
Hasta he cogido otro FR y lo inserté en el 980000 y tampoco:/ (Obviamente después en el script puse callasm 0x9800001)
A menos que tengas el rom expandido, no exsite tal dirección (0x9800001). O bien lo has insertado en la 0x980000 o en la 0x8800000 (y yo diría que es la primera). Aunque no sé si tendrás el rom expandido o no.
EDITO: Cosarara, sé dónde vives... xD
Iniciado por cosarara97
En el script tenías que haber puesto callasm 0x8900001, está mal.
Tampoco, puse callstd 0x6 antes del msgbox para que hablase y veo que el error de quedarse pillado llega cuando hablo por que me salta el texto y al segundo el juego se queda pillado aunque se escucha la música.
'-----------------------
#org 0x80005A
lock
faceplayer
msgbox 0x88000F9 '"asdasdasd"
callstd 0x6
setvar 0x8000 0x1
callasm 0x8900001
release
end
'---------
' Strings
'---------
#org 0x8000F9
= asdasdasd
Javi acabo de leer tu mensaje, yo a la hora de hacer el callasm pongo la dirección donde puse la rutina más el 1 que hay que poner.
Y que yo sepa yo no he expandido la rom, solamente la descargué del post de descargas de rom's aquí en WAH
Es decir, ves el texto o no? Porque si no, significa que no has configurado bien el mini en AM.
Iniciado por cosarara97
Es decir, ves el texto o no? Porque si no, significa que no has configurado bien el mini en AM.
Si, se ve el mensaje y después al llegar a la parte de cargar la variable y la rutina se queda pillado (He probado el mismo script sin la variable y la rutina y me habla y después puedo seguir jugando (No se queda pillado))
Añado una imagen de como esta el codigo en el HxD (No soy muy pro todavía en como insertar las rutinas y a lo mejor puede ser fallo de eso :/ )
IMAGEN
Pero es que te estás equivocando. 2 + 1 son 3, no 21. Es decir, 0x980000 + 1 es 0x980001, no 0x9800001.
Muchas gracias javi, ese era el fallo:)
Sinceramente me estaba equivocando de una forma terrible y no entendí tu primer comentario jajaja
PD : Te doy gracias que lo te mereces.
Hola Javi, la rutina me parece excelente, pero tengo una duda...
¿Tendría que eliminar, por ejemplo, la elección de la chica al inicio del juego?
¿Y también, puedo modificar su sprite a mi gusto?
Iniciado por Megasceptile9
Hola Javi, la rutina me parece excelente, pero tengo una duda...
¿Tendría que eliminar, por ejemplo, la elección de la chica al inicio del juego?
¿Y también, puedo modificar su sprite a mi gusto?
No he provado la rutina, pero no creo que sea necesario, simplemente has un checkgender antes y usa la rutina según el personaje que elegiste.
Iniciado por Foxz.
No he provado la rutina, pero no creo que sea necesario, simplemente has un checkgender antes y usa la rutina según el personaje que elegiste.
Eso quería hacer, pero es mucho trabajo XD...aún así
puedo eliminar a la chica???
Iniciado por Megasceptile9
Eso quería hacer, pero es mucho trabajo XD...aún así
puedo eliminar a la chica???
Sí puedes hacerlo, sin ningún problema.