Posible texto sin punteros en Devil Survivor 1

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Posible texto sin punteros en Devil Survivor 1

Mensaje por Leeg » 18 Dic 2014, 15:32

¡Hola!

Estaba mirando más texto "especial" en Devil Survivor 1, el que se encuentra en el arm9.bin y he encontrado las descripciones de los ataques, que empiezan en 171039 y llegan hasta 171BE2. La cuestión es que creo que este texto es de tamaño fijo y no tiene punteros... mi sospecha se basa en: 1) No encuentro los punteros por ninguna parte, en cambio los punteros de otros trozos de texto en este mismo archivo los he encontrado sin ningún esfuerzo a la primera; 2) El texto está súper abreviado en inglés, como se puede ver a continuación... cosa que me hace pensar que va a ser tamaño fijo sí o sí.

[spoil]

Código: Seleccionar todo

Attack normally[00]
Low Fire dmg: 1 foe[00]
High Fire dmg: 1 foe[00]
Low Fire dmg: All[00]
High Fire dmg: All[00]
Low Ice dmg: 1 foe[br]Eff: FREEZE[00]
High Ice dmg: 1 foe[br]Eff: FREEZE[00]
Low Ice dmg: All[br]Eff: FREEZE[00]
High Ice dmg: All[br]Eff: FREEZE[00]
Low Elec dmg: 1 foe[br]Eff: SHOCK[00]
High Elec dmg: 1 foe[br]Eff: SHOCK[00]
Low Elec dmg: All[br]Eff: SHOCK[00]
High Elec dmg: All[br]Eff: SHOCK[00]
Low Force dmg: 1 foe[br]Eff: STONE[00]
High Force dmg: 1 foe[br]Eff: STONE[00]
Low Force dmg: All[br]Eff: STONE[00]
High Force dmg: All[br]Eff: STONE[00]
Almighty dmg: All[00]
Big Almighty dmg: All[00]
High Mute chance: All[00]
High Seal chance: 1 foe[00]
1 foe cannot heal[00]
Reflect 1 magic atk[br](No Almighty)[00]
Reflect 1 phys atk[00]
Critical atk: 1 time[br](Phys only)[00]
Nullify any dmg once[00]
Attract dmg, def up[00]
Fire damage: Random[00]
Ice damage: Random[00]
Elec damage: Random[00]
Force damage: Random[00]
Holy damage: Random[00]
Drain HP & MP: 1 foe[00]
Halves foe HP: All[00]
Mid Stone chance: All[00]
Mid Mute chance: All[00]
Mid Parl. chance: All[00]
Kill Mute/Par. foes[00]
Escape battle: 100%[00]
High phys. attack[00]
Rndm HP-dependant dmg[00]
Critical dmg: 1 foe[00]
The bane of Beldr[00]
MP damage: All[00]
Critical dmg: 1 foe[br](Hit: 50%)[00]
HP-dependant dmg: 1[00]
HP-dependant dmg: All[00]
Rndm HP-dependant dmg[00]
High damage: 1 foe[br]with ailment[00]
Kill self to dmg foes[00]
Drain HP: magic foes[00]
High fire damage: All[00]
Eggs will kill victim[00]
Hell fire dmg: All[00]
Phys dmg: 1 foe[br]High dmg to Humans[00]
Some HP Up: 1 Ally[00]
Full HP Up: 1 Ally[00]
Some HP Up: Team[00]
Full HP Up: Team[00]
Cures all ailments[00]
Full HP & Cure: Team[00]
Revive Ally: Low HP[00]
Revive Ally: Full HP[00]
Lower damage taken[00]
Disrupts a team[00]
Destroys all things[00]
[/spoil]

¿Alguien se anima a echarle un vistazo y confirmar mi hipótesis?

Gracias mil.

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5518
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 18 Dic 2014, 15:42

Mira a ver si los punteros son de 2 bytes y están a partir de 0x16F930 (el primer texto está en 0x171038 y está vacío).

Es la ventaja de tener "juguetes" que no tenéis los demás :twisted: :twisted: :twisted:
[align=center][img]http://desmotivaciones.es/demots/201104 ... ngua_0.jpg[/img]
(pero qué cabronazo soy)[/align]

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 18 Dic 2014, 15:57

¡Brujería!

Pues sí que son esos, sí. ¿Y por qué son de 2 bytes? Si en este archivo todos los que he visto eran de 3 D:

Por cierto, ¿en qué consiste ese "juguete" tuyo? Se me ocurre que puede ser una herramienta que calcula longitudes de segmentos de texto y hace búsquedas relativas de esas longitudes... ¿o me equivoco?

Muchas gracias ;)

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5518
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 18 Dic 2014, 16:06

Pues son de 2 bytes porque ocupan 16 bits. ¡Si es que hacéis cada pregunta tonta! :twisted:

El "juguete" es una de esas cosas que nunca terminaré por falta de tiempo/ganas, y que en realidad sólo queda por añadir una gestión decente de tablas. Es el HUSMEATOR, que luego cambié por HUSMEA porque muchos usaban ya ese nombre. Es una tool que amenaza a los ficheros para que digan dónde están los punteros. Bueno, eso o algo parecido, pero con violencia y ensañamiento, que se note que uno es de malos barrios.

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5518
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 19 Dic 2014, 09:57

A todo esto, ¿dónde hay punteros de 3 bytes? Eso nunca se ha usado en DS porque no tiene sentido. ¡A ver si te tengo que echar por tierra más hipótesis!

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 19 Dic 2014, 12:46

No son de 3 bytes, son de 4, lo que pasa es que como todos tienen un byte 02 los descarto XD

Por ejemplo:

Texto marquee del menú del COMP desde 172FD8 hasta 173195.
Sus punteros: el primero está en 109070 (sería D82F1702). Si te fijas todos acaban (o empiezan, porque es little endian) en 02.

Ocurre lo mismo con el texto que sale al cargar la partida, cuyos punteros están en 103360 (el primero sería 1CE11602). Aquí tienen todos también un 02, como se puede apreciar.

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5518
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 19 Dic 2014, 13:06

Cometes el error típico. Esos punteros son direcciones absolutas de memoria. En la cabecera de las ROM de DS hay un campo que te dice dónde se carga el ARMIPS en memoria, que siempre es una dirección del tipo 0x02NNNNNN, y ese 02 que ves es el byte superior del offset. Viene bien que sea así porque si un texto está en ABCDEFGH sólo tienes que sumar esos 0x02000000 y buscar el valor resultante para ver si en algún sitio está el puntero. Normalmente el ARMIPS se carga en 0x02000000, pero puedes encontrarlo un poco más arriba.

Así que los punteros son de 4 bytes, no de 3. Hala, otra hipótesis que te chafo :twisted:

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 19 Dic 2014, 13:47

Entiendo, supongo que es por eso que esos punteros han salido a la primera y los otros no.

Responder