Z88DK (curso Radastan) - Dudas Varias

Soporte técnico sobre los lanzamientos de MojonTwins y comentarios sobre los güegos. Ofrecemos soporte técnico con Fourspriter, te ayudamos con ZX Basic o Z88DK, te damos pistas some cómo saltarse un bicho y cosas así.

Moderator:na_th_an

User avatar
elborra
Posts:209
Joined:Sun, 12 Jan 2014, 14:37
Re: Z88DK (curso Radastan) - Dudas Varias

Postby elborra » Fri, 23 May 2014, 22:16

¿ has probado a hacerle el cast con (int) (_sprite1) ?

User avatar
Hark0
Posts:96
Joined:Tue, 28 Jan 2014, 07:42
Location:Cornellà de Llobregat - Barcelona
Contact:

Re: Z88DK (curso Radastan) - Dudas Varias

Postby Hark0 » Sat, 24 May 2014, 08:25

$this->bbcode_second_pass_quote('na_th_an', 'T')e avisa por si acaso te has equivocado. Como no te has equivocado, puedes evitarlo. De todos modos, te sale porque estás asignando punteros a un array de enteros. En esta plataforma no importa, porque los punteros son valores de 16 bits, y los enteros también, por lo que los tipos son compatibles y el programa no te casca... Sin embargo en otras no tienen por qué ser compatibles (por ejemplo, en MSDOS, si estás en modo large el puntero puede ser de 32 bits y los enteros tienen 16...). Por eso no es buena práctica de programación en C, y un buen compilador te avisa.

Lo suyo es, por tanto, hacer las cosas bien para que el compilador no se queje.

Cada extern unsigned char [] es en realidad un puntero a unsigned char. Si, teniendo en cuenta esto, haces tu array como un array de punteros a unsigned char, y problema solucionado:

$this->bbcode_second_pass_code('', 'unsigned char *matriz_direccion_sprites [] = {
sprite1, sprite2, sprite3
}')

Así, cuando llamas a la función, que espera un unsigned char *, con "matriz_direccion_sprites [1]", por ejemplo, estarás pasándole precísamente un unsigned char *, ya que la matriz contiene elementos de este tipo.

En ese mismo sentido iba el consejo que te di. La función que usas espera un puntero, o sea, una dirección de memoria. Teniendo la dirección de memoria del primer elemento (sprite0 en tu ejemplo de antes) calcular la de los siguientes es cuestión de sumar y multiplicar.


Aja!... entiendo... muchas gracias por la aclaración. ;)
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica