qna_rh
Thread Id: 21294
Thread Name: ¿Alguna idea?
#0
Doctor Juanjo 12932
Bueno necesito de urgencia alguna idea para resolver una encrucijada en la que me he metido:

Mediante un script hago algo así por el estilo:

getplayerpos 0x4051 0x407C
writebytetooffset 0x0 0x20secreto3E
writebytetooffset 0x5 0x20secreto3F
warp2 0x0 0x9 0xF 0x4051 0x407C


El mapa al que se teletransporta es el mismo y tiene un script de nivel que hace el mismo WBTO. Ahora, viendo el visor de memoria se ve como efectivamenta cambia el byte. Pero al hacer el warp hay un pequeño "parpadeo" de algunos milisegundos en que el byte se cambia al original.

Estoy experimentando de todas las maneras posibles de poder hacer este warp sin que se refresque ese dato.

¿Alguna idea?
#1
Chuckles el Cerdito 0
Según entiendo, al refrescar la pantalla (warp, special 0x8E, etc), los bytes se "actualizan" y vuelven a los "originales".
Tal vez con ASM se pueda (supongo), pero dudo que sí por métodos normales.
¡Saludos!
#2
Doctor Juanjo 12932
Pues este byte en especifico no se actualiza ni con la mochila, ni fadescreen ni special 0x8E ._. tal solo al hacer el warp.
#3
Chuckles el Cerdito 0
Pero si el mapa al que te telentransporta con el warp es el mismo, podrías hacer un special 0x8E/fadescreen y un spritepos (creo que era así, no recuerdo) al lugar donde deberías aparecer.

De esa manera de ahorras el warp y el cambio de byte innecesario :D
#4
Doctor Juanjo 12932
El problema es que al hacer eso no hay cambio aparente en lo que quiero. Tal solo se hace al entrar a un mapa con el byte anterior especifico D:
#5
Chuckles el Cerdito 0
:/ entonces creo que no se le puede hacer nada... No se me ocurre nada más.
#6
Javi4315♪ 13374
Puff... Si es que un warp lo fastidia siempre todo xD

Pero a ver. No das muchas explicaciones, así que voy a conjeturar. La parte de la ram en la que haces el WBTO puede que esté libre de otros datos. Quizás sea una parte que no guarde nada y se refresque a sus datos originales, es decir, a nada. O quizás sí, pero se refresque a unos datos que de alguna manera son estrictos o en parte. Pero la cuestión es para qué lo quieres utilizar, ¿Para alguna función dentro del juego o simplemente para guardar un valor?
#7
Loony Boo♪ 12263
Tal vez te resulte una solución chapucera, pero puedes probar a colocar el siguiente comando antes del warp:

fadescreen 0x1

Esto dejará la pantalla en negro durante lo poco que queda del script. No se me ocurre nada más, siento no serte de más ayuda.

PD: Hace mucho que no scripteo, así que no estoy seguro de si se oscurecía la pantalla o si se aclaraba, en este caso, deberías cambiar el parámetro "0x1" por este otro: "0x3" (vuelve la pantalla de color blanco).
#8
ReoNeky 18653
No sé que quieres hacer con eso y a qué dirección te llega, pero una solución podría ser, cambiar los offset de la Ram a la VRAM (Porque no se refresca) En cambio el offset de la ROM a la VRam se refresca.

Peeeero, el problema es que no sé lo que quieres hacer....
- Primero deberías buscar la dirección del Offset donde se guarda lo que has encontrado para odificarlo con el WTBO (Cosa dificil dependiendo de qué vayas a hacer) Y repuntear ese offset a un offset de la VRAM vacío.
- Una vez hecho eso, cargamos con el WTBO la dirección en la que repunteamos el offset a la VRAM. Y ya debería funcionar correctamente y sin refrescarse.

(No me hagas mucho caso, es solo una teoría) Y sí, nunca se me dió explicar las cosas bien... u.U

O sino, prueba lo que ha dicho rey boo, aunque con el warp se interrumpe el fadescreen no? Nunca lo he probado cuando haces warp al mismo mapa, de ser así, esa sería la solución.
#9
Doctor Juanjo 12932
Ok les diré. Aunque es parte de una investigación.

Ese byte almacena un par de bytes importantisimos del cabezal de un mapa. Si cambias ese byte en el cabezal directo del mapa (En el ROM con Hex). Y entras a ese mapa, ocurrirá ese efecto que quiero. El problema es que no siempre quiero ese "efecto". Quiero que al hacer ese script se cambien esos bytes, se haga el warp y el byte cambiado prevalezca.

Luego ya puede cambiar lo que sea porque ese efecto prevalece aún ese byte se halla cambiado de nuevo. EL byte entra en juego solo al cargar el mapa.

Si tienen alguna idea sera muy bien recibida :P

Por cierto, pronto vendrá un nuevo super sistema revolucionario de parte de Positron :P

EDITO:

Según he ido investigando, la RAM lee ese byte directamente del ROM y lo almacena en ese offset.

En el momento de cargar el mapa luego de un warp, si el byte de ese mapa es 05. automáticamente cambiará algo en el mini (Información que aún no puedo revelar). Ahora al entrar ese mapa sin embargo, el mini entra completamente normal y luego se cambia el byte, por lo que debo encontrar alguna manera de "engañar" a la RAM para que lea otro dato en vez del que está ahí escrito. Por cierto, tengo el offset tanto en la RAM como en la ROM de ese byte. ¿Cómo podría poner ese condicional?