Registrarse

[RH - Gráficos] Como lograr pokemones de 128x64px??

Estado
Cerrado para nuevas respuestas.

Locust

Aprendiz de leyenda
Hola soy nuevo en el Pokémon hacking, me pregunto si hay forma de ampliar el tamaño de los pokemones.
Se que el tileset tiene 128x128px dividido en 4 partes, 2 para la vista frontal y 2 para la vista trasera de cada pokemon respectivamente, hay alguna forma de en vez de renderizar un Sprite de 64x64, renderizar uno de 128x64??? Se agradecería cualquier consejo documentación o lo que sea

ejemplo adjunto de lo que busco:
what I need.png


Y sí, es para un romhack de pokemon-digimon
 

marios92

Aprendiz de leyenda
As far as i know, you cant just insert sprites bigger than 64x64 directly, because its OAM limit of GBA.
You have to write a custom function to allow more sprites "stitched" togheter to create the illusion of bigger sprites. (you have to face the hardware limit too: since in double battles there's allowed 4 mons of 64x64, im almost sure that with sprites 64x128 you cant use Double Battles, and with even bigger ones you have to draw only one mon at once on screen - like Bug Master genius did.)
I always wanted to know that too, so i cant help you XD. The only one who successfully did that was Bug Master, who disappeared time ago.
 

Lunos

Enfrentando a La Organización
Miembro insignia
Hola soy nuevo en el Pokémon hacking, me pregunto si hay forma de ampliar el tamaño de los pokemones.
Se que el tileset tiene 128x128px dividido en 4 partes, 2 para la vista frontal y 2 para la vista trasera de cada pokemon respectivamente, hay alguna forma de en vez de renderizar un Sprite de 64x64, renderizar uno de 128x64??? Se agradecería cualquier consejo documentación o lo que sea

ejemplo adjunto de lo que busco:Ver el archivo adjunto 7140

Y sí, es para un romhack de pokemon-digimon
No, no es posible mostrar un sprite de 128x64 en pantalla como tal. El maximo tamaño de un sprite que la GBA puede leer es 64x64, hasta donde yo sé.
Para visualizar sprites mas grandes, necesitarás partir el sprite en partes mas chicas y mostrarlos así, o escribir codigo que lo haga por ti.

Un ejemplo rapido que puedo mostrar es con un sprite de 112x112 px que inserté por pura curiosidad usando los decomps hace un tiempo.
Yo separé este sprite de 112x112 en 4 sprites de 64x64 para poderlo mostrar en pantalla.
 

Locust

Aprendiz de leyenda
Well I've suppose that already, 0 double battles and shiny pokemon, but that "only one person know" has truly disappoint me D,:

No, no es posible mostrar un sprite de 128x64 en pantalla como tal. El maximo tamaño de un sprite que la GBA puede leer es 64x64, hasta donde yo sé.
Para visualizar sprites mas grandes, necesitarás partir el sprite en partes mas chicas y mostrarlos así, o escribir codigo que lo haga por ti.

Un ejemplo rapido que puedo mostrar es con un sprite de 112x112 px que inserté por pura curiosidad usando los decomps hace un tiempo.
Yo separé este sprite de 112x112 en 4 sprites de 64x64 para poderlo mostrar en pantalla.
Ok this sounds better, I know already that GBA split sprites bigger than 64x64 so I'll use 2 parts here . Your example looks really good, can you share the documentation/ software you use????
 

marios92

Aprendiz de leyenda
Well I've suppose that already, 0 double battles and shiny pokemon, but that "only one person know" has truly disappoint me D,:
I think shiny can be inserted, but im not sure...
"but that "only one person know" has truly disappoint me D,: " What do you mean? You know someone else did this? :O

No, no es posible mostrar un sprite de 128x64 en pantalla como tal. El maximo tamaño de un sprite que la GBA puede leer es 64x64, hasta donde yo sé.
Para visualizar sprites mas grandes, necesitarás partir el sprite en partes mas chicas y mostrarlos así, o escribir codigo que lo haga por ti.

Un ejemplo rapido que puedo mostrar es con un sprite de 112x112 px que inserté por pura curiosidad usando los decomps hace un tiempo.
Yo separé este sprite de 112x112 en 4 sprites de 64x64 para poderlo mostrar en pantalla.
But in Battle is different, right? We cant use script with loading sprites in 4 vars and coordinates to display 4 sprites stitched togheter, and have in mind that we cant display both battlers with such a big sizes.
 

Locust

Aprendiz de leyenda
I think shiny can be inserted, but im not sure...
"but that "only one person know" has truly disappoint me D,: " What do you mean? You know someone else did this? :O
Realmente no, pero estoy trabajando en un romhack de Castlevania para GBA y el programa que uso me permite modificar los sprites en pantalla, siempre y cuando los redireccione en memoria, porque por lo general esas modificaciones ocupan más espacio, pero en general me permite hacer sprites tan grandes como el tileset me deje, pero para eso hay programas dedicados para esas roms específicamente. Para pokemon no tengo ni idea
 
Última edición:

Lunos

Enfrentando a La Organización
Miembro insignia
Ok this sounds better, I know already that GBA split sprites bigger than 64x64 so I'll use 2 parts here . Your example looks really good, can you share the documentation/ software you use????
I linked the relevant code right there, where it says "inserté por pura curiosidad usando los decomps ".

The latest 2 commits are what it all comes down to.
The first one contains all the code that allowed me to render the sprite in the overworld, and the second commit is where I inserted the sprite split in 4, the palette and where I called it in one of the game's scripts as a test.
But in Battle is different, right? We cant use script with loading sprites in 4 vars and coordinates to display 4 sprites stitched togheter, and have in mind that we cant display both battlers with such a big sizes.
Yeah, that is correct. To clarify, I never said you could use an overworld script in battle, but the point still stands.
You still need to either split the sprite in 4, or write code that handles it on its own.
 

Locust

Aprendiz de leyenda
I linked the relevant code right there, where it says "inserté por pura curiosidad usando los decomps ".

The latest 2 commits are what it all comes down to.
The first one contains all the code that allowed me to render the sprite in the overworld, and the second commit is where I inserted the sprite split in 4, the palette and where I called it in one of the game's scripts as a test.

Yeah, that is correct. To clarify, I never said you could use an overworld script in battle, but the point still stands.
You still need to either split the sprite in 4, or write code that handles it on its own.
Puedes ser mas específico? 😅 o sea entiendo la parte de dividir el Sprite en 4 o escribir el código para eso pero no el cómo, y tu documentación en github puede estar muy bien pero no tengo ni la más mínima idea de que dice, ni creo que lo pueda usar en las batallas, algún consejo de donde empezar a buscar?
 

marios92

Aprendiz de leyenda
Yeah, that is correct. To clarify, I never said you could use an overworld script in battle, but the point still stands.
You still need to either split the sprite in 4, or write code that handles it on its own.
Differently from overworld, in Battle is needed much more than just write a code to handle 4 splitted sprites. Or we use 4 splitted sprites and make one battler at time on screen, or it would be cool to make only player mon backsprite with 2 sprites, to make the illusion of being close to screen without seeing only the head of the mon XD (what i hate of pre-Gen V backsprites lol) and get rid off of Double Battles obviously (so just for a different hack experience. This is not recommended for competitive hacks which use a lot of Doubles)
 

Locust

Aprendiz de leyenda
Differently from overworld, in Battle is needed much more than just write a code to handle 4 splitted sprites. Or we use 4 splitted sprites and make one battler at time on screen, or it would be cool to make only player mon backsprite with 2 sprites, to make the illusion of being close to screen without seeing only the head of the mon XD (what i hate of pre-Gen V backsprites lol) and get rid off of Double Battles obviously (so just for a different hack experience. This is not recommended for competitive hacks which use a lot of Doubles)
Yeah, but how? I mean how you do that? There's some program for literally write and say, hey now I want to make this pokemon use this 2 sprites in screen at the same time? And I think already about use double battles and I want this to be the most competent hack as posible so that's not an option :(
 

marios92

Aprendiz de leyenda
Yeah, but how? I mean how you do that? There's some program for literally write and say, hey now I want to make this pokemon use this 2 sprites in screen at the same time? And I think already about use double battles and I want this to be the most competent hack as posible so that's not an option :(
I told you, i dont know; im looking forward to that feature too since Bug Master showed his works XD (he did splitted 4 frames and animated as well).
I only know a bit of theory, about technical limits, but not of how actually make a code to do that.

To make the point: Here what Bug did 5 years ago...
 

Eaas

Profesional de WaH
No, no es posible mostrar un sprite de 128x64 en pantalla como tal. El maximo tamaño de un sprite que la GBA puede leer es 64x64, hasta donde yo sé.
Para visualizar sprites mas grandes, necesitarás partir el sprite en partes mas chicas y mostrarlos así, o escribir codigo que lo haga por ti.

Un ejemplo rapido que puedo mostrar es con un sprite de 112x112 px que inserté por pura curiosidad usando los decomps hace un tiempo.
Yo separé este sprite de 112x112 en 4 sprites de 64x64 para poderlo mostrar en pantalla.
Si, el Maximo es de 64x64, pero sino es para la batalla puede cargar un Tileset en un bg.
El tileset puede llegar a cubrir 240x160.

Se puede editar, el largo y ancho en que se muestra de desde la ram y Mostar dicho tileset son necesidad de estar conformando tilemap.

Se puede cargar el offset 0x04000010 y el 0x04000012, estos son los encargados de las dimensiones del bg 0 por ejemplo.

Las dimensiones de dichos se guardan en un byte, y se puede editar antes de Mostar el tileset, ya después cargas el tileset conformado con dichas dimensiones, de tal manera que sería lo mismo que mostra un sprite.
 

Locust

Aprendiz de leyenda
Si, el Maximo es de 64x64, pero sino es para la batalla puede cargar un Tileset en un bg.
El tileset puede llegar a cubrir 240x160.

Se puede editar, el largo y ancho en que se muestra de desde la ram y Mostar dicho tileset son necesidad de estar conformando tilemap.

Se puede cargar el offset 0x04000010 y el 0x04000012, estos son los encargados de las dimensiones del bg 0 por ejemplo.

Las dimensiones de dichos se guardan en un byte, y se puede editar antes de Mostar el tileset, ya después cargas el tileset conformado con dichas dimensiones, de tal manera que sería lo mismo que mostra un sprite.
Si pero eso solo me serviría para combates especificos, no creo que pueda tener 1 background por monstruo atrapable, a parte no se verá afectado por los efectos especiales de los ataques (hablo de las partículas y tal) mi plan es usar sprites que ocupen una buena porción de la pantalla tanto para el enemigo como para el jugador. Imagina que haga un escenario basado en X monstruo y cuando lo intercambio lo que sale es una porción nada más porque parte del escenario es el cuerpo del que retiré
 

Lunos

Enfrentando a La Organización
Miembro insignia
Differently from overworld, in Battle is needed much more than just write a code to handle 4 splitted sprites.
I mean, not really?
When you water it down, that's all that is needed; to write code that can split sprites of a bigger resolution than 64x64 for you.
It is surely much more difficult to do that for battles compared to the overworld though. That much is obvious.
Puedes ser mas específico? 😅 o sea entiendo la parte de dividir el Sprite en 4 o escribir el código para eso pero no el cómo, y tu documentación en github puede estar muy bien pero no tengo ni la más mínima idea de que dice, ni creo que lo pueda usar en las batallas, algún consejo de donde empezar a buscar?
No, el ejemplo que mostré no te servirá para las batallas. Simplemente lo mostré para explicar mi punto.
Yo no te puedo explicar como lograr el resultado que quieres, mucho menos para batallas, porque no tengo ni pajolera idea al respecto.
Me imagino que tú haces ROM Hacking Binario a juzgar por la lamina de 256x64 que pusiste en el post principal. Pues lo vas a tener chungisimo, eso seguro.

Un usuario llamado FroggerestSpirit escribió codigo para cargar sprites de 80x80 en batalla usando Pokeemerald, e imagino que replicarlo en binario pues te costará lo que no está escrito. Tendrias que hacer una inyección de codigo similar a el DPE, el CFRU, y el resto de inyecciones de codigo disponibles para estos juegos, que fueron escritas por multiples personas.
Es decir, tendrás que armarte una estructura que utilice Python y devkitARM, proveer offsets y funciones, modificarlas posteriormente como lo veas necesario e insertarlas en espacio vacio, con sus respectivos hooks y tal.

Más que eso no te puedo decir.
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba