10405-CAMBIO_MINI_\[RUBY_USA]
#9
eing 12479
Iniciado por cosarara97

Hola! Esta vez traigo algo "útil" de verdad (nah, en realidad no va a servir de nada xD)
Bueno, resulta que después de investigar bastante he encontrado el lugar en la ram donde esta escrito el tileset en el que está el mini.
La dirección es esta: 0x6010000
Y el primer tile del mini es este: 0x6010040
Para verlo podéis usar el tileset viewer, con char base 0x6010000 y la barra de paleta a la izquierda del todo.

El problema es que estos bytes se actualizan cada frame, así que cambiarlos con wbto no sirve :(

Ah por cierto, también he investigado un poco el OAM, y he encontrado lo siguiente:
Si cuando estamos dentro del camión, abrimos el OAM viewer, encontraremos 3 objetos.
1 - Caja
2 - Caja
3 - Mini player

Sobre cada objeto nos da mas información, pero no da el offset de su casilla en el oam (que es como una tabla)
Y yo he encontrado 2 casillas, la de una caja y la del mini :)

Esta es la casilla del mini (en binario porque así está bit por bit)
--- [OBJ Attribute 0] [OBJ Attribute 1] [OBJ Attribute 2]
--- 00111000 10000000 01110000 10000000 00000000 00001000 ---

Segun esta (no censuréis el link) info, estos bits significan lo siguiente:

[quote]OBJ Attribute 0 (R/W)

Bit Expl.
0-7 Y-Coordinate (0-255)
8 Rotation/Scaling Flag (0=Off, 1=On)
When Rotation/Scaling used (Attribute 0, bit 8 set):
9 Double-Size Flag (0=Normal, 1=Double)
When Rotation/Scaling not used (Attribute 0, bit 8 cleared):
9 OBJ Disable (0=Normal, 1=Not displayed)
10-11 OBJ Mode (0=Normal, 1=Semi-Transparent, 2=OBJ Window, 3=Prohibited)
12 OBJ Mosaic (0=Off, 1=On)
13 Colors/Palettes (0=16/16, 1=256/1)
14-15 OBJ Shape (0=Square,1=Horizontal,2=Vertical,3=Prohibited)


OBJ Attribute 1 (R/W)

Bit Expl.
0-8 X-Coordinate (0-511)
When Rotation/Scaling used (Attribute 0, bit 8 set):
9-13 Rotation/Scaling Parameter Selection (0-31)
(Selects one of the 32 Rotation/Scaling Parameters that
can be defined in OAM, for details read next chapter.)
When Rotation/Scaling not used (Attribute 0, bit 8 cleared):
9-11 Not used
12 Horizontal Flip (0=Normal, 1=Mirrored)
13 Vertical Flip (0=Normal, 1=Mirrored)
14-15 OBJ Size (0..3, depends on OBJ Shape, see Attr 0)
Size Square Horizontal Vertical
0 8x8 16x8 8x16
1 16x16 32x8 8x32
2 32x32 32x16 16x32
3 64x64 64x32 32x64

OBJ Attribute 2 (R/W)

Bit Expl.
0-9 Character Name (0-1023=Tile Number)
10-11 Priority relative to BG (0-3; 0=Highest)
12-15 Palette Number (0-15) (Not used in 256 color/1 palette mode)


Mira pongo la casilla otra vez:
--- [OBJ Attribute 0] [OBJ Attribute 1] [OBJ Attribute 2]
--- 00111000 10000000 01110000 10000000 00000000 00001000 ---

Tenemos:
OBJ Attribute 0 - 00111000 10000000
00111000 - Y-Coordinate (0-255)
1 - Rotation/Scaling Flag
0 - Como el anterior es un 1, Double-Size Flag (0=Normal, 1=Double)
00 - OBJ Mode (0=Normal, 1=Semi-Transparent, 2=OBJ Window, 3=Prohibited)
0 - OBJ Mosaic (0=Off, 1=On)
0 - Colors/Palettes (0=16/16, 1=256/1)
00 - OBJ Shape (0=Square,1=Horizontal,2=Vertical,3=Prohibited)


