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í.

Moderador: na_th_an

Avatar de Usuario
elborra
Mensajes: 209
Registrado: Dom, 12 Ene 2014, 14:37

Re: Z88DK (curso Radastan) - Dudas Varias

Mensajepor elborra » Vie, 23 May 2014, 22:16

¿ has probado a hacerle el cast con (int) (_sprite1) ?
Avatar de Usuario
Hark0
Mensajes: 96
Registrado: Mar, 28 Ene 2014, 07:42
Ubicación: Cornellà de Llobregat - Barcelona
Contactar:

Re: Z88DK (curso Radastan) - Dudas Varias

Mensajepor Hark0 » Sab, 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