Anonymous escribió:I apologize [...]
Traducción:
Lamento usar de nuevo el inglés.

No quiero contaminar este foro con un montón de mensajes en inglés, así que prometo que volveré al lurking tras este mensaje.
El espacio extra se puede añadir simplemente declarando un tamaño mayor en SevenuP. Suma 8 pixels al tamaño X y 8 pixels al tamaño Y, dejando la última columna y la última fila en blanco cuando dibujes el sprite.
Sobre el por qué es esto necesario, creo que no lo he explicado con claridad en ninguna parte, así que lo haré aquí. El motor de splib2 está orientado a caracter; hacerlo así le permite actuar como un "actualizador diferencial" (dibujando solo las cosas que cambian) y permite dibujar la pantalla sin parpadeos *y* sin tener que sincronizar con el raster. Esta última cualidad es única y lo hace particularmente apropiado para el uso con un lenguaje de alto nivel como el C.
Al declarar el tamaño de un sprite, por ejemplo 2x2 caracteres, le dices a splib2 que dibuje un sprite de 2 caracteres de ancho y 2 de alto. Esto está bien si solo dibujas el sprite en coordenadas exactas de caracteres. Pero si intentas mover el sprite a la derecha, digamos 3 pixels, el motor de splib2 rotará el gráfico en una matriz de 2x2 caracteres a la derecha 3 pixels. Los últimos 3 pixels de cada fila horizontal serán cortados por esta operación. Si en lugar de eso declaramos que el sprite sea de 3 caracteres de ancho, esos 3 pixels finales de cada fila horizontal serán dibujados como los 3 pixeles más a la izquierda en esta última columna.
Cuando un sprite se dibuja en una fracción de pixel más abajo en el caracter (digamos 5 pixels), los punteros gráficos del sprite se mueven hacia atrás 2*5 bytes. Por ejemplo, el motor cambiará el puntero _bicho1 a bicho1-10, y _bicho2 a _bicho2-10, etc... Cuando el sprite se dibuje aparecerá movido hacia abajo por 5 pixels. El cambio de _bicho1 a _bicho1-10 en este ejemplo debe dejar claro por qué se necesitan 7 líneas de pixels por encima de _bicho1 en la definición.
También te darás cuenta de que si los punteros gráficos se mueven hacia arriba en la memoria, los gráficos en las líneas inferiores del sprite no se dibujarán, quedando cortadas. Por eso el sprite debe ser declarado con un caracter extra de alto, para que esos pixels cortados en la parte de abajo del sprite siempre se dibujen.
La siguiente versión de splib hará todo esto de forma mucho más limpia y mucho más amigable con la memoria. He leído el primer artículo de Siew en Magazine ZX y lo encontré excelente. Me siento mal porque las cosas vayan a cambiar pronto de forma que va a tener que retroceder y volver a explicar una vez más como se definen los sprites.
RANDOMIZE escribió:Y ya puestos cuando hablamos de "sprites" nos referimos a lo mismo ¿no?, es decir a una composicion de uno varios caracteres que forman el dibujillo.
En este caso sí, aunque personalmente yo prefiero reservar la palabra "sprite" para los gráficos animados (o sea, de más de un frame), y usar la palabra "gráfico" para lo que aquí le hemos estado llamando sprite todo el rato.
RANDOMIZE escribió:Acabo de comprobar que se tiene que seguir añadiendo (tambien en la ultima version -SritePack 2.2-) esos caracteres vacios de los que hablaba en un mensaje anterior para poder ver un movimiento correcto del sprite. Estaría bien que pudieses exportar todo esto con el SevenuP.
Como ya ha dicho Alvin, puedes hacerlo definiendo el espacio extra al principio, y además pronto habrá versión nueva de la librería que no necesitará el espacio adicional, así que me parece un poco absurdo añadirle eso de los espacios a estas alturas.
EDIT: Corregidos fallos.