OBJ Attribute 1 - 01110000 10000000
01110000 X-Coordinate (En esto la creo que info es erronea, la X tambien son 8 bits)
1 - Rotation/Scaling Flag
00000 - Rotation/Scaling Parameter Selection (0-31)
______(Selects one of the 32 Rotation/Scaling Parameters that
_______can be defined in OAM, for details read next chapter.)
00 - OBJ Size (0..3, depends on OBJ Shape, see Attr 0)
______Size Square Horizontal Vertical
______0 8x8 16x8 8x16
______1 16x16 32x8 8x32
______2 32x32 32x16 16x32
______3 64x64 64x32 32x64


OBJ Attribute 2 - 00000000 00001000
00000000 00 - Character Name (0-1023=Tile Number)
00 - Priority relative to BG (0-3; 0=Highest)
1000 - Palette Number (0-15) (Not used in 256 color/1 palette mode)


Lógicamente cada uno de los valores que hemos separado hay que convertirlo a decimal o hex según nuestras necesidades, siendo el valor de Y-Coordinate (00111000) 38 en hex y 56 en dec, o el Palette Number (1000) 8 en hex y dec.


Repito que de momento, haber sacado esto no me ha servido de nada, pero seguramente alguien lo pueda usar :)
Bye![/quote]
Fuck, habia escrito una parrafada y se me ha borrado .__.'
Iré al grano, esta investigacion que has realizado cosara, es MUY interesante, por lo cual creo que debería tener su tema aparte, ya que gracias a los datos que nos has facilitados, sacados de las "casillas" de la tabla del OAM, podremos hacer cantidades de cosas, de hecho el mitico "FOLLOWME" se hace mediante la informacion extraida del OAM, ya que nos muestra muchas cosas..

Eso si, cosara, cuando postees tu tema, informanos, de varias cosas que se te han olvidado, y dudas que al leerlo, se me han planteado -pero que está muy bien explicado-

¿De donde has sacado esas "casillas", Del "ROM" o de la "RAM"?
Porque dependiendo donde estén son más faciles de editar o menos, por ende, si están en la ram, tal vez sean dinámicas, ya que pude observar en el OAM, que el primer minisprite que carga, dpende de la coordenada que estés, y de los minis que haya on screen, pero bueno aun se deberia investigar más...

Y la otra duda es, ¿Cómo has logrado encontrar dichas casillas?
Para así en el futuro tema que crees, podamos todos ayudar, mostrando las distintas casillas.


------------------
Por otro lado, referente al "tileset" donde se ubica el mini, la direccion 06010000, he estado observandolo y no he encontrado nada interesante, tal vez sea que no lo he hecho a fondo, pero no he encontrado ninguna rutina que cargue el mini ni nada por el estilo.
Lo único que he encontrado, ha sido dos cosas.

1)Que el rom interpreta los colores invisibles como "00", ya que si te fijas la primera "casilla" es toda de color invisible, y si vas a mirarlo encontrarás puro "00".
En cambio cuando se haya un píxel que no es color invisible, te sale un byte, que no es "00", no sé si será el equivalente al color o qué, pero lo que sé es que variará en cada rom, puesto que no todos los minis ocupan el mismo espacio..

2)Que la carga "Real" del mini, dependerá del tamaño de este, puesto que ahí se mostrarán los bytes que cambiarán, además dependiendo del frame en el que esté.


Buena aportacion, y como te dije creo que debería tener su propio tema, así tal vez quien sabe, poder hacer o intentar hacer nuestro propio followme... u más investigaciones referente a ello.


PD: Mientras tanto, creo que seguiré buscando alguna forma de evitar que se pulse el pause, cuando hay otro mini que no sea el del sexo femenino, o puede que busque la forma de hacer un warp, pero sin efectos, para que se cargue de nuevo todo en la ram, y se refresque, menos donde hicimos el cambio de ese byte, ya que no cambia...
PD2: O tal vez busque la rutina, nosé.. haha ultimamente ando liado investigando otras cosas D: