Use UTF-8 across all codebase

This has been done with:

    for f in `ls`; do
        iconv -f ISO-8859-1 -t UTF-8//TRANSLIT "$f" -o "$f".2;
        mv "$f".2 "$f"
    done
This commit is contained in:
Antonio Niño Díaz 2023-04-13 18:51:09 +01:00
parent fb2d400e39
commit 61fde2b572
45 changed files with 476 additions and 476 deletions

View File

@ -1,2 +0,0 @@
Descargo de responsabilidad
El software contenido en este paquete está exento de cualquier garantía. El usuario ejecutara este software bajo su total responsabilidad, asumiendo posibles fallos en su funcionamiento, pérdidas de datos o daños en el hardware u otro software y los posibles costes que puedan derivarse. El usuario con la ejecución del mismo asume que ha leído y acepta los términos de esta licencia.

View File

@ -0,0 +1,2 @@
Descargo de responsabilidad
El software contenido en este paquete está exento de cualquier garantía. El usuario ejecutara este software bajo su total responsabilidad, asumiendo posibles fallos en su funcionamiento, pérdidas de datos o daños en el hardware u otro software y los posibles costes que puedan derivarse. El usuario con la ejecución del mismo asume que ha leído y acepta los términos de esta licencia.

View File

@ -1,84 +1,84 @@
Creative Commons
Código Legal de Creative Commons
Reconocimiento-NoComercial 3.0 España
CREATIVE COMMONS CORPORATION NO ES UN DESPACHO DE ABOGADOS Y NO PROPORCIONA SERVICIOS JURÍDICOS. LA DISTRIBUCIÓN DE ESTA LICENCIA NO CREA UNA RELACIÓN ABOGADO-CLIENTE. CREATIVE COMMONS PROPORCIONA ESTA INFORMACIÓN TAL CUAL (ON AN "AS-IS" BASIS). CREATIVE COMMONS NO OFRECE GARANTÍA ALGUNA RESPECTO DE LA INFORMACIÓN PROPORCIONADA, NI ASUME RESPONSABILIDAD ALGUNA POR DAÑOS PRODUCIDOS A CONSECUENCIA DE SU USO.
Código Legal de Creative Commons
Reconocimiento-NoComercial 3.0 España
CREATIVE COMMONS CORPORATION NO ES UN DESPACHO DE ABOGADOS Y NO PROPORCIONA SERVICIOS JURÍDICOS. LA DISTRIBUCIÓN DE ESTA LICENCIA NO CREA UNA RELACIÓN ABOGADO-CLIENTE. CREATIVE COMMONS PROPORCIONA ESTA INFORMACIÓN TAL CUAL (ON AN "AS-IS" BASIS). CREATIVE COMMONS NO OFRECE GARANTÍA ALGUNA RESPECTO DE LA INFORMACIÓN PROPORCIONADA, NI ASUME RESPONSABILIDAD ALGUNA POR DAÑOS PRODUCIDOS A CONSECUENCIA DE SU USO.
Licencia
LA OBRA O LA PRESTACIÓN (SEGÚN SE DEFINEN MÁS ADELANTE) SE PROPORCIONA BAJO LOS TÉRMINOS DE ESTA LICENCIA PÚBLICA DE CREATIVE COMMONS (CCPL O LICENCIA). LA OBRA O LA PRESTACIÓN SE ENCUENTRA PROTEGIDA POR LA LEY ESPAÑOLA DE PROPIEDAD INTELECTUAL Y/O CUALESQUIERA OTRAS NORMAS QUE RESULTEN DE APLICACIÓN. QUEDA PROHIBIDO CUALQUIER USO DE LA OBRA O PRESTACIÓN DIFERENTE A LO AUTORIZADO BAJO ESTA LICENCIA O LO DISPUESTO EN LA LEY DE PROPIEDAD INTELECTUAL.
LA OBRA O LA PRESTACIÓN (SEGÚN SE DEFINEN MÁS ADELANTE) SE PROPORCIONA BAJO LOS TÉRMINOS DE ESTA LICENCIA PÚBLICA DE CREATIVE COMMONS (CCPL O LICENCIA). LA OBRA O LA PRESTACIÓN SE ENCUENTRA PROTEGIDA POR LA LEY ESPAÑOLA DE PROPIEDAD INTELECTUAL Y/O CUALESQUIERA OTRAS NORMAS QUE RESULTEN DE APLICACIÓN. QUEDA PROHIBIDO CUALQUIER USO DE LA OBRA O PRESTACIÓN DIFERENTE A LO AUTORIZADO BAJO ESTA LICENCIA O LO DISPUESTO EN LA LEY DE PROPIEDAD INTELECTUAL.
MEDIANTE EL EJERCICIO DE CUALQUIER DERECHO SOBRE LA OBRA O LA PRESTACIÓN, USTED ACEPTA Y CONSIENTE LAS LIMITACIONES Y OBLIGACIONES DE ESTA LICENCIA, SIN PERJUICIO DE LA NECESIDAD DE CONSENTIMIENTO EXPRESO EN CASO DE VIOLACIÓN PREVIA DE LOS TÉRMINOS DE LA MISMA. EL LICENCIADOR LE CONCEDE LOS DERECHOS CONTENIDOS EN ESTA LICENCIA, SIEMPRE QUE USTED ACEPTE LOS PRESENTES TÉRMINOS Y CONDICIONES.
MEDIANTE EL EJERCICIO DE CUALQUIER DERECHO SOBRE LA OBRA O LA PRESTACIÓN, USTED ACEPTA Y CONSIENTE LAS LIMITACIONES Y OBLIGACIONES DE ESTA LICENCIA, SIN PERJUICIO DE LA NECESIDAD DE CONSENTIMIENTO EXPRESO EN CASO DE VIOLACIÓN PREVIA DE LOS TÉRMINOS DE LA MISMA. EL LICENCIADOR LE CONCEDE LOS DERECHOS CONTENIDOS EN ESTA LICENCIA, SIEMPRE QUE USTED ACEPTE LOS PRESENTES TÉRMINOS Y CONDICIONES.
1. Definiciones
a.La obra es la creación literaria, artística o científica ofrecida bajo los términos de esta licencia.
b.En esta licencia se considera una prestación cualquier interpretación, ejecución, fonograma, grabación audiovisual, emisión o transmisión, mera fotografía u otros objetos protegidos por la legislación de propiedad intelectual vigente aplicable.
c.La aplicación de esta licencia a una colección (definida más adelante) afectará únicamente a su estructura en cuanto forma de expresión de la selección o disposición de sus contenidos, no siendo extensiva a éstos. En este caso la colección tendrá la consideración de obra a efectos de esta licencia.
a.La obra es la creación literaria, artística o científica ofrecida bajo los términos de esta licencia.
b.En esta licencia se considera una prestación cualquier interpretación, ejecución, fonograma, grabación audiovisual, emisión o transmisión, mera fotografía u otros objetos protegidos por la legislación de propiedad intelectual vigente aplicable.
c.La aplicación de esta licencia a una colección (definida más adelante) afectará únicamente a su estructura en cuanto forma de expresión de la selección o disposición de sus contenidos, no siendo extensiva a éstos. En este caso la colección tendrá la consideración de obra a efectos de esta licencia.
d.El titular originario es:
i.En el caso de una obra literaria, artística o científica, la persona natural o grupo de personas que creó la obra.
i.En el caso de una obra literaria, artística o científica, la persona natural o grupo de personas que creó la obra.
ii.En el caso de una obra colectiva, la persona que la edite y divulgue bajo su nombre, salvo pacto contrario.
iii.En el caso de una interpretación o ejecución, el actor, cantante, músico, o cualquier otra persona que represente, cante, lea, recite, interprete o ejecute en cualquier forma una obra.
iv.En el caso de un fonograma, el productor fonográfico, es decir, la persona natural o jurídica bajo cuya iniciativa y responsabilidad se realiza por primera vez una fijación exclusivamente sonora de la ejecución de una obra o de otros sonidos.
v.En el caso de una grabación audiovisual, el productor de la grabación, es decir, la persona natural o jurídica que tenga la iniciativa y asuma la responsabilidad de las fijaciones de un plano o secuencia de imágenes, con o sin sonido.
vi.En el caso de una emisión o una transmisión, la entidad de radiodifusión.
vii.En el caso de una mera fotografía, aquella persona que la haya realizado.
viii.En el caso de otros objetos protegidos por la legislación de propiedad intelectual vigente, la persona que ésta señale.
e.Se considerarán obras derivadas aquellas obras creadas a partir de la licenciada, como por ejemplo: las traducciones y adaptaciones; las revisiones, actualizaciones y anotaciones; los compendios, resúmenes y extractos; los arreglos musicales y, en general, cualesquiera transformaciones de una obra literaria, artística o científica. Para evitar la duda, si la obra consiste en una composición musical o grabación de sonidos, la sincronización temporal de la obra con una imagen en movimiento (synching) será considerada como una obra derivada a efectos de esta licencia.
f.Tendrán la consideración de colecciones la recopilación de obras ajenas, de datos o de otros elementos independientes como las antologías y las bases de datos que por la selección o disposición de sus contenidos constituyan creaciones intelectuales. La mera incorporación de una obra en una colección no dará lugar a una derivada a efectos de esta licencia.
g.El licenciador es la persona o la entidad que ofrece la obra o prestación bajo los términos de esta licencia y le cede los derechos de explotación de la misma conforme a lo dispuesto en ella.
h.Usted es la persona o la entidad que ejercita los derechos concedidos mediante esta licencia y que no ha violado previamente los términos de la misma con respecto a la obra o la prestación, o que ha recibido el permiso expreso del licenciador de ejercitar los derechos concedidos mediante esta licencia a pesar de una violación anterior.
i.La transformación de una obra comprende su traducción, adaptación y cualquier otra modificación en su forma de la que se derive una obra diferente. La creación resultante de la transformación de una obra tendrá la consideración de obra derivada.
j.Se entiende por reproducción la fijación directa o indirecta, provisional o permanente, por cualquier medio y en cualquier forma, de toda la obra o la prestación o de parte de ella, que permita su comunicación o la obtención de copias.
k.Se entiende por distribución la puesta a disposición del público del original o de las copias de la obra o la prestación, en un soporte tangible, mediante su venta, alquiler, préstamo o de cualquier otra forma.
l.Se entiende por comunicación pública todo acto por el cual una pluralidad de personas, que no pertenezcan al ámbito doméstico de quien la lleva a cabo, pueda tener acceso a la obra o la prestación sin previa distribución de ejemplares a cada una de ellas. Se considera comunicación pública la puesta a disposición del público de obras o prestaciones por procedimientos alámbricos o inalámbricos, de tal forma que cualquier persona pueda acceder a ellas desde el lugar y en el momento que elija.
m.La explotación de la obra o la prestación comprende la reproducción, la distribución, la comunicación pública y, en su caso, la transformación.
2. Límites de los derechos. Nada en esta licencia pretende reducir o restringir cualesquiera límites legales de los derechos exclusivos del titular de los derechos de propiedad intelectual de acuerdo con la Ley de propiedad intelectual o cualesquiera otras leyes aplicables, ya sean derivados de usos legítimos, tales como la copia privada o la cita, u otras limitaciones como la resultante de la primera venta de ejemplares (agotamiento).
iii.En el caso de una interpretación o ejecución, el actor, cantante, músico, o cualquier otra persona que represente, cante, lea, recite, interprete o ejecute en cualquier forma una obra.
iv.En el caso de un fonograma, el productor fonográfico, es decir, la persona natural o jurídica bajo cuya iniciativa y responsabilidad se realiza por primera vez una fijación exclusivamente sonora de la ejecución de una obra o de otros sonidos.
v.En el caso de una grabación audiovisual, el productor de la grabación, es decir, la persona natural o jurídica que tenga la iniciativa y asuma la responsabilidad de las fijaciones de un plano o secuencia de imágenes, con o sin sonido.
vi.En el caso de una emisión o una transmisión, la entidad de radiodifusión.
vii.En el caso de una mera fotografía, aquella persona que la haya realizado.
viii.En el caso de otros objetos protegidos por la legislación de propiedad intelectual vigente, la persona que ésta señale.
e.Se considerarán obras derivadas aquellas obras creadas a partir de la licenciada, como por ejemplo: las traducciones y adaptaciones; las revisiones, actualizaciones y anotaciones; los compendios, resúmenes y extractos; los arreglos musicales y, en general, cualesquiera transformaciones de una obra literaria, artística o científica. Para evitar la duda, si la obra consiste en una composición musical o grabación de sonidos, la sincronización temporal de la obra con una imagen en movimiento (synching) será considerada como una obra derivada a efectos de esta licencia.
f.Tendrán la consideración de colecciones la recopilación de obras ajenas, de datos o de otros elementos independientes como las antologías y las bases de datos que por la selección o disposición de sus contenidos constituyan creaciones intelectuales. La mera incorporación de una obra en una colección no dará lugar a una derivada a efectos de esta licencia.
g.El licenciador es la persona o la entidad que ofrece la obra o prestación bajo los términos de esta licencia y le cede los derechos de explotación de la misma conforme a lo dispuesto en ella.
h.Usted es la persona o la entidad que ejercita los derechos concedidos mediante esta licencia y que no ha violado previamente los términos de la misma con respecto a la obra o la prestación, o que ha recibido el permiso expreso del licenciador de ejercitar los derechos concedidos mediante esta licencia a pesar de una violación anterior.
i.La transformación de una obra comprende su traducción, adaptación y cualquier otra modificación en su forma de la que se derive una obra diferente. La creación resultante de la transformación de una obra tendrá la consideración de obra derivada.
j.Se entiende por reproducción la fijación directa o indirecta, provisional o permanente, por cualquier medio y en cualquier forma, de toda la obra o la prestación o de parte de ella, que permita su comunicación o la obtención de copias.
k.Se entiende por distribución la puesta a disposición del público del original o de las copias de la obra o la prestación, en un soporte tangible, mediante su venta, alquiler, préstamo o de cualquier otra forma.
l.Se entiende por comunicación pública todo acto por el cual una pluralidad de personas, que no pertenezcan al ámbito doméstico de quien la lleva a cabo, pueda tener acceso a la obra o la prestación sin previa distribución de ejemplares a cada una de ellas. Se considera comunicación pública la puesta a disposición del público de obras o prestaciones por procedimientos alámbricos o inalámbricos, de tal forma que cualquier persona pueda acceder a ellas desde el lugar y en el momento que elija.
m.La explotación de la obra o la prestación comprende la reproducción, la distribución, la comunicación pública y, en su caso, la transformación.
2. Límites de los derechos. Nada en esta licencia pretende reducir o restringir cualesquiera límites legales de los derechos exclusivos del titular de los derechos de propiedad intelectual de acuerdo con la Ley de propiedad intelectual o cualesquiera otras leyes aplicables, ya sean derivados de usos legítimos, tales como la copia privada o la cita, u otras limitaciones como la resultante de la primera venta de ejemplares (agotamiento).
3. Concesión de licencia. Conforme a los términos y a las condiciones de esta licencia, el licenciador concede, por el plazo de protección de los derechos de propiedad intelectual y a título gratuito, una licencia de ámbito mundial no exclusiva que incluye los derechos siguientes:
3. Concesión de licencia. Conforme a los términos y a las condiciones de esta licencia, el licenciador concede, por el plazo de protección de los derechos de propiedad intelectual y a título gratuito, una licencia de ámbito mundial no exclusiva que incluye los derechos siguientes:
a.Derecho de reproducción, distribución y comunicación pública de la obra o la prestación.
b.Derecho a incorporar la obra o la prestación en una o más colecciones.
c.Derecho de reproducción, distribución y comunicación pública de la obra o la prestación lícitamente incorporada en una colección.
d.Derecho de transformación de la obra para crear una obra derivada siempre y cuando se incluya en ésta una indicación de la transformación o modificación efectuada.
e.Derecho de reproducción, distribución y comunicación pública de obras derivadas creadas a partir de la obra licenciada.
f.Derecho a extraer y reutilizar la obra o la prestación de una base de datos.
Estos derechos se pueden ejercitar en todos los medios y formatos, tangibles o intangibles, conocidos en el momento de la concesión de esta licencia. Los derechos mencionados incluyen el derecho a efectuar las modificaciones que sean precisas técnicamente para el ejercicio de los derechos en otros medios y formatos. Todos los derechos no concedidos expresamente por el licenciador quedan reservados, incluyendo, a título enunciativo pero no limitativo, los establecidos en la sección 4.e, así como los derechos morales irrenunciables reconocidos por la ley aplicable. En la medida en que el licenciador ostente derechos exclusivos previstos por la ley nacional vigente que implementa la directiva europea en materia de derecho sui generis sobre bases de datos, renuncia expresamente a dichos derechos exclusivos.
a.Derecho de reproducción, distribución y comunicación pública de la obra o la prestación.
b.Derecho a incorporar la obra o la prestación en una o más colecciones.
c.Derecho de reproducción, distribución y comunicación pública de la obra o la prestación lícitamente incorporada en una colección.
d.Derecho de transformación de la obra para crear una obra derivada siempre y cuando se incluya en ésta una indicación de la transformación o modificación efectuada.
e.Derecho de reproducción, distribución y comunicación pública de obras derivadas creadas a partir de la obra licenciada.
f.Derecho a extraer y reutilizar la obra o la prestación de una base de datos.
Estos derechos se pueden ejercitar en todos los medios y formatos, tangibles o intangibles, conocidos en el momento de la concesión de esta licencia. Los derechos mencionados incluyen el derecho a efectuar las modificaciones que sean precisas técnicamente para el ejercicio de los derechos en otros medios y formatos. Todos los derechos no concedidos expresamente por el licenciador quedan reservados, incluyendo, a título enunciativo pero no limitativo, los establecidos en la sección 4.e, así como los derechos morales irrenunciables reconocidos por la ley aplicable. En la medida en que el licenciador ostente derechos exclusivos previstos por la ley nacional vigente que implementa la directiva europea en materia de derecho sui generis sobre bases de datos, renuncia expresamente a dichos derechos exclusivos.
4. Restricciones. La concesión de derechos que supone esta licencia se encuentra sujeta y limitada a las restricciones siguientes:
4. Restricciones. La concesión de derechos que supone esta licencia se encuentra sujeta y limitada a las restricciones siguientes:
a.Usted puede reproducir, distribuir o comunicar públicamente la obra o prestación solamente bajo los términos de esta licencia y debe incluir una copia de la misma, o su Identificador Uniforme de Recurso (URI). Usted no puede ofrecer o imponer ninguna condición sobre la obra o prestación que altere o restrinja los términos de esta licencia o el ejercicio de sus derechos por parte de los concesionarios de la misma. Usted no puede sublicenciar la obra o prestación. Usted debe mantener intactos todos los avisos que se refieran a esta licencia y a la ausencia de garantías. Usted no puede reproducir, distribuir o comunicar públicamente la obra o prestación con medidas tecnológicas que controlen el acceso o el uso de una manera contraria a los términos de esta licencia. Esta sección 4.a también afecta a la obra o prestación incorporada en una colección, pero ello no implica que ésta en su conjunto quede automáticamente o deba quedar sujeta a los términos de la misma. En el caso que le sea requerido, previa comunicación del licenciador, si usted incorpora la obra en una colección y/o crea una obra derivada, deberá quitar cualquier crédito requerido en el apartado 4.c, en la medida de lo posible.
b.Usted no puede ejercitar ninguno de los derechos concedidos en la sección 3 anterior de manera que pretenda principalmente o su actuación se dirija a la obtención de un beneficio mercantil o una contraprestación monetaria. El intercambio de la obra por otras obras protegidas por la propiedad intelectual mediante sistemas de compartir archivos no se considerará como una manera que pretenda principalmente o se encuentre dirigida hacia la obtención de un beneficio mercantil o una contraprestación monetaria, siempre que no haya ningún pago en relación con el intercambio de las obras protegidas.
c.Si usted reproduce, distribuye o comunica públicamente la obra o la prestación, una colección que la incorpore o cualquier obra derivada, debe mantener intactos todos los avisos sobre la propiedad intelectual e indicar, de manera razonable conforme al medio o a los medios que usted esté utilizando:
i.El nombre del autor original, o el seudónimo si es el caso, así como el del titular originario, si le es facilitado.
ii.El nombre de aquellas partes (por ejemplo: institución, publicación, revista) que el titular originario y/o el licenciador designen para ser reconocidos en el aviso legal, las condiciones de uso, o de cualquier otra manera razonable.
iii.El título de la obra o la prestación si le es facilitado.
iv.El URI, si existe, que el licenciador especifique para ser vinculado a la obra o la prestación, a menos que tal URI no se refiera al aviso legal o a la información sobre la licencia de la obra o la prestación.
v.En el caso de una obra derivada, un aviso que identifique la transformación de la obra en la obra derivada (p. ej., "traducción castellana de la obra de Autor Original," o "guión basado en obra original de Autor Original").
Este reconocimiento debe hacerse de manera razonable. En el caso de una obra derivada o incorporación en una colección estos créditos deberán aparecer como mínimo en el mismo lugar donde se hallen los correspondientes a otros autores o titulares y de forma comparable a los mismos. Para evitar la duda, los créditos requeridos en esta sección sólo serán utilizados a efectos de atribución de la obra o la prestación en la manera especificada anteriormente. Sin un permiso previo por escrito, usted no puede afirmar ni dar a entender implícitamente ni explícitamente ninguna conexión, patrocinio o aprobación por parte del titular originario, el licenciador y/o las partes reconocidas hacia usted o hacia el uso que hace de la obra o la prestación.
d.Para evitar cualquier duda, debe hacerse notar que las restricciones anteriores (párrafos 4.a, 4.b y 4.c) no son de aplicación a aquellas partes de la obra o la prestación objeto de esta licencia que únicamente puedan ser protegidas mediante el derecho sui generis sobre bases de datos recogido por la ley nacional vigente implementando la directiva europea de bases de datos
a.Usted puede reproducir, distribuir o comunicar públicamente la obra o prestación solamente bajo los términos de esta licencia y debe incluir una copia de la misma, o su Identificador Uniforme de Recurso (URI). Usted no puede ofrecer o imponer ninguna condición sobre la obra o prestación que altere o restrinja los términos de esta licencia o el ejercicio de sus derechos por parte de los concesionarios de la misma. Usted no puede sublicenciar la obra o prestación. Usted debe mantener intactos todos los avisos que se refieran a esta licencia y a la ausencia de garantías. Usted no puede reproducir, distribuir o comunicar públicamente la obra o prestación con medidas tecnológicas que controlen el acceso o el uso de una manera contraria a los términos de esta licencia. Esta sección 4.a también afecta a la obra o prestación incorporada en una colección, pero ello no implica que ésta en su conjunto quede automáticamente o deba quedar sujeta a los términos de la misma. En el caso que le sea requerido, previa comunicación del licenciador, si usted incorpora la obra en una colección y/o crea una obra derivada, deberá quitar cualquier crédito requerido en el apartado 4.c, en la medida de lo posible.
b.Usted no puede ejercitar ninguno de los derechos concedidos en la sección 3 anterior de manera que pretenda principalmente o su actuación se dirija a la obtención de un beneficio mercantil o una contraprestación monetaria. El intercambio de la obra por otras obras protegidas por la propiedad intelectual mediante sistemas de compartir archivos no se considerará como una manera que pretenda principalmente o se encuentre dirigida hacia la obtención de un beneficio mercantil o una contraprestación monetaria, siempre que no haya ningún pago en relación con el intercambio de las obras protegidas.
c.Si usted reproduce, distribuye o comunica públicamente la obra o la prestación, una colección que la incorpore o cualquier obra derivada, debe mantener intactos todos los avisos sobre la propiedad intelectual e indicar, de manera razonable conforme al medio o a los medios que usted esté utilizando:
i.El nombre del autor original, o el seudónimo si es el caso, así como el del titular originario, si le es facilitado.
ii.El nombre de aquellas partes (por ejemplo: institución, publicación, revista) que el titular originario y/o el licenciador designen para ser reconocidos en el aviso legal, las condiciones de uso, o de cualquier otra manera razonable.
iii.El título de la obra o la prestación si le es facilitado.
iv.El URI, si existe, que el licenciador especifique para ser vinculado a la obra o la prestación, a menos que tal URI no se refiera al aviso legal o a la información sobre la licencia de la obra o la prestación.
v.En el caso de una obra derivada, un aviso que identifique la transformación de la obra en la obra derivada (p. ej., "traducción castellana de la obra de Autor Original," o "guión basado en obra original de Autor Original").
Este reconocimiento debe hacerse de manera razonable. En el caso de una obra derivada o incorporación en una colección estos créditos deberán aparecer como mínimo en el mismo lugar donde se hallen los correspondientes a otros autores o titulares y de forma comparable a los mismos. Para evitar la duda, los créditos requeridos en esta sección sólo serán utilizados a efectos de atribución de la obra o la prestación en la manera especificada anteriormente. Sin un permiso previo por escrito, usted no puede afirmar ni dar a entender implícitamente ni explícitamente ninguna conexión, patrocinio o aprobación por parte del titular originario, el licenciador y/o las partes reconocidas hacia usted o hacia el uso que hace de la obra o la prestación.
d.Para evitar cualquier duda, debe hacerse notar que las restricciones anteriores (párrafos 4.a, 4.b y 4.c) no son de aplicación a aquellas partes de la obra o la prestación objeto de esta licencia que únicamente puedan ser protegidas mediante el derecho sui generis sobre bases de datos recogido por la ley nacional vigente implementando la directiva europea de bases de datos
e.Para evitar cualquier duda, el titular originario conserva:
i.El derecho a percibir las remuneraciones o compensaciones previstas por actos de explotación de la obra o prestación, calificadas por la ley como irrenunciables e inalienables y sujetas a gestión colectiva obligatoria.
ii.El derecho exclusivo a percibir, tanto individualmente como mediante una entidad de gestión colectiva de derechos, cualquier remuneración derivada de actos de explotación de la obra o prestación que usted realice que no queden sujetos a esta licencia de acuerdo con lo establecido en el apartado 4.b.
5. Exoneración de responsabilidad
i.El derecho a percibir las remuneraciones o compensaciones previstas por actos de explotación de la obra o prestación, calificadas por la ley como irrenunciables e inalienables y sujetas a gestión colectiva obligatoria.
ii.El derecho exclusivo a percibir, tanto individualmente como mediante una entidad de gestión colectiva de derechos, cualquier remuneración derivada de actos de explotación de la obra o prestación que usted realice que no queden sujetos a esta licencia de acuerdo con lo establecido en el apartado 4.b.
5. Exoneración de responsabilidad
A MENOS QUE SE ACUERDE MUTUAMENTE ENTRE LAS PARTES, EL LICENCIADOR OFRECE LA OBRA O LA PRESTACIÓN TAL CUAL (ON AN "AS-IS" BASIS) Y NO CONFIERE NINGUNA GARANTÍA DE CUALQUIER TIPO RESPECTO DE LA OBRA O LA PRESTACIÓN O DE LA PRESENCIA O AUSENCIA DE ERRORES QUE PUEDAN O NO SER DESCUBIERTOS. ALGUNAS JURISDICCIONES NO PERMITEN LA EXCLUSIÓN DE TALES GARANTÍAS, POR LO QUE TAL EXCLUSIÓN PUEDE NO SER DE APLICACIÓN A USTED.
A MENOS QUE SE ACUERDE MUTUAMENTE ENTRE LAS PARTES, EL LICENCIADOR OFRECE LA OBRA O LA PRESTACIÓN TAL CUAL (ON AN "AS-IS" BASIS) Y NO CONFIERE NINGUNA GARANTÍA DE CUALQUIER TIPO RESPECTO DE LA OBRA O LA PRESTACIÓN O DE LA PRESENCIA O AUSENCIA DE ERRORES QUE PUEDAN O NO SER DESCUBIERTOS. ALGUNAS JURISDICCIONES NO PERMITEN LA EXCLUSIÓN DE TALES GARANTÍAS, POR LO QUE TAL EXCLUSIÓN PUEDE NO SER DE APLICACIÓN A USTED.
6. Limitación de responsabilidad. SALVO QUE LO DISPONGA EXPRESA E IMPERATIVAMENTE LA LEY APLICABLE, EN NINGÚN CASO EL LICENCIADOR SERÁ RESPONSABLE ANTE USTED POR CUALESQUIERA DAÑOS RESULTANTES, GENERALES O ESPECIALES (INCLUIDO EL DAÑO EMERGENTE Y EL LUCRO CESANTE), FORTUITOS O CAUSALES, DIRECTOS O INDIRECTOS, PRODUCIDOS EN CONEXIÓN CON ESTA LICENCIA O EL USO DE LA OBRA O LA PRESTACIÓN, INCLUSO SI EL LICENCIADOR HUBIERA SIDO INFORMADO DE LA POSIBILIDAD DE TALES DAÑOS.
6. Limitación de responsabilidad. SALVO QUE LO DISPONGA EXPRESA E IMPERATIVAMENTE LA LEY APLICABLE, EN NINGÚN CASO EL LICENCIADOR SERÁ RESPONSABLE ANTE USTED POR CUALESQUIERA DAÑOS RESULTANTES, GENERALES O ESPECIALES (INCLUIDO EL DAÑO EMERGENTE Y EL LUCRO CESANTE), FORTUITOS O CAUSALES, DIRECTOS O INDIRECTOS, PRODUCIDOS EN CONEXIÓN CON ESTA LICENCIA O EL USO DE LA OBRA O LA PRESTACIÓN, INCLUSO SI EL LICENCIADOR HUBIERA SIDO INFORMADO DE LA POSIBILIDAD DE TALES DAÑOS.
7. Finalización de la licencia
7. Finalización de la licencia
a.Esta licencia y la concesión de los derechos que contiene terminarán automáticamente en caso de cualquier incumplimiento de los términos de la misma. Las personas o entidades que hayan recibido de usted obras derivadas o colecciones bajo esta licencia, sin embargo, no verán sus licencias finalizadas, siempre que tales personas o entidades se mantengan en el cumplimiento íntegro de esta licencia. Las secciones 1, 2, 5, 6, 7 y 8 permanecerán vigentes pese a cualquier finalización de esta licencia.
b.Conforme a las condiciones y términos anteriores, la concesión de derechos de esta licencia es vigente por todo el plazo de protección de los derechos de propiedad intelectual según la ley aplicable. A pesar de lo anterior, el licenciador se reserva el derecho a divulgar o publicar la obra o la prestación en condiciones distintas a las presentes, o de retirar la obra o la prestación en cualquier momento. No obstante, ello no supondrá dar por concluida esta licencia (o cualquier otra licencia que haya sido concedida, o sea necesario ser concedida, bajo los términos de esta licencia), que continuará vigente y con efectos completos a no ser que haya finalizado conforme a lo establecido anteriormente, sin perjuicio del derecho moral de arrepentimiento en los términos reconocidos por la ley de propiedad intelectual aplicable.
8. Miscelánea
a.Esta licencia y la concesión de los derechos que contiene terminarán automáticamente en caso de cualquier incumplimiento de los términos de la misma. Las personas o entidades que hayan recibido de usted obras derivadas o colecciones bajo esta licencia, sin embargo, no verán sus licencias finalizadas, siempre que tales personas o entidades se mantengan en el cumplimiento íntegro de esta licencia. Las secciones 1, 2, 5, 6, 7 y 8 permanecerán vigentes pese a cualquier finalización de esta licencia.
b.Conforme a las condiciones y términos anteriores, la concesión de derechos de esta licencia es vigente por todo el plazo de protección de los derechos de propiedad intelectual según la ley aplicable. A pesar de lo anterior, el licenciador se reserva el derecho a divulgar o publicar la obra o la prestación en condiciones distintas a las presentes, o de retirar la obra o la prestación en cualquier momento. No obstante, ello no supondrá dar por concluida esta licencia (o cualquier otra licencia que haya sido concedida, o sea necesario ser concedida, bajo los términos de esta licencia), que continuará vigente y con efectos completos a no ser que haya finalizado conforme a lo establecido anteriormente, sin perjuicio del derecho moral de arrepentimiento en los términos reconocidos por la ley de propiedad intelectual aplicable.
8. Miscelánea
a.Cada vez que usted realice cualquier tipo de explotación de la obra o la prestación, o de una colección que la incorpore, el licenciador ofrece a los terceros y sucesivos licenciatarios la concesión de derechos sobre la obra o la prestación en las mismas condiciones y términos que la licencia concedida a usted.
b.Cada vez que usted realice cualquier tipo de explotación de una obra derivada, el licenciador ofrece a los terceros y sucesivos licenciatarios la concesión de derechos sobre la obra objeto de esta licencia en las mismas condiciones y términos que la licencia concedida a usted.
c.Si alguna disposición de esta licencia resulta inválida o inaplicable según la Ley vigente, ello no afectará la validez o aplicabilidad del resto de los términos de esta licencia y, sin ninguna acción adicional por cualquiera las partes de este acuerdo, tal disposición se entenderá reformada en lo estrictamente necesario para hacer que tal disposición sea válida y ejecutiva.
d.No se entenderá que existe renuncia respecto de algún término o disposición de esta licencia, ni que se consiente violación alguna de la misma, a menos que tal renuncia o consentimiento figure por escrito y lleve la firma de la parte que renuncie o consienta.
e.Esta licencia constituye el acuerdo pleno entre las partes con respecto a la obra o la prestación objeto de la licencia. No caben interpretaciones, acuerdos o condiciones con respecto a la obra o la prestación que no se encuentren expresamente especificados en la presente licencia. El licenciador no estará obligado por ninguna disposición complementaria que pueda aparecer en cualquier comunicación que le haga llegar usted. Esta licencia no se puede modificar sin el mutuo acuerdo por escrito entre el licenciador y usted.
a.Cada vez que usted realice cualquier tipo de explotación de la obra o la prestación, o de una colección que la incorpore, el licenciador ofrece a los terceros y sucesivos licenciatarios la concesión de derechos sobre la obra o la prestación en las mismas condiciones y términos que la licencia concedida a usted.
b.Cada vez que usted realice cualquier tipo de explotación de una obra derivada, el licenciador ofrece a los terceros y sucesivos licenciatarios la concesión de derechos sobre la obra objeto de esta licencia en las mismas condiciones y términos que la licencia concedida a usted.
c.Si alguna disposición de esta licencia resulta inválida o inaplicable según la Ley vigente, ello no afectará la validez o aplicabilidad del resto de los términos de esta licencia y, sin ninguna acción adicional por cualquiera las partes de este acuerdo, tal disposición se entenderá reformada en lo estrictamente necesario para hacer que tal disposición sea válida y ejecutiva.
d.No se entenderá que existe renuncia respecto de algún término o disposición de esta licencia, ni que se consiente violación alguna de la misma, a menos que tal renuncia o consentimiento figure por escrito y lleve la firma de la parte que renuncie o consienta.
e.Esta licencia constituye el acuerdo pleno entre las partes con respecto a la obra o la prestación objeto de la licencia. No caben interpretaciones, acuerdos o condiciones con respecto a la obra o la prestación que no se encuentren expresamente especificados en la presente licencia. El licenciador no estará obligado por ninguna disposición complementaria que pueda aparecer en cualquier comunicación que le haga llegar usted. Esta licencia no se puede modificar sin el mutuo acuerdo por escrito entre el licenciador y usted.
Aviso de Creative Commons
Creative Commons no es parte de esta licencia, y no ofrece ninguna garantía en relación con la obra o la prestación. Creative Commons no será responsable frente a usted o a cualquier parte, por cualesquiera daños resultantes, incluyendo, pero no limitado, daños generales o especiales (incluido el daño emergente y el lucro cesante), fortuitos o causales, en conexión con esta licencia. A pesar de las dos (2) oraciones anteriores, si Creative Commons se ha identificado expresamente como el licenciador, tendrá todos los derechos y obligaciones del licenciador.
Creative Commons no es parte de esta licencia, y no ofrece ninguna garantía en relación con la obra o la prestación. Creative Commons no será responsable frente a usted o a cualquier parte, por cualesquiera daños resultantes, incluyendo, pero no limitado, daños generales o especiales (incluido el daño emergente y el lucro cesante), fortuitos o causales, en conexión con esta licencia. A pesar de las dos (2) oraciones anteriores, si Creative Commons se ha identificado expresamente como el licenciador, tendrá todos los derechos y obligaciones del licenciador.
Salvo para el propósito limitado de indicar al público que la obra o la prestación está licenciada bajo la CCPL, ninguna parte utilizará la marca registrada "Creative Commons" o cualquier marca registrada o insignia relacionada con "Creative Commons" sin su consentimiento por escrito. Cualquier uso permitido se hará de conformidad con las pautas vigentes en cada momento sobre el uso de la marca registrada por "Creative Commons", en tanto que sean publicadas su sitio web (website) o sean proporcionadas a petición previa. Para evitar cualquier duda, estas restricciones en el uso de la marca no forman parte de esta licencia.
Salvo para el propósito limitado de indicar al público que la obra o la prestación está licenciada bajo la CCPL, ninguna parte utilizará la marca registrada "Creative Commons" o cualquier marca registrada o insignia relacionada con "Creative Commons" sin su consentimiento por escrito. Cualquier uso permitido se hará de conformidad con las pautas vigentes en cada momento sobre el uso de la marca registrada por "Creative Commons", en tanto que sean publicadas su sitio web (website) o sean proporcionadas a petición previa. Para evitar cualquier duda, estas restricciones en el uso de la marca no forman parte de esta licencia.
Puede contactar con Creative Commons en: http://creativecommons.org/.

View File

@ -23,7 +23,7 @@ NightFox's Lib Ver. 20120318
opcionalmente, el tipo de mapeado de VRAM para sprites, (64 o 128). El mapa
64 divide la VRAM en celdas de 64 bytes, con lo que como mucho podremos usar
64kb para sprites. El modo 128 nos permite usar los 128kb de VRAM, pero en
contrapartida no podremos usar sprites de 8x8. Todos los demas tamaños son
contrapartida no podremos usar sprites de 8x8. Todos los demas tamaños son
admitidos. Si no especificamos el segundo parametro, se asume que es 64.
Los proyectos actuales no deberan ser modificados en absoluto si no quereis
usae el modo 128.
@ -62,12 +62,12 @@ NightFox's Lib Ver. 20110911
NightFox's Lib Ver. 20110906
--------------------------------------------------------------------------------
- Añadida la funcion NF_GetLanguage(); la cual devuelve el codigo del idioma
seleccionado en la consola. Se añade tambien el ejemplo de uso.
- Los mensages de error de inicializacion de FAT/NitroFS ahora son bilingües
(Español/Ingles), basandose en el Idioma seleccionado en la consola.
- Añadido el modo mixto para fondos (Tiled BG + Bitmap 8 bits).
- Añadida la funcion NF_InitMixedBgSys(); la cual inicializa el modo mixto.
- Añadida la funcion NF_GetLanguage(); la cual devuelve el codigo del idioma
seleccionado en la consola. Se añade tambien el ejemplo de uso.
- Los mensages de error de inicializacion de FAT/NitroFS ahora son bilingües
(Español/Ingles), basandose en el Idioma seleccionado en la consola.
- Añadido el modo mixto para fondos (Tiled BG + Bitmap 8 bits).
- Añadida la funcion NF_InitMixedBgSys(); la cual inicializa el modo mixto.
- Revisados los ejemplos y makefile.
@ -82,9 +82,9 @@ NightFox's Lib Ver. 20110424
NightFox's Lib Ver. 20110412
--------------------------------------------------------------------------------
- Añadido el soporte para los caracteres ÁÉÍÓÚáéíóúïü¡¿ en el motor de
- Añadido el soporte para los caracteres ÁÉÍÓÚáéíóúïü¡¿ en el motor de
texto de 8x8.
- Añadido el soporte para los caracteres ¡¿ en el motor de texto de 8x16.
- Añadido el soporte para los caracteres ¡¿ en el motor de texto de 8x16.
@ -100,7 +100,7 @@ NightFox's Lib Ver. 20110215
--------------------------------------------------------------------------------
- Correcciones en la proyection ortografica para ajustar el dibujado de los
3dSprites, habilitando ademas el eje Z.
- Añadida la funcion NF_3dSpriteSetDeep(); la cual permite cambiar la
- Añadida la funcion NF_3dSpriteSetDeep(); la cual permite cambiar la
profundidad donde se dibuja el Sprite, ignorando la prioridad.
- Actualizado el ejemplo "SetPriority" de los 3dSprites.
@ -108,68 +108,68 @@ NightFox's Lib Ver. 20110215
NightFox's Lib Ver. 20110209
--------------------------------------------------------------------------------
- Añadido soporte para acentos y dieresis (ÁÉÍÓÚáéíóúïü) al motor de texto
- Añadido soporte para acentos y dieresis (ÁÉÍÓÚáéíóúïü) al motor de texto
de 8x16. (Ver template de la fuente).
- Añadida la funcion NF_3dSpriteEditPalColor();
- Añadida la funcion NF_3dSpriteUpdatePalette();
- Añadida la funcion NF_3dSpriteGetPalColor();
- Añadida la funcion NF_3dSpriteEditPalColor();
- Añadida la funcion NF_3dSpriteUpdatePalette();
- Añadida la funcion NF_3dSpriteGetPalColor();
- Documentacion actualizada para todas las funciones de 3dSprites.
NightFox's Lib Ver. 20101212 - BETA
--------------------------------------------------------------------------------
- Añadida la funcion NF_Blend3dSprite(); la cual establece la transparencia
- Añadida la funcion NF_Blend3dSprite(); la cual establece la transparencia
para el sprite seleccionado.
- Añadido el ejemplo de 3dSprites con transparencia.
- Añadida la funcion NF_3dSpritesLayer(); la cual permite seleccionar la capa
- Añadido el ejemplo de 3dSprites con transparencia.
- Añadida la funcion NF_3dSpritesLayer(); la cual permite seleccionar la capa
donde se dibujaran los Sprites 3D.
- Añadido el ejemplo de uso de la funcion NF_3dSpritesLayer();
- Añadido el ejemplo de uso de la funcion NF_3dSpritesLayer();
NightFox's Lib Ver. 20101128 - BETA
--------------------------------------------------------------------------------
- Corregidos algunos comentarios en los ejemplos de Sprites.
- Añadida la funcion NF_LoadColisionBg(); para cargar un fondo de colisiones.
- Añadida la funcion NF_UnloadColisionBg(); para descargar un fondo de
- Añadida la funcion NF_LoadColisionBg(); para cargar un fondo de colisiones.
- Añadida la funcion NF_UnloadColisionBg(); para descargar un fondo de
colisiones de la RAM.
- Añadida la funcion NF_GetPoint(); para obtener el pixel de la coordenada dada
- Añadida la funcion NF_GetPoint(); para obtener el pixel de la coordenada dada
en un fondo de colisiones. Si la coordenada esta fuera del mapa, devuelve 0.
- Modificadas las funciones NF_GetTile y NF_SetTile(); para que en caso de querer
cambiar un tile fuera de rango, la orden sea ignorada.
- Añadido el error nº119
- Añadida la funcion NF_Set3D(); para iniciar el modo 3D
- Añadida la funcion NF_InitOpenGL(); para iniciar el motor OpenGL
- Añadida la funcion NF_Init3dSpriteSys(); para iniciar el sistema Sprites 3D.
- Añadida la funcion NF_Vram3dSpriteGfx(); la cual copia a la VRAM un grafico
- Añadido el error nº119
- Añadida la funcion NF_Set3D(); para iniciar el modo 3D
- Añadida la funcion NF_InitOpenGL(); para iniciar el motor OpenGL
- Añadida la funcion NF_Init3dSpriteSys(); para iniciar el sistema Sprites 3D.
- Añadida la funcion NF_Vram3dSpriteGfx(); la cual copia a la VRAM un grafico
para usarlo posteriormente en la creacion de un sprite 3D.
- Añadida la funcion NF_Free3dSpriteGfx(); la cual elimina de la VRAM el
- Añadida la funcion NF_Free3dSpriteGfx(); la cual elimina de la VRAM el
grafico especificado.
- Añadida la funcion NF_Vram3dSpriteGfxDefrag(); la cual reordena la VRAM
- Añadida la funcion NF_Vram3dSpriteGfxDefrag(); la cual reordena la VRAM
de texturas.
- Añadida la funcion NF_Vram3dSpritePal(); la cual copia a la VRAM una paleta
- Añadida la funcion NF_Vram3dSpritePal(); la cual copia a la VRAM una paleta
para poder usarla posteriormente en un sprite 3D.
- Añadida la funcion NF_Create3dSprite(); la cual crea un Sprite 3D en las
coordenadas indicadas, usando la textura y paleta indicadas. El tamaño de
- Añadida la funcion NF_Create3dSprite(); la cual crea un Sprite 3D en las
coordenadas indicadas, usando la textura y paleta indicadas. El tamaño de
estos sprites puede ser de cualquier medida en potencia de 2 (entre 8 y 1024).
- Añadida la funcion NF_Delete3dSprite(); la cual borra de la pantalla el
- Añadida la funcion NF_Delete3dSprite(); la cual borra de la pantalla el
Sprite 3D con la ID indicada.
- Añadida la funcion NF_Sort3dSprites(); la cual reordena la prioridad de los
- Añadida la funcion NF_Sort3dSprites(); la cual reordena la prioridad de los
Sprites 3D basandola en su ID.
- Añadida la funcion NF_Move3dSprite(); para mover un Sprite 3D
- Añadida la funcion NF_Move3dSprite(); para mover un Sprite 3D
por la pantalla.
- Añadida la funcion NF_Show3dSprite(); la cual muestra u oculta el sprite
- Añadida la funcion NF_Show3dSprite(); la cual muestra u oculta el sprite
con la ID indicada.
- Añadida la funcion NF_Set3dSpriteFrame(); la cual cambia el frame del sprite
- Añadida la funcion NF_Set3dSpriteFrame(); la cual cambia el frame del sprite
indicado.
- Añadida la funcion NF_Update3dSprites(); la cual actualiza los Sprites 3D
- Añadida la funcion NF_Update3dSprites(); la cual actualiza los Sprites 3D
en la pantalla.
- Añadida la funcion NF_Rotate3dSprite(); la cual rota el sprite indicado
- Añadida la funcion NF_Rotate3dSprite(); la cual rota el sprite indicado
sobre los ejes indicados.
- Añadida la funcion NF_Scale3dSprite(); la cual escala el sprite indicado
- Añadida la funcion NF_Scale3dSprite(); la cual escala el sprite indicado
sobre los ejes indicados.
- Añadidos ejemplos para el uso de 3D Sprites.
- Añadidos ejemplos para el uso de 3D Sprites.
@ -184,30 +184,30 @@ NightFox's Lib Ver. 20100901
NightFox's Lib Ver. 20100806
--------------------------------------------------------------------------------
- Corregido un bug en la funcion NF_CreateTiledBg(); que almacenava
incorrectamente el tamaño del fondo si este era exactamente de 512x256 o
incorrectamente el tamaño del fondo si este era exactamente de 512x256 o
256x512 pixeles, lo que provocava que el scroll del mismo fuera erratico.
NightFox's Lib Ver. 20100730 - Summer Edition
--------------------------------------------------------------------------------
- Añadido el modo 2 en 2D para poder usar fondos tileados Affine.
- Añadida la funcion NF_InitAffineBgSys(); para inicializar los fondos Affine.
- Añadida la funcion NF_LoadAffineBg(); para la carga de fondos Affine,
con tamaños de 256x256 y 512x512 pixeles.Los buffers para fondos tileados
- Añadido el modo 2 en 2D para poder usar fondos tileados Affine.
- Añadida la funcion NF_InitAffineBgSys(); para inicializar los fondos Affine.
- Añadida la funcion NF_LoadAffineBg(); para la carga de fondos Affine,
con tamaños de 256x256 y 512x512 pixeles.Los buffers para fondos tileados
deben estar inicializados antes de usar esta funcion.
- Añadida la funcion NF_UnloadAffineBg(); para descargar de la RAM los fondos
- Añadida la funcion NF_UnloadAffineBg(); para descargar de la RAM los fondos
affine cargados. Simplemente llama a la funcion NF_UnloadTiledBg();
- Añadida la funcion NF_CreateAffineBg(); para la creacion de fondos Affine,
con tamaños de 256x256 y 512x512 pixeles.
- Añadida la funcion NF_DeleteAffineBg(); para el borrado de fondos Affine.
- Añadida la funcion NF_AffineBgTransform(); que modifica los parametros de
- Añadida la funcion NF_CreateAffineBg(); para la creacion de fondos Affine,
con tamaños de 256x256 y 512x512 pixeles.
- Añadida la funcion NF_DeleteAffineBg(); para el borrado de fondos Affine.
- Añadida la funcion NF_AffineBgTransform(); que modifica los parametros de
la matriz de transformacion del fondo affine.
- Añadida la funcion NF_AffineBgMove(); que desplaza y rota un fondo Affine.
- Añadida la funcion NF_AffineBgCenter(); que define el centro de rotacion del
- Añadida la funcion NF_AffineBgMove(); que desplaza y rota un fondo Affine.
- Añadida la funcion NF_AffineBgCenter(); que define el centro de rotacion del
fondo Affine.
- Añadido el ejemplo para el uso de fondos Affine.
- Añadidos los errores 117 y 118.
- Añadido el ejemplo para el uso de fondos Affine.
- Añadidos los errores 117 y 118.
- Modificada la funcion NF_SetTile(); para poder asignar tiles en formato U16.
- Se detecta un bug en la ultima version de GRIT convirtiendo fondos sin
optimizar el tileset (fuentes). Se adjunta la version anterior y se modifica
@ -233,9 +233,9 @@ NightFox's Lib Ver. 20100701
NightFox's Lib Ver. 20100312
--------------------------------------------------------------------------------
- Eliminado el soporte para EFS, dado que la libreria esta obsoleta.
- Añadido soporte para NitroFS, el cual viene de serie con el DevkitArm.
- Añadido soporte para NitroFS, el cual viene de serie con el DevkitArm.
- Actualizados todos los ejemplos para que usen NitroFS en vez de EFS.
- Añadido el "Homebrew menu" para lanzar archivos NDS que usen NitroFS en
- Añadido el "Homebrew menu" para lanzar archivos NDS que usen NitroFS en
flashcards no compatibles con pase de argumentos (int argc, char **argv).
Puedes encontrarlo en la carpeta tools.
@ -263,70 +263,70 @@ NightFox's Lib Ver. 20100304
NightFox's Lib Ver. 20100301
--------------------------------------------------------------------------------
- Añadida la funcion NF_LoadBMP(); la cual carga un archivo BMP de 8, 16 o 24
- Añadida la funcion NF_LoadBMP(); la cual carga un archivo BMP de 8, 16 o 24
bits en un slot de imagen de 16 bits.
- Añadido el parametro "alpha" a la funcion NF_Draw16bitsImage(); para decidir
- Añadido el parametro "alpha" a la funcion NF_Draw16bitsImage(); para decidir
si el color magenta es o no transparente.
- Añadido los ejemplos de carga de archivos en formato BMP.
- Añadido el ejemplo de scroll de una imagen cargada desde un BMP.
- Añadido los ejemplos de carga de archivos en formato BMP.
- Añadido el ejemplo de scroll de una imagen cargada desde un BMP.
NightFox's Lib Ver. 20100209
--------------------------------------------------------------------------------
- Añadido el ejemplo de zoom x2 con interpolacion.
- Añadido el ejemplo de zoom x3 con interpolacion.
- Añadida la funcion NF_Init8bitsBgBuffers(); que inicializa los buffers para
- Añadido el ejemplo de zoom x2 con interpolacion.
- Añadido el ejemplo de zoom x3 con interpolacion.
- Añadida la funcion NF_Init8bitsBgBuffers(); que inicializa los buffers para
fondos bitmap de 8 bits.
- Añadida la funcion NF_Reset8bitsBgBuffers(); que reinicializa los buffers de
- Añadida la funcion NF_Reset8bitsBgBuffers(); que reinicializa los buffers de
fondos bitmap de 8 bits.
- Añadida la funcion NF_Load8bitsBg(); que carga un fondo bitmap de 8 bits de
- Añadida la funcion NF_Load8bitsBg(); que carga un fondo bitmap de 8 bits de
hasta 256x256 pixeles.
- Añadida la funcion NF_Unload8bitsBg(); que borra de la ram un fondo bitmap
- Añadida la funcion NF_Unload8bitsBg(); que borra de la ram un fondo bitmap
de 8 bits, previamente cargado.
- Añadida la funcion NF_Copy8bitsBuffer(); la cual copia un fondo de 8 bits
- Añadida la funcion NF_Copy8bitsBuffer(); la cual copia un fondo de 8 bits
cargado en RAM a la VRAM o al BackBuffer.
- Añadida la funcion NF_Init8bitsBackBuffer(); que iniciliza el BackBuffer de
- Añadida la funcion NF_Init8bitsBackBuffer(); que iniciliza el BackBuffer de
8 bits.
- Añadida la funcion NF_Enable8bitsBackBuffer(); que habilita el BackBuffer de
- Añadida la funcion NF_Enable8bitsBackBuffer(); que habilita el BackBuffer de
8 bits para la pantalla seleccionada.
- Añadida la funcion NF_Disble8bitsBackBuffer(); que deshabilita el BackBuffer
- Añadida la funcion NF_Disble8bitsBackBuffer(); que deshabilita el BackBuffer
de 8 bits, liberando la memoria RAM usada.
- Añadida la funcion NF_Flip8bitsBackBuffer(); la cual manda el Backbuffer de
- Añadida la funcion NF_Flip8bitsBackBuffer(); la cual manda el Backbuffer de
8 bits a la VRAM.
- Añadida la funcion NF_Load16bImgData(); que carga una imagen de 16 bits en
RAM, con un tamaño maximo de 256x256 pixeles. La imagen se carga en un slot
- Añadida la funcion NF_Load16bImgData(); que carga una imagen de 16 bits en
RAM, con un tamaño maximo de 256x256 pixeles. La imagen se carga en un slot
de fondos de 16 bits.
- Añadida la funcion NF_Draw16bitsImage(); la cual dibuja una imagen cargada
- Añadida la funcion NF_Draw16bitsImage(); la cual dibuja una imagen cargada
en RAM en el backbuffer de la pantalla indicada.
NightFox's Lib Ver. 20100203
--------------------------------------------------------------------------------
- Añadida la documentacion de la funcion void NF_RotateTileGfx();
- Añadido el Modo 5 en la funcion NF_Set2D();
- Añadida la funcion NF_InitBitmapBgSys(); la cual inicializa los fondos en
- Añadida la documentacion de la funcion void NF_RotateTileGfx();
- Añadido el Modo 5 en la funcion NF_Set2D();
- Añadida la funcion NF_InitBitmapBgSys(); la cual inicializa los fondos en
modo bitmap, tanto en 8 como 16 bits.
- Añadida la funcion NF_Init16bitsBgBuffers(); el cual inicializa los buffer
- Añadida la funcion NF_Init16bitsBgBuffers(); el cual inicializa los buffer
para guardar fondos en modo BITMAP.
- Añadida la funcion NF_Reset16bitsBgBuffers(); la cual borra el contenido de
- Añadida la funcion NF_Reset16bitsBgBuffers(); la cual borra el contenido de
los buffers de fondos BITMAP.
- Añadida la funcion NF_Init16bitsBackBuffer(); la cual inicializa los
- Añadida la funcion NF_Init16bitsBackBuffer(); la cual inicializa los
backbuffers de 16bits.
- Añadida la funcion NF_Enable16bitsBackBuffer(); la cual habilita el
- Añadida la funcion NF_Enable16bitsBackBuffer(); la cual habilita el
BackBuffer de 16 bits en la pantalla indicada.
- Añadida la funcion NF_Disble16bitsBackBuffer(); la cual borra y libera de
- Añadida la funcion NF_Disble16bitsBackBuffer(); la cual borra y libera de
la RAM el BackBuffer indicado.
- Añadida la funcion NF_Flip16bitsBackBuffer(); la cual copia el contenido del
- Añadida la funcion NF_Flip16bitsBackBuffer(); la cual copia el contenido del
BackBuffer a la VRAM de la pantalla indicada.
- Añadida la funcion NF_Load16bitsBg(); la cual carga un bitmap de 16 bits
convertido previamente con GRIT, siendo el tamaño maximo 256x256.
- Añadida la funcion NF_Unload16bitsBg(); la cual borra del buffer en RAM
- Añadida la funcion NF_Load16bitsBg(); la cual carga un bitmap de 16 bits
convertido previamente con GRIT, siendo el tamaño maximo 256x256.
- Añadida la funcion NF_Unload16bitsBg(); la cual borra del buffer en RAM
una imagen cargada previamente.
- Añadida la funcion NF_Copy16bitsBuffer(); la cual copia los datos cargados
- Añadida la funcion NF_Copy16bitsBuffer(); la cual copia los datos cargados
en un buffer a la VRAM o al BackBuffer.
- Añadida la funcion NF_DmaMemCopy(); la cual copia bloques de memoria usando
- Añadida la funcion NF_DmaMemCopy(); la cual copia bloques de memoria usando
el DMA de manera segura (vacia el cache antes de manera automatica).
- Todas las funciones de copia de la libreria de RAM a VRAM ahora se realizan
usando el canal DMA, lo que acelera el proceso en un 25% aproximadamente.
@ -336,7 +336,7 @@ NightFox's Lib Ver. 20100203
NightFox's Lib Ver. 20100130
--------------------------------------------------------------------------------
- Añadida la funcion void NF_RotateTileGfx(); la cual rota el grafico de un
- Añadida la funcion void NF_RotateTileGfx(); la cual rota el grafico de un
tile en la direccion indicada.
- Dado a la funcion anterior, las fuentes para texto no necesitan mas las
partes rotadas de derecha e izquierda, pero se mantiene la compatibilidad
@ -346,19 +346,19 @@ NightFox's Lib Ver. 20100130
- Modificada la funcion NF_CreateTextLayer16(); para poder crear capas con
el texto rotado.
- Corregido Bug en la funcion NF_WriteText(); que calculava mal la coordenada
Y en modo rotado 90º a la derecha.
- Añadido ejemplo de texto con fuentes 8x16 con rotacion.
Y en modo rotado 90º a la derecha.
- Añadido ejemplo de texto con fuentes 8x16 con rotacion.
NightFox's Lib Ver. 20100129
--------------------------------------------------------------------------------
- Añadido soporte para texto de 8x16 sin rotacion.
- Añadida la funcion NF_LoadTextFont16();
- Añadida la funcion NF_CreateTextLayer16();
- Añadida la funcion NF_WriteText16();
- Añadida la funcion NF_ClearTextLayer16();
- Añadido el ejemplo para textos de 8x16.
- Añadido soporte para texto de 8x16 sin rotacion.
- Añadida la funcion NF_LoadTextFont16();
- Añadida la funcion NF_CreateTextLayer16();
- Añadida la funcion NF_WriteText16();
- Añadida la funcion NF_ClearTextLayer16();
- Añadido el ejemplo para textos de 8x16.
@ -373,8 +373,8 @@ NightFox's Lib Ver. 20091231
NightFox's Lib Ver. 20091207
--------------------------------------------------------------------------------
- Ejemplos: Añadido el ejemplo "Wave"
- Ejemplos: Añadido el ejemplo "Water reflect"
- Ejemplos: Añadido el ejemplo "Wave"
- Ejemplos: Añadido el ejemplo "Water reflect"
- Entorno: Libreria recompilada y probada con el devkitPro R27
@ -382,26 +382,26 @@ NightFox's Lib Ver. 20091207
NightFox's Lib Ver. 20091202
--------------------------------------------------------------------------------
- Fondos 2D: Añadida la funcion NF_GetTilePal(); que permite obtener el numero
- Fondos 2D: Añadida la funcion NF_GetTilePal(); que permite obtener el numero
de paleta que usa un tile en concreto entre las 16 disponibles. Por defecto,
los fondos solo cargan una paleta que se carga en el slot 0.
- Fondos 2D: Añadida la funcion NF_SetTilePal(); que permite cambiar el numero
- Fondos 2D: Añadida la funcion NF_SetTilePal(); que permite cambiar el numero
de paleta que usa un tile en concreto entre las 16 disponibles.
- Fondos 2D: Añadida la funcion NF_LoadExBgPal(); la cual carga en un slot en
- Fondos 2D: Añadida la funcion NF_LoadExBgPal(); la cual carga en un slot en
RAM una paleta de fondos para poderla usar luego como paleta extendida.
- Fondos 2D: Añadida la funcion NF_UnloadExBgPal(); la cual borra de la RAM
- Fondos 2D: Añadida la funcion NF_UnloadExBgPal(); la cual borra de la RAM
la paleta del slot especificado.
- Fondos 2D: Añadida la funcion NF_VramExBgPal(); la cual copia a la VRAM
- Fondos 2D: Añadida la funcion NF_VramExBgPal(); la cual copia a la VRAM
una paleta extendida cargada previamente en RAM.
- Fondos 2D: Añadida la funcion NF_SetExBgPal(); la cual selecciona que paleta
- Fondos 2D: Añadida la funcion NF_SetExBgPal(); la cual selecciona que paleta
extendida cargada en VRAM usara el fondo seleccionado.
- Textos: Añadida la funcion NF_DefineTextColor(); la cual permitira definir
- Textos: Añadida la funcion NF_DefineTextColor(); la cual permitira definir
hasta 16 colores diferentes por cada capa de texto.
- Textos: Añadida la funcion NF_SetTextColor(); la cual permitira escoger con
- Textos: Añadida la funcion NF_SetTextColor(); la cual permitira escoger con
que color se escribira el texto de entre los 16 definidos por el usuario.
- Fondos 2D: Añadida la funcion NF_SetTileHflip(); que invierte el estado del
- Fondos 2D: Añadida la funcion NF_SetTileHflip(); que invierte el estado del
FLIP horizontal de un tile del mapa especificado.
- Fondos 2D: Añadida la funcion NF_SetTileVflip(); que invierte el estado del
- Fondos 2D: Añadida la funcion NF_SetTileVflip(); que invierte el estado del
FLIP vertical de un tile del mapa especificado.
- Ejemplos actualizados.
- Documentacion actualizada.
@ -412,15 +412,15 @@ NightFox's Lib Ver. 20091127
--------------------------------------------------------------------------------
- Fondos 2D: Las funciones de manipulacion de paletas de han renombrado
añadiendo el prefijo "Bg", ya que futuramente se añadiran las mismas
añadiendo el prefijo "Bg", ya que futuramente se añadiran las mismas
para manipular las paletas de los sprites.
- Reorganizacion de algunas funciones dentro de los ficheros de la libreria.
- Añadidas varias trampas de debug en caso de querer usar las funciones de
- Añadidas varias trampas de debug en caso de querer usar las funciones de
tiles o paletas sobre fondos no creados.
- Sprites: añadida la funcion NF_SpriteSetPalColor();
- Sprites: Añadida la funcion NF_SpriteEditPalColor();
- Sprites: Añadida la funcion NF_SpriteUpdatePalette();
- Sprites: Añadida la funcion NF_SpriteGetPalColor();
- Sprites: añadida la funcion NF_SpriteSetPalColor();
- Sprites: Añadida la funcion NF_SpriteEditPalColor();
- Sprites: Añadida la funcion NF_SpriteUpdatePalette();
- Sprites: Añadida la funcion NF_SpriteGetPalColor();
- Documentacion actualizada.
- Ejemplos actualizados.
@ -429,45 +429,45 @@ NightFox's Lib Ver. 20091127
NightFox's Lib Ver. 20091122
--------------------------------------------------------------------------------
- Texto: Añadido el soporte para los caracteres "Ç", "ç", "Ñ" y "ñ"
- Texto: Añadido el soporte para el caracter de control "\n" (nueva linea)
- Texto: Añadido el soporte para los caracteres "Ç", "ç", "Ñ" y "ñ"
- Texto: Añadido el soporte para el caracter de control "\n" (nueva linea)
- Ejemplo: Actualizado el ejemplo de texto simple (uso de "\n")
- Fondos 2D: Añadida la funcion NF_SetPalcolor(); para cambiar un color de
- Fondos 2D: Añadida la funcion NF_SetPalcolor(); para cambiar un color de
la paleta del fondo especificado. (edita la paleta en VRAM, lento)
- Fondos 2D: Añadida la funcion NF_EditPalColor(); para editar un color de
- Fondos 2D: Añadida la funcion NF_EditPalColor(); para editar un color de
la paleta del fondo especificado (edita el buffer en RAM).
- Fondos 2D: Añadida la funcion NF_UpdatePalette(); para actualizar en VRAM
- Fondos 2D: Añadida la funcion NF_UpdatePalette(); para actualizar en VRAM
la paleta modificada en RAM
- Fondos 2D: Añadida la funcion NF_GetPalColor(); para obtener el valor de un
- Fondos 2D: Añadida la funcion NF_GetPalColor(); para obtener el valor de un
color de la paleta cargada en RAM
(Gracias a AntonioD por ayudarme en la manipulacion de paletas)
- Por hacer: Actualizar la documentacion con las funciones añadidas
- Ejemplo: Añadido ejemplo sobre la manipulacion de paletas
- Por hacer: Actualizar la documentacion con las funciones añadidas
- Ejemplo: Añadido ejemplo sobre la manipulacion de paletas
NightFox's Lib Ver. 20091115
--------------------------------------------------------------------------------
- Añadido el ejemplo de alpha blending
- Añadido el ejemplo de alpha blending
NightFox's Lib Ver. 20091101
--------------------------------------------------------------------------------
- Añadida la documentacion en Italiano (tide75)
- Añadido el ejemplo de fondos animados con tiles
- Añadida la documentacion en Italiano (tide75)
- Añadido el ejemplo de fondos animados con tiles
NightFox's Lib Ver. 20091014
--------------------------------------------------------------------------------
- Añadida la funcion NF_SetTile();
- Añadido el ejemplo de cliente/servidor por UDP.
- Añadida la funcion NF_SetTile();
- Añadido el ejemplo de cliente/servidor por UDP.
- Libreria de texto reescrita por completo.
- Eliminada la funcion NF_InitTextBuffers(); siendo inecesario su uso.
- Cambios en la funcion NF_LoadTextFont(); debiendo ahora de especificar el
tamaño en pixeles del mapa (256x256 por ejemplo).
- Añadidos varios ejemplos, todos ellos compilables.
tamaño en pixeles del mapa (256x256 por ejemplo).
- Añadidos varios ejemplos, todos ellos compilables.

View File

@ -148,7 +148,7 @@ int main(int argc, char **argv) {
// Control de colisiones, caida
down = true; // Flag de descenso arriba
// Busca pixel por pixel, si hay colisiones (pixel azul, nº4)
// Busca pixel por pixel, si hay colisiones (pixel azul, nº4)
for (n = 0; n < 16; n ++) {
if (NF_GetPoint(0, (x[b] + n), (y[b] + py[n])) == 4) down = false;
}

View File

@ -161,7 +161,7 @@ int main(int argc, char **argv) {
sprintf(mytext,"x:%d y:%d ", x, y);
NF_WriteText(0, 2, 1, 1, mytext);
// Imprime el nº de tile
// Imprime el nº de tile
switch (NF_GetTile(0, x, y)) {
case 0:
sprintf(mytext,"Tile: Vacio / Void ");

View File

@ -11,7 +11,7 @@ Si el frame es de 4x4 tiles en un documento de 32x256 pixeles por ejemplo:
[..][..][..][..]
En el documento preparado para la animacion cuyo tamaño seria de 256x256 pixeles
En el documento preparado para la animacion cuyo tamaño seria de 256x256 pixeles
los colorariamos de esta manera:
[01][02][03][04][05][05][07][07][09][10][11][12][13][14][15][16][..][..][..][..]

View File

@ -133,7 +133,7 @@ int main(int argc, char **argv) {
in_touch = false; // Ya no se esta tocando el touchpad
}
// Si se ha tocado el touchpad y la ventana es del tamaño suficiente...
// Si se ha tocado el touchpad y la ventana es del tamaño suficiente...
if (in_touch && (xa != xb) && (ya != yb)) {
// Calcula los limites de la ventana
if (xa < xb) {

View File

@ -90,7 +90,7 @@ int main(int argc, char **argv) {
NF_LoadExBgPal("bg/blue", BLUE);
// Carga la fuente por defecto para el texto
NF_LoadTextFont("fnt/default", "up", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "up", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "down", 256, 256, 0);
// Tranfiere las paletas del fondo 3

View File

@ -76,9 +76,9 @@ int main(int argc, char **argv) {
NF_LoadTiledBg("bg/layer3", "moon", 256, 256); // Carga el fondo para la capa 3, pantalla inferior
// Carga la fuente por defecto para el texto
NF_LoadTextFont("fnt/default", "normal", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "right", 256, 256, 1); // Carga la seccion "rotar derecha" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "left", 256, 256, 2); // Carga la seccion "rotar izquierda· de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "normal", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "right", 256, 256, 1); // Carga la seccion "rotar derecha" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "left", 256, 256, 2); // Carga la seccion "rotar izquierda· de la fuente, tamaño del mapa 256x256
// Crea los fondos de la pantalla superior
NF_CreateTiledBg(0, 3, "moon");
@ -124,7 +124,7 @@ int main(int argc, char **argv) {
NF_UpdateTextLayers(); // Actualiza las capas de texto
// Efecto añochecer modificando la paleta
// Efecto añochecer modificando la paleta
speed ++;
if (speed > 30) {
speed = 0;

View File

@ -162,7 +162,7 @@ int main(int argc, char **argv) {
if (keys & KEY_X) NF_SetTileOfMap(1, 2, (x >> 3), (y >> 3), 3);
NF_UpdateVramMap(1, 2);
// Imprime el nº de tile
// Imprime el nº de tile
tilenum = NF_GetTileOfMap(1, 2, (x >> 3),(y >> 3));
switch (tilenum) {
case 0:

View File

@ -95,7 +95,7 @@ int main(int argc, char **argv) {
// Ahora coloca los tiles en orden inverso para compensar la imagen
for (y = 0; y < 24; y ++) {
for (x = 0; x < 32; x ++) {
NF_SetTileOfMap(1, 3, (31 - x), (23 - y), mapa[x][y]); // *** Usa esta linea para el efecto rotado 180º
NF_SetTileOfMap(1, 3, (31 - x), (23 - y), mapa[x][y]); // *** Usa esta linea para el efecto rotado 180º
// NF_SetTileOfMap(1, 3, (31 - x), y, mapa[x][y]); // *** Usa esta linea para el efecto espejo
}
}

View File

@ -111,7 +111,7 @@ int main(int argc, char **argv) {
bottom = NF_BG16B[0].height;
}
// Calcula el tamaño de la miniatura y el desplazamiento para posicionarla en pantalla
// Calcula el tamaño de la miniatura y el desplazamiento para posicionarla en pantalla
if (NF_BG16B[0].width >= NF_BG16B[0].height) { // Si la imagen es mas ancha que alta
mini_x = right;
mini_y = (int)((NF_BG16B[0].height * right) / NF_BG16B[0].width);

View File

@ -115,7 +115,7 @@ int main(int argc, char **argv) {
// Texto con color aleatorio
for (n = 4; n < 10; n ++) {
NF_SetTextColor(1, 0, n);
NF_WriteText16(1, 0, 1, (n + 1), "Random Aa 0123456789 Ññ Çç");
NF_WriteText16(1, 0, 1, (n + 1), "Random Aa 0123456789 Ññ Çç");
}
NF_SetTextColor(1, 0, 0); // Deja color del texto por defecto (definido en la fuente)
@ -138,7 +138,7 @@ int main(int argc, char **argv) {
// Escribe de nuevo el texto con los nuevos colores
for (n = 4; n < 10; n ++) {
NF_SetTextColor(1, 0, n);
NF_WriteText16(1, 0, 1, (n + 1), "Random Aa 0123456789 Ññ Çç");
NF_WriteText16(1, 0, 1, (n + 1), "Random Aa 0123456789 Ññ Çç");
}
// Actualiza las capas de texto
NF_UpdateTextLayers();

View File

@ -76,9 +76,9 @@ int main(int argc, char **argv) {
NF_LoadTiledBg("bg/layer3", "moon", 256, 256); // Carga el fondo para la capa 3, pantalla inferior
// Carga la fuente por defecto para el texto
NF_LoadTextFont("fnt/default", "normal", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "right", 256, 256, 1); // Carga la seccion "rotar derecha" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "left", 256, 256, 2); // Carga la seccion "rotar izquierda· de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "normal", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "right", 256, 256, 1); // Carga la seccion "rotar derecha" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "left", 256, 256, 2); // Carga la seccion "rotar izquierda· de la fuente, tamaño del mapa 256x256
// Crea los fondos de la pantalla superior
NF_CreateTiledBg(0, 3, "moon");

View File

@ -76,9 +76,9 @@ int main(int argc, char **argv) {
NF_LoadTiledBg("bg/layer3", "moon", 256, 256); // Carga el fondo para la capa 3, pantalla inferior
// Carga la fuente por defecto para el texto
NF_LoadTextFont16("fnt/font16", "normal", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont16("fnt/font16", "right", 256, 256, 1); // Carga la seccion "rotar derecha" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont16("fnt/font16", "left", 256, 256, 2); // Carga la seccion "rotar izquierda· de la fuente, tamaño del mapa 256x256
NF_LoadTextFont16("fnt/font16", "normal", 256, 256, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont16("fnt/font16", "right", 256, 256, 1); // Carga la seccion "rotar derecha" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont16("fnt/font16", "left", 256, 256, 2); // Carga la seccion "rotar izquierda· de la fuente, tamaño del mapa 256x256
// Crea los fondos de la pantalla superior
NF_CreateTiledBg(0, 3, "moon");

View File

@ -77,8 +77,8 @@ int main(int argc, char **argv) {
NF_LoadTiledBg("bg/layer3", "moon", 256, 256); // Carga el fondo para la capa 3, pantalla inferior
// Carga la fuente por defecto para el texto
NF_LoadTextFont("fnt/default", "up", 256, 768, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "down", 768, 256, 2); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "up", 256, 768, 0); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
NF_LoadTextFont("fnt/default", "down", 768, 256, 2); // Carga la seccion "normal" de la fuente, tamaño del mapa 256x256
// Crea los fondos de la pantalla superior
NF_CreateTiledBg(0, 3, "moon");

View File

@ -133,7 +133,7 @@ int main(int argc, char **argv) {
// Debes enviar datos...
sprintf(temp, "%05lu", contador);
} else {
// o la señal de salida?
// o la señal de salida?
sprintf(temp, "Exit");
}
@ -161,7 +161,7 @@ int main(int argc, char **argv) {
if (_GetData() > 0) {
// Imprime los datos recibidos
printf("Recivido: %s\n", NF_RECV_BUFFER);
// Si has recibido la señal de salida...
// Si has recibido la señal de salida...
if (strcmp(NF_RECV_BUFFER, "Exit") == 0) loop = false;
} else {
// Si no hay datos, esperalos

View File

@ -31,7 +31,7 @@ struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de la LAN
// Estructura del socket
s32 NF_SOCKET; // Id del socket (servidor)
s32 NF_CONNECTED; // Resultado de la conexion
s32 NF_SINSIZE; // Tamaño de la Struct .SIN
s32 NF_SINSIZE; // Tamaño de la Struct .SIN
s32 NF_BYTES_RECIEVED; // Bytes recibidos
struct sockaddr_in NF_SA_SERVER; // Estructura Socket Adress In (Servidor)
@ -143,7 +143,7 @@ bool NF_WIFI_CreateUdpListener(u16 port) {
// Enlaza el socket a un puerto concreto
if ((bind(NF_SOCKET, (struct sockaddr*) &NF_SA_SERVER, sizeof(NF_SA_SERVER))) == -1) status = false;
// Tamaño del struct sockaddr
// Tamaño del struct sockaddr
NF_SINSIZE = sizeof(struct sockaddr);
// Marca esta DS como servidor (recibe datos desde cualquier IP [CLIENTE])

View File

@ -23,7 +23,7 @@
// Defines de la red
#define NF_MAX_INCOMMING_PENDING 1 // Peticiones de conexion maximas en cola
#define NF_WIFI_BUFFER_SIZE 256 // Tamaño del buffer de comunicaciones
#define NF_WIFI_BUFFER_SIZE 256 // Tamaño del buffer de comunicaciones
// Parametros de la RED
extern struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de la LAN
@ -31,7 +31,7 @@ extern struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de
// Estructura del socket
extern s32 NF_SOCKET; // Id del socket (servidor)
extern s32 NF_CONNECTED; // Resultado de la conexion
extern s32 NF_SINSIZE; // Tamaño de la Struct .SIN
extern s32 NF_SINSIZE; // Tamaño de la Struct .SIN
extern s32 NF_BYTES_RECIEVED; // Bytes recibidos
extern struct sockaddr_in NF_SA_SERVER; // Estructura Socket Adress In (Servidor)

View File

@ -31,7 +31,7 @@ struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de la LAN
// Estructura del socket
s32 NF_SOCKET; // Id del socket (servidor)
s32 NF_CONNECTED; // Resultado de la conexion
s32 NF_SINSIZE; // Tamaño de la Struct .SIN
s32 NF_SINSIZE; // Tamaño de la Struct .SIN
s32 NF_BYTES_RECIEVED; // Bytes recibidos
struct sockaddr_in NF_SA_SERVER; // Estructura Socket Adress In (Servidor)
@ -143,7 +143,7 @@ bool NF_WIFI_CreateUdpListener(u16 port) {
// Enlaza el socket a un puerto concreto
if ((bind(NF_SOCKET, (struct sockaddr*) &NF_SA_SERVER, sizeof(NF_SA_SERVER))) == -1) status = false;
// Tamaño del struct sockaddr
// Tamaño del struct sockaddr
NF_SINSIZE = sizeof(struct sockaddr);
// Marca esta DS como servidor (recibe datos desde cualquier IP [CLIENTE])

View File

@ -23,7 +23,7 @@
// Defines de la red
#define NF_MAX_INCOMMING_PENDING 1 // Peticiones de conexion maximas en cola
#define NF_WIFI_BUFFER_SIZE 256 // Tamaño del buffer de comunicaciones
#define NF_WIFI_BUFFER_SIZE 256 // Tamaño del buffer de comunicaciones
// Parametros de la RED
extern struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de la LAN
@ -31,7 +31,7 @@ extern struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de
// Estructura del socket
extern s32 NF_SOCKET; // Id del socket (servidor)
extern s32 NF_CONNECTED; // Resultado de la conexion
extern s32 NF_SINSIZE; // Tamaño de la Struct .SIN
extern s32 NF_SINSIZE; // Tamaño de la Struct .SIN
extern s32 NF_BYTES_RECIEVED; // Bytes recibidos
extern struct sockaddr_in NF_SA_SERVER; // Estructura Socket Adress In (Servidor)

View File

@ -104,15 +104,15 @@ void NF_SpriteFrame(u8 screen, u8 id, u16 frame);
// Funcion NF_EnableSpriteRotScale();
void NF_EnableSpriteRotScale(u8 screen, u8 sprite, u8 id, bool doublesize);
// Habilita el sprite como rotable y escalable
// Debes especificar la pantalla, nº de sprite, id de rotacion y si
// tiene que activarse el doublesize (tamaño x2)
// Debes especificar la pantalla, nº de sprite, id de rotacion y si
// tiene que activarse el doublesize (tamaño x2)
// Funcion NF_DisableSpriteRotScale();
void NF_DisableSpriteRotScale(u8 screen, u8 sprite);
// Deshabilita un sprite como rotable y escalable
// Debes especificar la pantalla y el nº de sprite
// Debes especificar la pantalla y el nº de sprite

View File

@ -32,7 +32,7 @@ void NF_InitOpenGL(void);
// Funcion NF_GetTextureSize();
extern u16 NF_GetTextureSize(u16 textel);
// Devuelve el tamaño del textel
// Devuelve el tamaño del textel

View File

@ -27,7 +27,7 @@ extern "C" {
// Define los Buffers para almacenar datos de 16 bits
typedef struct {
u16* buffer; // Buffer de datos
u32 size; // Tamaño del buffer
u32 size; // Tamaño del buffer
u16 width; // Ancho de la imagen (256 max)
u16 height; // Altura de la imagen (256 max)
bool inuse; // Esta en uso el buffer?
@ -40,9 +40,9 @@ extern u16* NF_16BITS_BACKBUFFER[2];
// Define los Buffers para almacenar datos de 8 bits
typedef struct {
u8* data; // Buffer de datos
u32 data_size; // Tamaño del buffer de datos
u32 data_size; // Tamaño del buffer de datos
u16* pal; // Buffer para la paleta
u32 pal_size; // Tamaño de la paleta
u32 pal_size; // Tamaño de la paleta
bool inuse; // Esta en uso el buffer?
} NF_TYPE_BG8B_INFO;
extern NF_TYPE_BG8B_INFO NF_BG8B[NF_SLOTS_BG8B]; // Fondos indexados de 8 bits
@ -112,7 +112,7 @@ void NF_InitBitmapBgSys(u8 screen, u8 mode);
// Funcion NF_Load16bitsBg();
void NF_Load16bitsBg(const char* file, u8 slot);
// Carga un Fondo BITMAP (en formato RAW) en el slot indicado,
// de un tamaño maximo de 256x256 pixeles.
// de un tamaño maximo de 256x256 pixeles.
// Debes especificar el nombre de archivo sin extension.
// El archivo debe ser un binario con extension .img
@ -121,7 +121,7 @@ void NF_Load16bitsBg(const char* file, u8 slot);
// Funcion NF_Load16bitsImage();
void NF_Load16bitsImage(const char* file, u8 slot, u16 size_x, u16 size_y);
// Carga una imagen BITMAP (en formato RAW) en el slot indicado,
// de un tamaño maximo de 256x256 pixeles.
// de un tamaño maximo de 256x256 pixeles.
// Debes especificar el nombre de archivo sin extension.
// El archivo debe ser un binario con extension .img
// Todos los pixeles Magenta de la imagen (0xFF00FF) seran transparentes.

View File

@ -27,7 +27,7 @@ typedef struct {
char* tiles; // Buffer para almacenar los tiles
char* map; // Buffer para almacenar el mapa
char* pal; // Buffer para almacenar la paleta
u32 tiles_size; // Tamaño de los archivos
u32 tiles_size; // Tamaño de los archivos
u32 map_size;
u32 pal_size;
u16 width; // Ancho del mapa (en pixeles)
@ -60,7 +60,7 @@ void NF_LoadColisionMap(const char* file, u8 id, u16 width, u16 height);
// Funcion NF_UnloadColisionMap();
void NF_UnloadColisionMap(u8 id);
// Borra de la RAM el mapa de colisiones con el nº de slot indicado.
// Borra de la RAM el mapa de colisiones con el nº de slot indicado.

View File

@ -28,7 +28,7 @@ extern char* NF_BUFFER_RAWSOUND[NF_SLOTS_RAWSOUND];
// Define la estructura de datos de los buffers (Audio)
typedef struct {
bool available; // Disponibilidat del Slot
u32 size; // Tamaño (en bytes) del sonido
u32 size; // Tamaño (en bytes) del sonido
u16 freq; // Frecuencia del sample
u8 format; // Formato del sample
} NF_TYPE_RAWSOUND_INFO;

View File

@ -29,7 +29,7 @@ extern char* NF_BUFFER_SPR256PAL[NF_SLOTS_SPR256PAL];
// Define la estructura de datos de los buffers (GFX)
typedef struct {
u32 size; // Tamaño (en bytes) del grafico (GFX)
u32 size; // Tamaño (en bytes) del grafico (GFX)
u16 width; // Ancho del Gfx
u16 height; // Altura del Gfx
bool available; // Disponibilidat del Slot
@ -38,19 +38,19 @@ extern NF_TYPE_SPR256GFX_INFO NF_SPR256GFX[NF_SLOTS_SPR256GFX]; // Buffers de G
// Define la estructura de datos de los buffers (PAL)
typedef struct {
u32 size; // Tamaño (en bytes) de la paleta (PAL)
u32 size; // Tamaño (en bytes) de la paleta (PAL)
bool available; // Disponibilidat del Slot
} NF_TYPE_SPR256PAL_INFO;
extern NF_TYPE_SPR256PAL_INFO NF_SPR256PAL[NF_SLOTS_SPR256PAL]; // Buffers de Paletas
// Define la estructura de Gfx en VRAM
typedef struct {
u32 size; // Tamaño (en bytes) del Gfx
u32 size; // Tamaño (en bytes) del Gfx
u16 width; // Ancho del Gfx
u16 height; // Altura del Gfx
u32 address; // Posicion en la VRAM
u16 ramid; // Numero de Slot en RAM del que provienes
u16 framesize; // Tamaño del frame (en bytes)
u16 framesize; // Tamaño del frame (en bytes)
u16 lastframe; // Ultimo frame
bool keepframes; // Si es un Sprite animado, debes de mantener los frames en RAM ?
bool inuse; // Disponibilidat del Slot
@ -71,7 +71,7 @@ typedef struct {
s16 y; // Coordenada Y del Sprite
u8 layer; // Prioridad en las capas
u8 pal; // Paleta que usaras
u32 size; // Tamaño del Sprite (macro)
u32 size; // Tamaño del Sprite (macro)
u32 color; // Modo de color (macro)
u32* gfx; // Puntero al grafico usado
s8 rot; // Id de rotacion (-1 ninguno) (0 - 31 Id de rotacion)
@ -82,7 +82,7 @@ typedef struct {
bool mosaic; // Mosaico
u16 gfxid; // Id de Gfx usado
u16 frame; // Frame actual
u16 framesize; // Tamaño del frame (en bytes)
u16 framesize; // Tamaño del frame (en bytes)
u16 lastframe; // Ultimo frame
bool created; // Esta creado este sprite ?
} NF_TYPE_SPRITEOAM_INFO;
@ -94,7 +94,7 @@ typedef struct {
u32 next; // Siguiente posicion libre
u32 last; // Ultima posicion usada
u32 pos[128]; // Posicion en VRAM para reusar despues de un borrado
u32 size[128]; // Tamaño del bloque libre para reusar
u32 size[128]; // Tamaño del bloque libre para reusar
u16 deleted; // Numero de bloques borrados
s32 fragmented; // Memoria VRAM fragmentada
s32 inarow; // Memoria VRAM contigua

View File

@ -45,7 +45,7 @@ typedef struct {
u16 gfxid; // Id de Gfx usado
u16 frame; // Frame actual
u16 newframe; // Frame al que cambiar
u16 framesize; // Tamaño del frame (en bytes)
u16 framesize; // Tamaño del frame (en bytes)
u16 lastframe; // Ultimo frame
u32 gfx_pal_format; // Guarda el formato de la paleta
u32 pal; // Direccion donde esta almacenada la paleta en VRAM
@ -58,12 +58,12 @@ extern NF_TYPE_3DSPRITE_INFO NF_3DSPRITE[NF_3DSPRITES];
// Estructura de control Texturas en VRAM
typedef struct {
u32 size; // Tamaño (en bytes) del Gfx
u32 size; // Tamaño (en bytes) del Gfx
u16 width; // Ancho del Gfx
u16 height; // Altura del Gfx
u32 address; // Posicion en la VRAM
u16 ramid; // Numero de Slot en RAM del que provienes
u16 framesize; // Tamaño del frame (en bytes)
u16 framesize; // Tamaño del frame (en bytes)
u16 lastframe; // Ultimo frame
bool keepframes; // Si es un Sprite animado, debes de mantener los frames en RAM ?
bool inuse; // Disponibilidat del Slot
@ -83,7 +83,7 @@ typedef struct {
u32 next; // Siguiente posicion libre
u32 last; // Ultima posicion usada
u32 pos[NF_3DSPRITES]; // Posicion en VRAM para reusar despues de un borrado
u32 size[NF_3DSPRITES]; // Tamaño del bloque libre para reusar
u32 size[NF_3DSPRITES]; // Tamaño del bloque libre para reusar
u16 deleted; // Numero de bloques borrados
s32 fragmented; // Memoria VRAM fragmentada
s32 inarow; // Memoria VRAM contigua
@ -186,7 +186,7 @@ void NF_Rotate3dSprite(u16 id, s16 x, s16 y, s16 z);
// Funcion NF_Scale3dSprite();
void NF_Scale3dSprite(u16 id, u16 x, u16 y);
// Escala el sprite al tamaño indicado (0/64/512)
// Escala el sprite al tamaño indicado (0/64/512)
// Funcion NF_Blend3dSprite();
@ -194,7 +194,7 @@ void NF_Blend3dSprite(u8 sprite, u8 poly_id, u8 alpha);
// Habilita y cambia el nivel de alpha de el sprite 3d indicado. Para que la transparencia
// sea efectiva entre Sprites, debes especificar un poly_id diferente para cada sprite
// (entre 1 y 62). El rango de alpha es de 0 a 31, siendo 31 opaco. Para eliminar la
// transparencia, selecciona un valor para alpha de 31 o especifica como poly_id el nº 0.
// transparencia, selecciona un valor para alpha de 31 o especifica como poly_id el nº 0.
// Funcion NF_3dSpritesLayer();

View File

@ -17,7 +17,7 @@ extern "C" {
// Define el nº de caracteres que tiene la fuente
// Define el nº de caracteres que tiene la fuente
#define NF_TEXT_FONT_CHARS 127
#define NF_TEXT_FONT_LAST_VALID_CHAR 113

View File

@ -17,7 +17,7 @@ extern "C" {
// Define el nº de caracteres que tiene la fuente
// Define el nº de caracteres que tiene la fuente
#define NF_TEXT_FONT_CHARS_16 127
#define NF_TEXT_FONT_LAST_VALID_CHAR_16 113

View File

@ -40,9 +40,9 @@ extern char* NF_BUFFER_BGPAL[NF_SLOTS_TBG];
// Define estructura para almacenar la info de los fondos
typedef struct {
char name[32]; // Nombre del fondo
u32 tilesize; // Tamaño del Tileset
u32 mapsize; // Tamaño del Map
u32 palsize; // Tamaño de la Paleta
u32 tilesize; // Tamaño del Tileset
u32 mapsize; // Tamaño del Map
u32 palsize; // Tamaño de la Paleta
u16 width; // Ancho del fondo
u16 height; // Altura del fondo
bool available; // Disponibilidat del Slot
@ -52,7 +52,7 @@ extern NF_TYPE_TBG_INFO NF_TILEDBG[NF_SLOTS_TBG]; // Datos de los fondos
// Define la estructura para almacenar la info y datos de las paletas extendidas
typedef struct {
char* buffer; // Buffer para almacenar la paleta
u32 palsize; // Tamaño de la paleta
u32 palsize; // Tamaño de la paleta
bool inuse; // Slot libre o en uso
} NF_TYPE_EXBGPAL_INFO;
extern NF_TYPE_EXBGPAL_INFO NF_EXBGPAL[NF_SLOTS_EXBGPAL]; // Datos de las paletas extendidas
@ -221,7 +221,7 @@ void NF_BgGetPalColor(u8 screen, u8 layer, u8 number, u8* r, u8* g, u8* b);
// Funcion NF_GetTilePal();
extern u8 NF_GetTilePal(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
// Devuelve que numero de paleta (0 - 15) esta usando el tile del fondo especificado.
// Por defecto, todos los tiles usan la paleta del Slot nº0
// Por defecto, todos los tiles usan la paleta del Slot nº0
// Los datos se obtienen de la compia en RAM del mapa del fondo.
@ -231,7 +231,7 @@ extern u8 NF_GetTilePal(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
// Funcion NF_SetTilePal();
void NF_SetTilePal(u8 screen, u8 layer, u16 tile_x, u16 tile_y, u8 pal);
// Cambia el numero de paleta (0 - 15) que usara el tile del fondo especificado.
// Por defecto, todos los tiles usan la paleta del Slot nº0
// Por defecto, todos los tiles usan la paleta del Slot nº0
// Los datos se escriben de la compia en RAM del mapa del fondo, por lo que no seran
// visibles hasta que ejecutes la funcion NF_UpdateVramMap();
@ -298,9 +298,9 @@ void NF_RotateTileGfx(u8 slot, u16 tile, u8 rotation);
// Rota el grafico de un tile especificado. Rota el tile almacenado en un buffer de fondos
// que se encuentra en RAM. Debes especificar el SLOT del buffer, numero de tile en el buffer
// y el angulo de la rotacion.
// 1 - 90º a la derecha
// 2 - 90º a la izquierda
// 3 - 180º
// 1 - 90º a la derecha
// 2 - 90º a la izquierda
// 3 - 180º

View File

@ -160,7 +160,7 @@ void NF_ScrollBg(u8 screen, u8 layer, s16 x, s16 y) {
// Variables temporales de Fondos infinitos
u32 address = 0; // Puntero a la VRAM
u16 blockx = 0; // Nº de bloque en pantalla
u16 blockx = 0; // Nº de bloque en pantalla
u16 blocky = 0;
u32 mapmovex = 0; // Desplazamiento de la copia de datos (block x 2048)
u32 mapmovey = 0;

View File

@ -57,7 +57,7 @@ void NF_InitOpenGL(void) {
// Inicializa el OpenGL de Libnds
glInit();
// Define el tamaño de la ventana 3D (toda la pantalla)
// Define el tamaño de la ventana 3D (toda la pantalla)
glViewport(0, 0, 255, 191);
// Configura la matriz de proyeccion
@ -97,7 +97,7 @@ u16 NF_GetTextureSize(u16 textel) {
// Variables
u16 size = 0;
// Devuelve el tamaño del textel, segun su base2
// Devuelve el tamaño del textel, segun su base2
switch (textel) {
case 8:
size = 0;

View File

@ -110,11 +110,11 @@ void NF_LoadAffineBg(const char* file, const char* name, u16 width, u16 height)
if (((width == 256) && (height == 256)) || ((width == 512) && (height == 512))) {
// Medida Ok
} else {
// Error de tamaño
// Error de tamaño
NF_Error(117, name, 0);
}
// Variable temporal del tamaño de la paleta
// Variable temporal del tamaño de la paleta
u32 pal_size = 0;
// Busca un slot libre
@ -150,7 +150,7 @@ void NF_LoadAffineBg(const char* file, const char* name, u16 width, u16 height)
sprintf(filename, "%s/%s.img", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_TILEDBG[slot].tilesize = ftell(file_id);
rewind(file_id);
@ -167,7 +167,7 @@ void NF_LoadAffineBg(const char* file, const char* name, u16 width, u16 height)
fclose(file_id); // Cierra el archivo
// swiWaitForVBlank(); // Espera al cierre del archivo (Usar en caso de corrupcion de datos)
// Verifica el tamaño del tileset (Menos de 256 tiles)
// Verifica el tamaño del tileset (Menos de 256 tiles)
if (NF_TILEDBG[slot].tilesize > 16384) NF_Error(117, name, 0);
@ -175,9 +175,9 @@ void NF_LoadAffineBg(const char* file, const char* name, u16 width, u16 height)
sprintf(filename, "%s/%s.map", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_TILEDBG[slot].mapsize = ((((ftell(file_id) - 1) >> 10) + 1) << 10); // Ajusta el tamaño a bloques de 1kb
NF_TILEDBG[slot].mapsize = ((((ftell(file_id) - 1) >> 10) + 1) << 10); // Ajusta el tamaño a bloques de 1kb
rewind(file_id);
// Reserva el espacio en RAM
NF_BUFFER_BGMAP[slot] = (char*) calloc (NF_TILEDBG[slot].mapsize, sizeof(char));
@ -196,12 +196,12 @@ void NF_LoadAffineBg(const char* file, const char* name, u16 width, u16 height)
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
pal_size = ftell(file_id);
NF_TILEDBG[slot].palsize = pal_size;
rewind(file_id);
// Si el tamaño es inferior a 512 bytes, ajustalo
// Si el tamaño es inferior a 512 bytes, ajustalo
if (NF_TILEDBG[slot].palsize < 512) NF_TILEDBG[slot].palsize = 512;
// Reserva el espacio en RAM
NF_BUFFER_BGPAL[slot] = (char*) calloc (NF_TILEDBG[slot].palsize, sizeof(char));
@ -270,7 +270,7 @@ void NF_CreateAffineBg(u8 screen, u8 layer, const char* name, u8 wrap) {
u8 tilesblocks = 0;
u8 basetiles = 0;
// Transfiere el tamaño del fondo
// Transfiere el tamaño del fondo
NF_TILEDBG_LAYERS[screen][layer].bgwidth = NF_TILEDBG[slot].width; // Ancho del fondo
NF_TILEDBG_LAYERS[screen][layer].bgheight = NF_TILEDBG[slot].height; // Altura del fondo
NF_TILEDBG_LAYERS[screen][layer].mapwidth = NF_TILEDBG[slot].width; // Ancho del mapa
@ -278,7 +278,7 @@ void NF_CreateAffineBg(u8 screen, u8 layer, const char* name, u8 wrap) {
NF_TILEDBG_LAYERS[screen][layer].bgtype = 0; // Tipo de fondo
NF_TILEDBG_LAYERS[screen][layer].bgslot = slot; // Buffer de graficos usado
// Calcula el tipo y tamaño del mapa
// Calcula el tipo y tamaño del mapa
n = 0;
// ( 256 x 256 )
if ((NF_TILEDBG[slot].width == 256) && (NF_TILEDBG[slot].height == 256)) {
@ -295,7 +295,7 @@ void NF_CreateAffineBg(u8 screen, u8 layer, const char* name, u8 wrap) {
n = 1;
}
// Verifica el tamaño del tileset (Menos de 256 tiles)
// Verifica el tamaño del tileset (Menos de 256 tiles)
if (NF_TILEDBG[slot].tilesize > 16384) n = 0;
// Si el fondo es de una medida incorrecta...
@ -368,7 +368,7 @@ void NF_CreateAffineBg(u8 screen, u8 layer, const char* name, u8 wrap) {
}
// Obten el tamaño del fondo
// Obten el tamaño del fondo
s32 bg_size = 0;
// 256x256
if ((NF_TILEDBG_LAYERS[screen][layer].mapwidth == 256) && (NF_TILEDBG_LAYERS[screen][layer].mapheight == 256)) {
@ -475,8 +475,8 @@ void NF_DeleteAffineBg(u8 screen, u8 layer) {
u8 n; // Uso general
u16 basetiles = 0; // Base del Tileset
u16 basemap = 0; // Base del Map
u16 tilesize = 0; // Tamaño del Tileset
u16 mapsize = 0; // Tamaño del Map
u16 tilesize = 0; // Tamaño del Tileset
u16 mapsize = 0; // Tamaño del Map
// Borra el Tileset de la VRAM
basetiles = NF_TILEDBG_LAYERS[screen][layer].tilebase;

View File

@ -122,7 +122,7 @@ void NF_Error(u16 code, const char* text, u32 value) {
case 114: // La capa de Texto no existe
iprintf("Text layer on screen\n");
iprintf("nº %d don't exist.\n", (int)value);
iprintf("nº %d don't exist.\n", (int)value);
break;
case 115: // Medidas del fondo no compatibles (no son multiplos de 256)
@ -153,13 +153,13 @@ void NF_Error(u16 code, const char* text, u32 value) {
iprintf("on layers 2 or 3.\n");
break;
case 119: // Tamaño de la textura ilegal.
case 119: // Tamaño de la textura ilegal.
iprintf("Texture id.%d illegal size.\n", (int)value);
iprintf("Only power of 2 sizes can\n");
iprintf("be used (8 to 1024).\n");
break;
case 120: // Tamaño de la Sprite ilegal.
case 120: // Tamaño de la Sprite ilegal.
iprintf("Sprite id.%d illegal size.\n", (int)value);
iprintf("8x8 Sprites can't be used\n");
iprintf("in 1D_128 mode.\n");

View File

@ -233,18 +233,18 @@ void NF_Load16bImgData(const char* file, u8 slot, u16 x, u16 y, u8 type) {
// Variable para almacenar el path al archivo
char filename[256];
// Variable para el tamaño de archivo
// Variable para el tamaño de archivo
u32 size = 0;
// Carga el archivo .IMG
sprintf(filename, "%s/%s.img", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
size = ftell(file_id);
rewind(file_id);
// Si excede del tamaño maximo (128kb), error
// Si excede del tamaño maximo (128kb), error
if (size > 131072) NF_Error(116, filename, 131072);
// Reserva el espacio en RAM
NF_BG16B[slot].buffer = (u16*) calloc ((size >> 1), sizeof(u16));
@ -265,7 +265,7 @@ void NF_Load16bImgData(const char* file, u8 slot, u16 x, u16 y, u8 type) {
}
// Guarda los parametros del fondo
NF_BG16B[slot].size = size; // Guarda el tamaño
NF_BG16B[slot].size = size; // Guarda el tamaño
NF_BG16B[slot].width = x; // Ancho del fondo
NF_BG16B[slot].height = y; // Altura del fondo
NF_BG16B[slot].inuse = true; // Marca que esta en uso
@ -284,7 +284,7 @@ void NF_Unload16bitsBg(u8 slot) {
free(NF_BG16B[slot].buffer);
NF_BG16B[slot].buffer = NULL;
NF_BG16B[slot].size = 0; // Tamaño a 0
NF_BG16B[slot].size = 0; // Tamaño a 0
NF_BG16B[slot].inuse = false; // Marca que esta libre
}
@ -417,18 +417,18 @@ void NF_Load8bitsBg(const char* file, u8 slot) {
// Variable para almacenar el path al archivo
char filename[256];
// Variable para el tamaño de archivo
// Variable para el tamaño de archivo
u32 size = 0;
// Carga el archivo .IMG
sprintf(filename, "%s/%s.img", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
size = ftell(file_id);
rewind(file_id);
// Si excede del tamaño maximo (64kb), error
// Si excede del tamaño maximo (64kb), error
if (size > 65536) NF_Error(116, filename, 65536);
// Reserva el espacio en RAM
NF_BG8B[slot].data = (u8*) calloc (size, sizeof(u8));
@ -441,17 +441,17 @@ void NF_Load8bitsBg(const char* file, u8 slot) {
NF_Error(101, filename, 0);
}
fclose(file_id); // Cierra el archivo
NF_BG8B[slot].data_size = size; // Guarda el tamaño del buffer
NF_BG8B[slot].data_size = size; // Guarda el tamaño del buffer
// Carga el archivo .PAL
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
size = ftell(file_id);
rewind(file_id);
// Si la paleta tiene un tamaño inferior a 512, ajusta el tamaño
// Si la paleta tiene un tamaño inferior a 512, ajusta el tamaño
if (size < 512) size = 512;
// Reserva el espacio en RAM
NF_BG8B[slot].pal = (u16*) calloc ((size >> 1), sizeof(u16));
@ -464,7 +464,7 @@ void NF_Load8bitsBg(const char* file, u8 slot) {
NF_Error(101, filename, 0);
}
fclose(file_id); // Cierra el archivo
NF_BG8B[slot].pal_size = size; // Guarda el tamaño del buffer
NF_BG8B[slot].pal_size = size; // Guarda el tamaño del buffer
// Marca el slot como que esta en uso
NF_BG8B[slot].inuse = true;

View File

@ -36,7 +36,7 @@ void NF_InitCmapBuffers(void) {
for (n = 0; n < NF_SLOTS_CMAP; n ++) {
NF_CMAP[n].tiles = NULL; // Inicializa los punteros de los buffers
NF_CMAP[n].map = NULL;
NF_CMAP[n].tiles_size = 0; // Tamaño de archivo
NF_CMAP[n].tiles_size = 0; // Tamaño de archivo
NF_CMAP[n].map_size = 0;
NF_CMAP[n].width = 0; // Ancho del mapa
NF_CMAP[n].height = 0; // Alto del mapa
@ -85,7 +85,7 @@ void NF_LoadColisionMap(const char* file, u8 id, u16 width, u16 height) {
sprintf(filename, "%s/%s.cmp", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_CMAP[id].map_size = ftell(file_id);
rewind(file_id);
@ -161,7 +161,7 @@ u16 NF_GetTile(u8 slot, s32 x, s32 y) {
u16 tile_x = (x >> 3);
u16 tile_y = (y >> 3) + 1; // +1, por que la primera fila se reserva para la referencia de tiles
// Calcula el nº de tile
// Calcula el nº de tile
u32 address = (((tile_y * columns) + tile_x) << 1);
// Obten los bytes
@ -198,9 +198,9 @@ void NF_SetTile(u8 slot, s32 x, s32 y, u16 value) {
u16 tile_x = (x >> 3);
u16 tile_y = (y >> 3) + 1; // +1, por que la primera fila se reserva para la referencia de tiles
// Calcula el nº de tile
// Calcula el nº de tile
u32 address = (((tile_y * columns) + tile_x) << 1);
// nº de tile x2, dado que el mapa es de 16 bits (2 bytes por dato) y el buffer
// nº de tile x2, dado que el mapa es de 16 bits (2 bytes por dato) y el buffer
// es de 8 bits, se lee el 2do byte, por eso se multiplica por 2.
// Calcula los valores de los bytes
@ -246,7 +246,7 @@ void NF_LoadColisionBg(const char* file, u8 id, u16 width, u16 height) {
sprintf(filename, "%s/%s.dat", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_CMAP[id].tiles_size = ftell(file_id);
rewind(file_id);
@ -266,7 +266,7 @@ void NF_LoadColisionBg(const char* file, u8 id, u16 width, u16 height) {
sprintf(filename, "%s/%s.cmp", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_CMAP[id].map_size = ftell(file_id);
rewind(file_id);

View File

@ -42,17 +42,17 @@ void NF_LoadBMP(const char* file, u8 slot) {
// Define la estructura para almacenar la cabecera del BMP
typedef struct {
u32 bmp_size; // Tamaño en bytes del BMP
u32 bmp_size; // Tamaño en bytes del BMP
u16 res_a; // Reservado
u16 res_b; // Reservado
u32 offset; // Offset donde empiezan los datos
u32 header_size; // Tamaño de la cabecera (40 bytes)
u32 header_size; // Tamaño de la cabecera (40 bytes)
u32 bmp_width; // Ancho de la imagen en pixeles
u32 bmp_height; // Altura de la imagen en pixeles
u16 color_planes; // Numero de planos de color
u16 bpp; // Numero de bits por pixel
u32 compression; // Compresion usada
u32 raw_size; // Tamaño de los datos en RAW despues de la cabecera
u32 raw_size; // Tamaño de los datos en RAW despues de la cabecera
u32 dpi_hor; // Puntos por pulgada (horizontal)
u32 dpi_ver; // Puntos por pulgada (vertical)
u32 pal_colors; // Numero de colores en la paleta
@ -114,9 +114,9 @@ void NF_LoadBMP(const char* file, u8 slot) {
u8 g = 0;
u8 b = 0;
u16 colors = 0; // En 8 bits, numero de colores
u32 size = 0; // Tamaño del buffer de 16 bits (en bytes)
u32 size = 0; // Tamaño del buffer de 16 bits (en bytes)
// Habilita el buffer de destino (u16 de alto x ancho del tamaño de imagen)
// Habilita el buffer de destino (u16 de alto x ancho del tamaño de imagen)
size = ((bmp_header.bmp_width * bmp_header.bmp_height) << 1);
free(NF_BG16B[slot].buffer);
NF_BG16B[slot].buffer = NULL;
@ -127,7 +127,7 @@ void NF_LoadBMP(const char* file, u8 slot) {
switch (bmp_header.bpp) {
case 8: // 8 bits por pixel
// Calcula el tamaño de la paleta
// Calcula el tamaño de la paleta
colors = ((bmp_header.offset - 0x36) >> 2);
palette = (char*) calloc ((colors << 2), sizeof(char));
if (palette == NULL) NF_Error(102, NULL, (colors << 2));
@ -207,7 +207,7 @@ void NF_LoadBMP(const char* file, u8 slot) {
}
// Guarda los parametros del fondo
NF_BG16B[slot].size = size; // Guarda el tamaño
NF_BG16B[slot].size = size; // Guarda el tamaño
NF_BG16B[slot].width = bmp_header.bmp_width; // Ancho del fondo
NF_BG16B[slot].height = bmp_header.bmp_height; // Altura del fondo
NF_BG16B[slot].inuse = true; // Marca que esta en uso

View File

@ -47,7 +47,7 @@ void NF_InitRawSoundBuffers(void) {
for (n = 0; n < NF_SLOTS_RAWSOUND; n ++) {
NF_BUFFER_RAWSOUND[n] = NULL; // Inicializa puntero
NF_RAWSOUND[n].available = true; // Disponibilidad del slot
NF_RAWSOUND[n].size = 0; // Tamaño del archivo
NF_RAWSOUND[n].size = 0; // Tamaño del archivo
NF_RAWSOUND[n].freq = 0; // Frecuencia del sample
NF_RAWSOUND[n].format = 0; // Formato del sample
}
@ -104,11 +104,11 @@ void NF_LoadRawSound(const char* file, u16 id, u16 freq, u8 format) {
sprintf(filename, "%s/%s.raw", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_RAWSOUND[id].size = ftell(file_id);
rewind(file_id);
// Si excede del tamaño maximo, error
// Si excede del tamaño maximo, error
if (NF_RAWSOUND[id].size > (1 << 18)) NF_Error(116, filename, (1 << 18));
// Reserva el espacio en RAM
NF_BUFFER_RAWSOUND[id] = (char*) calloc (NF_RAWSOUND[id].size, sizeof(char));

View File

@ -60,7 +60,7 @@ void NF_InitSpriteBuffers(void) {
// Inicializa Buffers de GFX
for (n = 0; n < NF_SLOTS_SPR256GFX; n ++) {
NF_BUFFER_SPR256GFX[n] = NULL; // Inicializa puntero
NF_SPR256GFX[n].size = 0; // Tamaño (en bytes) del grafico (GFX)
NF_SPR256GFX[n].size = 0; // Tamaño (en bytes) del grafico (GFX)
NF_SPR256GFX[n].width = 0; // Ancho del Gfx
NF_SPR256GFX[n].height = 0; // Altura del Gfx
NF_SPR256GFX[n].available = true; // Disponibilidat del Slot
@ -69,7 +69,7 @@ void NF_InitSpriteBuffers(void) {
// Inicializa Buffers de PAL
for (n = 0; n < NF_SLOTS_SPR256PAL; n ++) {
NF_BUFFER_SPR256PAL[n] = NULL; // Inicializa puntero
NF_SPR256PAL[n].size = 0; // Tamaño (en bytes) de la paleta (PAL)
NF_SPR256PAL[n].size = 0; // Tamaño (en bytes) de la paleta (PAL)
NF_SPR256PAL[n].available = true; // Disponibilidat del Slot
}
@ -116,12 +116,12 @@ void NF_InitSpriteSys(int screen, ...) {
// y la estructura de datos del OAM (Sprites)
for (n = 0; n < 128; n ++) { // 128 sprites
// Gfx en la VRAM (128 Gfx x pantalla)
NF_SPR256VRAM[screen][n].size = 0; // Tamaño (en bytes) del Gfx
NF_SPR256VRAM[screen][n].size = 0; // Tamaño (en bytes) del Gfx
NF_SPR256VRAM[screen][n].width = 0; // Ancho del Gfx
NF_SPR256VRAM[screen][n].height = 0; // Altura del Gfx
NF_SPR256VRAM[screen][n].address = 0; // Posicion en la VRAM
NF_SPR256VRAM[screen][n].ramid = 0; // Numero de Slot en RAM del que provienes
NF_SPR256VRAM[screen][n].framesize = 0; // Tamaño del frame (en bytes)
NF_SPR256VRAM[screen][n].framesize = 0; // Tamaño del frame (en bytes)
NF_SPR256VRAM[screen][n].lastframe = 0; // Ultimo frame
NF_SPR256VRAM[screen][n].keepframes = false; // Si es un Sprite animado, debes de mantener los frames en RAM ?
NF_SPR256VRAM[screen][n].inuse = false; // Esta en uso ?
@ -131,7 +131,7 @@ void NF_InitSpriteSys(int screen, ...) {
NF_SPRITEOAM[screen][n].y = 0; // Coordenada Y del Sprite (0 por defecto)
NF_SPRITEOAM[screen][n].layer = 0; // Prioridad en las capas (0 por defecto)
NF_SPRITEOAM[screen][n].pal = 0; // Paleta que usaras (0 por defecto)
NF_SPRITEOAM[screen][n].size = SpriteSize_8x8; // Tamaño del Sprite (macro) (8x8 por defecto)
NF_SPRITEOAM[screen][n].size = SpriteSize_8x8; // Tamaño del Sprite (macro) (8x8 por defecto)
NF_SPRITEOAM[screen][n].color = SpriteColorFormat_256Color; // Modo de color (macro) (256 colores)
NF_SPRITEOAM[screen][n].gfx = NULL; // Puntero al grafico usado
NF_SPRITEOAM[screen][n].rot = -1; // Id de rotacion (-1 por defecto) (0 - 31 Id de rotacion)
@ -142,7 +142,7 @@ void NF_InitSpriteSys(int screen, ...) {
NF_SPRITEOAM[screen][n].mosaic = false; // Mosaico ("NO" por defecto)
NF_SPRITEOAM[screen][n].gfxid = 0; // Numero de Gfx usado
NF_SPRITEOAM[screen][n].frame = 0; // Frame actual
NF_SPRITEOAM[screen][n].framesize = 0; // Tamaño del frame (en bytes)
NF_SPRITEOAM[screen][n].framesize = 0; // Tamaño del frame (en bytes)
NF_SPRITEOAM[screen][n].lastframe = 0; // Ultimo frame
NF_SPRITEOAM[screen][n].created = false; // Esta creado este sprite ?
}
@ -160,7 +160,7 @@ void NF_InitSpriteSys(int screen, ...) {
NF_SPRVRAM[screen].inarow = NF_SPRVRAM[screen].max; // Memoria VRAM contigua
for (n = 0; n < 128; n ++) {
NF_SPRVRAM[screen].pos[n] = 0; // Posicion en VRAM para reusar despues de un borrado
NF_SPRVRAM[screen].size[n] = 0; // Tamaño del bloque libre para reusar
NF_SPRVRAM[screen].size[n] = 0; // Tamaño del bloque libre para reusar
}
// Inicializa los datos de las paletas
@ -233,7 +233,7 @@ void NF_LoadSpriteGfx(const char* file, u16 id, u16 width, u16 height) {
sprintf(filename, "%s/%s.img", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_SPR256GFX[id].size = ftell(file_id);
rewind(file_id);
@ -278,7 +278,7 @@ void NF_UnloadSpriteGfx(u16 id) {
// Y reinicia las variables
NF_BUFFER_SPR256GFX[id] = NULL; // Inicializa puntero
NF_SPR256GFX[id].size = 0; // Tamaño (en bytes) del grafico (GFX)
NF_SPR256GFX[id].size = 0; // Tamaño (en bytes) del grafico (GFX)
NF_SPR256GFX[id].width = 0; // Ancho del Gfx
NF_SPR256GFX[id].height = 0; // Altura del Gfx
NF_SPR256GFX[id].available = true; // Disponibilidat del Slot
@ -290,7 +290,7 @@ void NF_UnloadSpriteGfx(u16 id) {
// Funcion NF_LoadSpritePal();
void NF_LoadSpritePal(const char* file, u8 id) {
// Variable temporal del tamaño de la paleta
// Variable temporal del tamaño de la paleta
u32 pal_size = 0;
// Verifica el rango de Id's
@ -317,12 +317,12 @@ void NF_LoadSpritePal(const char* file, u8 id) {
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
pal_size = ftell(file_id);
NF_SPR256PAL[id].size = pal_size;
rewind(file_id);
// Si el tamaño es inferior a 512 bytes, ajustalo
// Si el tamaño es inferior a 512 bytes, ajustalo
if (NF_SPR256PAL[id].size < 512) NF_SPR256PAL[id].size = 512;
// Reserva el espacio en RAM
NF_BUFFER_SPR256PAL[id] = (char*) calloc (NF_SPR256PAL[id].size, sizeof(char));
@ -361,7 +361,7 @@ void NF_UnloadSpritePal(u8 id) {
// Y reinicia las variables
NF_BUFFER_SPR256PAL[id] = NULL; // Inicializa puntero
NF_SPR256PAL[id].size = 0; // Tamaño (en bytes) de la paleta (PAL)
NF_SPR256PAL[id].size = 0; // Tamaño (en bytes) de la paleta (PAL)
NF_SPR256PAL[id].available = true; // Disponibilidat del Slot
}
@ -394,14 +394,14 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
// Variables de uso general
s16 n = 0; // General
s16 id = 255; // Id del posible bloque libre
s16 last_reuse = 0; // Nº del ultimo bloque reusable
u32 gfxsize = 0; // Tamaño de los datos que se copiaran
u32 size = 0; // Diferencia de tamaños entre bloque libre y datos
s16 last_reuse = 0; // Nº del ultimo bloque reusable
u32 gfxsize = 0; // Tamaño de los datos que se copiaran
u32 size = 0; // Diferencia de tamaños entre bloque libre y datos
u8 width = 0; // Calculo de las medidas
u8 height = 0;
bool organize = true; // Se debe de reorganizar el array de bloques libres ?
// Auto calcula el tamaño de 1 frame
// Auto calcula el tamaño de 1 frame
width = (NF_SPR256GFX[ram].width >> 3); // (width / 8)
height = (NF_SPR256GFX[ram].height >> 3); // (height / 8)
NF_SPR256VRAM[screen][vram].framesize = ((width * height) << 6); // ((width * height) * 64)
@ -409,7 +409,7 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
NF_SPR256VRAM[screen][vram].lastframe = ((int)(NF_SPR256GFX[ram].size / NF_SPR256VRAM[screen][vram].framesize)) - 1;
NF_SPR256VRAM[screen][vram].inuse = true; // Slot ocupado
// Calcula el tamaño del grafico a copiar segun si debes o no copiar todos los frames
// Calcula el tamaño del grafico a copiar segun si debes o no copiar todos los frames
if (keepframes) { // Si debes de mantener los frames en RAM, solo copia el primero
gfxsize = NF_SPR256VRAM[screen][vram].framesize;
} else { // Si no, copialos todos
@ -424,20 +424,20 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
NF_Error(113, "Sprites", gfxsize);
}
// Si hay que aprovechar algun bloque borrado... (tamaño identico, preferente)
// Si hay que aprovechar algun bloque borrado... (tamaño identico, preferente)
if (NF_SPRVRAM[screen].deleted > 0) {
// Busca un bloque vacio del tamaño identico
// Busca un bloque vacio del tamaño identico
for (n = 0; n < NF_SPRVRAM[screen].deleted; n ++) {
if (NF_SPRVRAM[screen].size[n] == gfxsize) { // Si el bloque tiene el tamaño suficiente
if (NF_SPRVRAM[screen].size[n] == gfxsize) { // Si el bloque tiene el tamaño suficiente
id = n; // Guarda la Id
n = NF_SPRVRAM[screen].deleted; // y sal
}
}
// Si no habia ningun bloque de tamaño identico, busca el mas parecido (produce fragmentacion)
// Si no habia ningun bloque de tamaño identico, busca el mas parecido (produce fragmentacion)
if (id == 255) {
// Busca un bloque vacio del tamaño suficiente
// Busca un bloque vacio del tamaño suficiente
for (n = 0; n < NF_SPRVRAM[screen].deleted; n ++) {
if (NF_SPRVRAM[screen].size[n] > gfxsize) { // Si el bloque tiene el tamaño suficiente
if (NF_SPRVRAM[screen].size[n] > gfxsize) { // Si el bloque tiene el tamaño suficiente
id = n; // Guarda la Id
n = NF_SPRVRAM[screen].deleted; // y sal
}
@ -445,7 +445,7 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
}
}
// Si hay algun bloque borrado libre del tamaño suficiente...
// Si hay algun bloque borrado libre del tamaño suficiente...
if (id != 255) {
// Transfiere el grafico a la VRAM
@ -453,18 +453,18 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
// Guarda el puntero donde lo has almacenado
NF_SPR256VRAM[screen][vram].address = NF_SPRVRAM[screen].pos[id];
// Si no has usado todo el tamaño, deja constancia
// Si no has usado todo el tamaño, deja constancia
if (gfxsize < NF_SPRVRAM[screen].size[id]) {
// Calcula el tamaño del nuevo bloque libre
// Calcula el tamaño del nuevo bloque libre
size = (NF_SPRVRAM[screen].size[id] - gfxsize);
// Actualiza los datos
NF_SPRVRAM[screen].pos[id] += gfxsize; // Nueva direccion
NF_SPRVRAM[screen].size[id] = size; // Nuevo tamaño
NF_SPRVRAM[screen].size[id] = size; // Nuevo tamaño
NF_SPRVRAM[screen].fragmented -= gfxsize; // Actualiza el contador de VRAM fragmentada
organize = false; // No se debe de reorganizar el array de bloques
} else { // Si has usado todo el tamaño, deja constancia
} else { // Si has usado todo el tamaño, deja constancia
NF_SPRVRAM[screen].fragmented -= NF_SPRVRAM[screen].size[id]; // Actualiza el contador de VRAM fragmentada
@ -480,12 +480,12 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
) {
// Coloca los valores de la ultima posicion en esta
NF_SPRVRAM[screen].pos[id] = NF_SPRVRAM[screen].pos[last_reuse]; // Nueva direccion
NF_SPRVRAM[screen].size[id] = NF_SPRVRAM[screen].size[last_reuse]; // Nuevo tamaño
NF_SPRVRAM[screen].size[id] = NF_SPRVRAM[screen].size[last_reuse]; // Nuevo tamaño
}
NF_SPRVRAM[screen].deleted --; // Actualiza el contador de bloques libres, borrando el ultimo registro
}
} else { // Si no habia ningun bloque borrado o con el tamaño suficiente, colacalo al final de la VRAM ocupada
} else { // Si no habia ningun bloque borrado o con el tamaño suficiente, colacalo al final de la VRAM ocupada
// Actualiza la VRAM contigua disponible (mayor bloque libre al final)
NF_SPRVRAM[screen].inarow -= gfxsize;
@ -507,7 +507,7 @@ void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes) {
}
// Guarda los datos del Gfx que se copiara a la VRAM.
NF_SPR256VRAM[screen][vram].size = gfxsize; // Tamaño en bytes de los datos copiados
NF_SPR256VRAM[screen][vram].size = gfxsize; // Tamaño en bytes de los datos copiados
NF_SPR256VRAM[screen][vram].width = NF_SPR256GFX[ram].width; // Alto (px)
NF_SPR256VRAM[screen][vram].height = NF_SPR256GFX[ram].height; // Ancho (px)
NF_SPR256VRAM[screen][vram].ramid = ram; // Slot RAM de origen
@ -531,7 +531,7 @@ void NF_FreeSpriteGfx(u8 screen, u16 id) {
// Actualiza la cantidad de VRAM disponible
NF_SPRVRAM[screen].free += NF_SPR256VRAM[screen][id].size;
// Guarda la posicion y tamaño del bloque borrado para su reutilizacion
// Guarda la posicion y tamaño del bloque borrado para su reutilizacion
NF_SPRVRAM[screen].pos[NF_SPRVRAM[screen].deleted] = NF_SPR256VRAM[screen][id].address;
NF_SPRVRAM[screen].size[NF_SPRVRAM[screen].deleted] = NF_SPR256VRAM[screen][id].size;
@ -542,11 +542,11 @@ void NF_FreeSpriteGfx(u8 screen, u16 id) {
NF_SPRVRAM[screen].fragmented += NF_SPR256VRAM[screen][id].size;
// Reinicia los datos de esta Id. de gfx
NF_SPR256VRAM[screen][id].size = 0; // Tamaño en bytes
NF_SPR256VRAM[screen][id].size = 0; // Tamaño en bytes
NF_SPR256VRAM[screen][id].width = 0; // Alto (px)
NF_SPR256VRAM[screen][id].height = 0; // Ancho (px)
NF_SPR256VRAM[screen][id].address = 0; // Puntero en VRAM
NF_SPR256VRAM[screen][id].framesize = 0; // Tamaño del frame (en bytes)
NF_SPR256VRAM[screen][id].framesize = 0; // Tamaño del frame (en bytes)
NF_SPR256VRAM[screen][id].lastframe = 0; // Ultimo frame
NF_SPR256VRAM[screen][id].inuse = false;
@ -571,7 +571,7 @@ void NF_VramSpriteGfxDefrag(u8 screen) {
}
char* address[128]; // Guarda la direccion en RAM
u32 size[128]; // Guarda el tamaño
u32 size[128]; // Guarda el tamaño
u32 ram = 0; // Puntero inicial de RAM
u8 n = 0; // Variable General
u32 frame_address = 0; // Guarda la direccion de VRAM del frame
@ -583,7 +583,7 @@ void NF_VramSpriteGfxDefrag(u8 screen) {
if (NF_SPR256VRAM[screen][n].inuse) {
// Copia el Gfx a la RAM
address[n] = (buffer + ram); // Calcula el puntero
size[n] = NF_SPR256VRAM[screen][n].size; // Almacena el tamaño
size[n] = NF_SPR256VRAM[screen][n].size; // Almacena el tamaño
NF_DmaMemCopy(address[n], (void*)NF_SPR256VRAM[screen][n].address, size[n]); // Copialo a la VRAM
ram += size[n]; // Siguiente posicion en RAM (relativa)
}
@ -597,7 +597,7 @@ void NF_VramSpriteGfxDefrag(u8 screen) {
NF_SPRVRAM[screen].inarow = NF_SPRVRAM[screen].max; // Memoria VRAM contigua
for (n = 0; n < 128; n ++) {
NF_SPRVRAM[screen].pos[n] = 0; // Posicion en VRAM para reusar despues de un borrado
NF_SPRVRAM[screen].size[n] = 0; // Tamaño del bloque libre para reusar
NF_SPRVRAM[screen].size[n] = 0; // Tamaño del bloque libre para reusar
}
// Aplica la direccion de inicio de la VRAM
if (screen == 0) {
@ -737,9 +737,9 @@ void NF_CreateSprite(u8 screen, u8 id, u16 gfx, u8 pal, s16 x, s16 y) {
// Informa al array de OAM de que el sprite se ha creado
NF_SPRITEOAM[screen][id].created = true;
// Informa al array de OAM del tamaño
// Informa al array de OAM del tamaño
if ((NF_SPR256VRAM[screen][gfx].width == 8) && (NF_SPR256VRAM[screen][gfx].height == 8)) { // 8x8
if (NF_SPRVRAM[screen].max != 131072) { // En modo 1D_128, este tamaño es ilegal
if (NF_SPRVRAM[screen].max != 131072) { // En modo 1D_128, este tamaño es ilegal
NF_SPRITEOAM[screen][id].size = SpriteSize_8x8;
} else {
NF_Error(120, NULL, id);
@ -782,7 +782,7 @@ void NF_CreateSprite(u8 screen, u8 id, u16 gfx, u8 pal, s16 x, s16 y) {
// Informa al array de OAM del ultimo frame del Sprite
NF_SPRITEOAM[screen][id].lastframe = NF_SPR256VRAM[screen][gfx].lastframe;
// Informa al array de OAM del tamaño del frame del Sprite (en bytes)
// Informa al array de OAM del tamaño del frame del Sprite (en bytes)
NF_SPRITEOAM[screen][id].framesize = NF_SPR256VRAM[screen][gfx].framesize;
// Por defecto, el primer frame (0)
@ -813,7 +813,7 @@ void NF_DeleteSprite(u8 screen, u8 id) {
NF_SPRITEOAM[screen][id].y = 0; // Coordenada Y del Sprite (0 por defecto)
NF_SPRITEOAM[screen][id].layer = 0; // Prioridad en las capas (0 por defecto)
NF_SPRITEOAM[screen][id].pal = 0; // Paleta que usaras (0 por defecto)
NF_SPRITEOAM[screen][id].size = SpriteSize_8x8; // Tamaño del Sprite (macro) (8x8 por defecto)
NF_SPRITEOAM[screen][id].size = SpriteSize_8x8; // Tamaño del Sprite (macro) (8x8 por defecto)
NF_SPRITEOAM[screen][id].color = SpriteColorFormat_256Color; // Modo de color (macro) (256 colores)
NF_SPRITEOAM[screen][id].gfx = NULL; // Puntero al grafico usado
NF_SPRITEOAM[screen][id].rot = -1; // Id de rotacion (-1 ninguno) (0 - 31 Id de rotacion)
@ -824,7 +824,7 @@ void NF_DeleteSprite(u8 screen, u8 id) {
NF_SPRITEOAM[screen][id].mosaic = false; // Mosaico ("NO" por defecto)
NF_SPRITEOAM[screen][id].gfxid = 0; // Numero de Gfx usado
NF_SPRITEOAM[screen][id].frame = 0; // Frame actual
NF_SPRITEOAM[screen][id].framesize = 0; // Tamaño del frame (en bytes)
NF_SPRITEOAM[screen][id].framesize = 0; // Tamaño del frame (en bytes)
NF_SPRITEOAM[screen][id].lastframe = 0; // Ultimo frame
NF_SPRITEOAM[screen][id].created = false; // Esta creado este sprite ?
@ -846,7 +846,7 @@ void NF_SpriteOamSet(u8 screen) {
NF_SPRITEOAM[screen][n].y, // Coordenada Y del Sprite
NF_SPRITEOAM[screen][n].layer, // Prioridad en las capas
NF_SPRITEOAM[screen][n].pal, // Paleta que usaras
NF_SPRITEOAM[screen][n].size, // Tamaño del Sprite (macro)
NF_SPRITEOAM[screen][n].size, // Tamaño del Sprite (macro)
NF_SPRITEOAM[screen][n].color, // Modo de color (macro)
NF_SPRITEOAM[screen][n].gfx, // Puntero al grafico usado
NF_SPRITEOAM[screen][n].rot, // Valor de la rotacion
@ -866,7 +866,7 @@ void NF_SpriteOamSet(u8 screen) {
NF_SPRITEOAM[screen][n].y, // Coordenada Y del Sprite
NF_SPRITEOAM[screen][n].layer, // Prioridad en las capas
NF_SPRITEOAM[screen][n].pal, // Paleta que usaras
NF_SPRITEOAM[screen][n].size, // Tamaño del Sprite (macro)
NF_SPRITEOAM[screen][n].size, // Tamaño del Sprite (macro)
NF_SPRITEOAM[screen][n].color, // Modo de color (macro)
NF_SPRITEOAM[screen][n].gfx, // Puntero al grafico usado
NF_SPRITEOAM[screen][n].rot, // Valor de la rotacion

View File

@ -77,7 +77,7 @@ void NF_Init3dSpriteSys(void) {
NF_3DSPRITE[n].gfxid = 0; // Numero de Gfx usado
NF_3DSPRITE[n].frame = 0; // Frame actual
NF_3DSPRITE[n].newframe = 0; // Frame al que cambiar
NF_3DSPRITE[n].framesize = 0; // Tamaño del frame (en bytes)
NF_3DSPRITE[n].framesize = 0; // Tamaño del frame (en bytes)
NF_3DSPRITE[n].lastframe = 0; // Ultimo frame
NF_3DSPRITE[n].gfx_pal_format = 0; // Guarda el formato de la paleta
NF_3DSPRITE[n].pal = 0; // Direccion en VRAM de la paleta usada
@ -87,12 +87,12 @@ void NF_Init3dSpriteSys(void) {
NF_3DSPRITE[n].alpha = 31; // Nivel de alpha (0 - 31) (31 por defecto)
// Inicializa las estructuras de control de la VRAM de texturas
NF_TEX256VRAM[n].size = 0; // Tamaño (en bytes) del Gfx
NF_TEX256VRAM[n].size = 0; // Tamaño (en bytes) del Gfx
NF_TEX256VRAM[n].width = 0; // Ancho del Gfx
NF_TEX256VRAM[n].height = 0; // Altura del Gfx
NF_TEX256VRAM[n].address = 0; // Posicion en la VRAM
NF_TEX256VRAM[n].ramid = 0; // Numero de Slot en RAM del que provienes
NF_TEX256VRAM[n].framesize = 0; // Tamaño del frame (en bytes)
NF_TEX256VRAM[n].framesize = 0; // Tamaño del frame (en bytes)
NF_TEX256VRAM[n].lastframe = 0; // Ultimo frame
NF_TEX256VRAM[n].keepframes = false; // Si es un Sprite animado, debes de mantener los frames en RAM ?
NF_TEX256VRAM[n].inuse = false; // Esta en uso ?
@ -111,7 +111,7 @@ void NF_Init3dSpriteSys(void) {
NF_TEXVRAM.inarow = 131072; // Memoria VRAM contigua
for (n = 0; n < NF_3DSPRITES; n ++) {
NF_TEXVRAM.pos[n] = 0; // Posicion en VRAM para reusar despues de un borrado
NF_TEXVRAM.size[n] = 0; // Tamaño del bloque libre para reusar
NF_TEXVRAM.size[n] = 0; // Tamaño del bloque libre para reusar
}
// Inicializa los datos de las paletas
@ -164,7 +164,7 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
NF_Error(109, "VRAM", vram);
}
// Verifica que la textura tengo un tamaño valido
// Verifica que la textura tengo un tamaño valido
if (
(NF_GetTextureSize(NF_SPR256GFX[ram].width) == 255)
||
@ -179,14 +179,14 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
// Variables de uso general
s16 n = 0; // General
s16 id = 255; // Id del posible bloque libre
s16 last_reuse = 0; // Nº del ultimo bloque reusable
u32 gfxsize = 0; // Tamaño de los datos que se copiaran
u32 size = 0; // Diferencia de tamaños entre bloque libre y datos
s16 last_reuse = 0; // Nº del ultimo bloque reusable
u32 gfxsize = 0; // Tamaño de los datos que se copiaran
u32 size = 0; // Diferencia de tamaños entre bloque libre y datos
u16 width = 0; // Calculo de las medidas
u16 height = 0;
bool organize = true; // Se debe de reorganizar el array de bloques libres ?
// Auto calcula el tamaño de 1 frame
// Auto calcula el tamaño de 1 frame
width = (NF_SPR256GFX[ram].width >> 3); // (width / 8)
height = (NF_SPR256GFX[ram].height >> 3); // (height / 8)
NF_TEX256VRAM[vram].framesize = ((width * height) << 6); // ((width * height) * 64)
@ -194,7 +194,7 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
NF_TEX256VRAM[vram].lastframe = ((int)(NF_SPR256GFX[ram].size / NF_TEX256VRAM[vram].framesize)) - 1;
NF_TEX256VRAM[vram].inuse = true; // Slot ocupado
// Calcula el tamaño del grafico a copiar segun si debes o no copiar todos los frames
// Calcula el tamaño del grafico a copiar segun si debes o no copiar todos los frames
if (keepframes) { // Si debes de mantener los frames en RAM, solo copia el primero
gfxsize = NF_TEX256VRAM[vram].framesize;
} else { // Si no, copialos todos
@ -209,19 +209,19 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
NF_Error(113, "Sprites", gfxsize);
}
// Si hay que aprovechar algun bloque borrado... (tamaño identico, preferente)
// Si hay que aprovechar algun bloque borrado... (tamaño identico, preferente)
if (NF_TEXVRAM.deleted > 0) {
// Busca un bloque vacio del tamaño identico
// Busca un bloque vacio del tamaño identico
for (n = 0; n < NF_TEXVRAM.deleted; n ++) {
if (NF_TEXVRAM.size[n] == gfxsize) { // Si el bloque tiene el tamaño suficiente
if (NF_TEXVRAM.size[n] == gfxsize) { // Si el bloque tiene el tamaño suficiente
id = n; // Guarda la Id
n = NF_TEXVRAM.deleted; // y sal
}
}
// Si no habia ningun bloque de tamaño identico, busca el mas parecido (produce fragmentacion)
// Si no habia ningun bloque de tamaño identico, busca el mas parecido (produce fragmentacion)
if (id != 255) {
for (n = 0; n < NF_TEXVRAM.deleted; n ++) {
if (NF_TEXVRAM.size[n] > gfxsize) { // Si el bloque tiene el tamaño suficiente
if (NF_TEXVRAM.size[n] > gfxsize) { // Si el bloque tiene el tamaño suficiente
id = n; // Guarda la Id
n = NF_TEXVRAM.deleted; // y sal
}
@ -229,7 +229,7 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
}
}
// Si hay algun bloque borrado libre del tamaño suficiente...
// Si hay algun bloque borrado libre del tamaño suficiente...
if (id != 255) {
// Transfiere el grafico a la VRAM
@ -237,18 +237,18 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
// Guarda el puntero donde lo has almacenado
NF_TEX256VRAM[vram].address = NF_TEXVRAM.pos[id];
// Si no has usado todo el tamaño, deja constancia
// Si no has usado todo el tamaño, deja constancia
if (gfxsize < NF_TEXVRAM.size[id]) {
// Calcula el tamaño del nuevo bloque libre
// Calcula el tamaño del nuevo bloque libre
size = NF_TEXVRAM.size[id] - gfxsize;
// Actualiza los datos
NF_TEXVRAM.pos[id] += gfxsize; // Nueva direccion
NF_TEXVRAM.size[id] = size; // Nuevo tamaño
NF_TEXVRAM.size[id] = size; // Nuevo tamaño
NF_TEXVRAM.fragmented -= gfxsize; // Actualiza el contador de VRAM fragmentada
organize = false; // No se debe de reorganizar el array de bloques
} else { // Si has usado todo el tamaño, deja constancia
} else { // Si has usado todo el tamaño, deja constancia
NF_TEXVRAM.fragmented -= NF_TEXVRAM.size[id]; // Actualiza el contador de VRAM fragmentada
@ -264,12 +264,12 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
) {
// Coloca los valores de la ultima posicion en esta
NF_TEXVRAM.pos[id] = NF_TEXVRAM.pos[last_reuse]; // Nueva direccion
NF_TEXVRAM.size[id] = NF_TEXVRAM.size[last_reuse]; // Nuevo tamaño
NF_TEXVRAM.size[id] = NF_TEXVRAM.size[last_reuse]; // Nuevo tamaño
}
NF_TEXVRAM.deleted --; // Actualiza el contador de bloques libres, borrando el ultimo registro
}
} else { // Si no habia ningun bloque borrado o con el tamaño suficiente, colacalo al final de la VRAM ocupada
} else { // Si no habia ningun bloque borrado o con el tamaño suficiente, colacalo al final de la VRAM ocupada
// Actualiza la VRAM contigua disponible (mayor bloque libre al final)
NF_TEXVRAM.inarow -= gfxsize;
@ -291,7 +291,7 @@ void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes) {
}
// Guarda los datos del Gfx que se copiara a la VRAM.
NF_TEX256VRAM[vram].size = gfxsize; // Tamaño en bytes de los datos copiados
NF_TEX256VRAM[vram].size = gfxsize; // Tamaño en bytes de los datos copiados
NF_TEX256VRAM[vram].width = NF_SPR256GFX[ram].width; // Alto (px)
NF_TEX256VRAM[vram].height = NF_SPR256GFX[ram].height; // Ancho (px)
NF_TEX256VRAM[vram].ramid = ram; // Slot RAM de origen
@ -321,7 +321,7 @@ void NF_Free3dSpriteGfx(u16 id) {
// Actualiza la cantidad de VRAM disponible
NF_TEXVRAM.free += NF_TEX256VRAM[id].size;
// Guarda la posicion y tamaño del bloque borrado para su reutilizacion
// Guarda la posicion y tamaño del bloque borrado para su reutilizacion
NF_TEXVRAM.pos[NF_TEXVRAM.deleted] = NF_TEX256VRAM[id].address;
NF_TEXVRAM.size[NF_TEXVRAM.deleted] = NF_TEX256VRAM[id].size;
@ -332,11 +332,11 @@ void NF_Free3dSpriteGfx(u16 id) {
NF_TEXVRAM.fragmented += NF_TEX256VRAM[id].size;
// Reinicia los datos de esta Id. de gfx
NF_TEX256VRAM[id].size = 0; // Tamaño en bytes
NF_TEX256VRAM[id].size = 0; // Tamaño en bytes
NF_TEX256VRAM[id].width = 0; // Alto (px)
NF_TEX256VRAM[id].height = 0; // Ancho (px)
NF_TEX256VRAM[id].address = 0; // Puntero en VRAM
NF_TEX256VRAM[id].framesize = 0; // Tamaño del frame (en bytes)
NF_TEX256VRAM[id].framesize = 0; // Tamaño del frame (en bytes)
NF_TEX256VRAM[id].lastframe = 0; // Ultimo frame
NF_TEX256VRAM[id].inuse = false;
@ -365,7 +365,7 @@ void NF_Vram3dSpriteGfxDefrag(void) {
}
char* address[NF_3DSPRITES]; // Guarda la direccion en RAM
u32 size[NF_3DSPRITES]; // Guarda el tamaño
u32 size[NF_3DSPRITES]; // Guarda el tamaño
u32 ram = 0; // Puntero inicial de RAM
u16 n = 0; // Variable General
u16 x_size = 0; // Formato de la textura
@ -378,7 +378,7 @@ void NF_Vram3dSpriteGfxDefrag(void) {
if (NF_TEX256VRAM[n].inuse) {
// Copia el Gfx a la RAM
address[n] = (buffer + ram); // Calcula el puntero
size[n] = NF_TEX256VRAM[n].size; // Almacena el tamaño
size[n] = NF_TEX256VRAM[n].size; // Almacena el tamaño
NF_DmaMemCopy(address[n], (void*)NF_TEX256VRAM[n].address, size[n]); // Copialo a la VRAM
ram += size[n]; // Siguiente posicion en RAM (relativa)
}
@ -392,7 +392,7 @@ void NF_Vram3dSpriteGfxDefrag(void) {
NF_TEXVRAM.inarow = 131072; // Memoria VRAM contigua
for (n = 0; n < NF_3DSPRITES; n ++) {
NF_TEXVRAM.pos[n] = 0; // Posicion en VRAM para reusar despues de un borrado
NF_TEXVRAM.size[n] = 0; // Tamaño del bloque libre para reusar
NF_TEXVRAM.size[n] = 0; // Tamaño del bloque libre para reusar
}
// Aplica la direccion de inicio de la VRAM
NF_TEXVRAM.next = (0x06820000);
@ -567,7 +567,7 @@ void NF_Delete3dSprite(u16 id) {
NF_3DSPRITE[id].gfxid = 0; // Numero de Gfx usado
NF_3DSPRITE[id].frame = 0; // Frame actual
NF_3DSPRITE[id].newframe = 0; // Frame al que cambiar
NF_3DSPRITE[id].framesize = 0; // Tamaño del frame (en bytes)
NF_3DSPRITE[id].framesize = 0; // Tamaño del frame (en bytes)
NF_3DSPRITE[id].lastframe = 0; // Ultimo frame
NF_3DSPRITE[id].gfx_pal_format = 0; // Guarda el formato de la paleta
NF_3DSPRITE[id].pal = 0; // Direccion en VRAM de la paleta usada

View File

@ -43,7 +43,7 @@ void NF_InitTextSys(u8 screen) {
NF_TEXT[screen][n].height = 0; // Alto del mapa de texto
NF_TEXT[screen][n].rotation = 0; // Rotacion a 0 (ninguna)
NF_TEXT[screen][n].slot = 255; // Slot donde esta el tileset
NF_TEXT[screen][n].pal = 0; // nº de paleta extendida (0 por defecto)
NF_TEXT[screen][n].pal = 0; // nº de paleta extendida (0 por defecto)
NF_TEXT[screen][n].exist = false; // Marcalo como no existente
NF_TEXT[screen][n].update = false; // No es necesario actualizarlo
}
@ -93,7 +93,7 @@ void NF_LoadTextFont(const char* file, const char* name, u16 width, u16 height,
sprintf(filename, "%s/%s.fnt", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
NF_TILEDBG[slot].tilesize = (NF_TEXT_FONT_CHARS << 6); // 100 caracteres x 64 bytes
// Reserva el espacio en RAM
NF_BUFFER_BGTILES[slot] = (char*) calloc (NF_TILEDBG[slot].tilesize, sizeof(char));
@ -128,7 +128,7 @@ void NF_LoadTextFont(const char* file, const char* name, u16 width, u16 height,
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_TILEDBG[slot].palsize = ftell(file_id);
rewind(file_id);
@ -258,62 +258,62 @@ void NF_WriteText(u8 screen, u8 layer, u16 x, u16 y, const char* text) {
string[n] = 200;
break;
// Caracteres especiales
case 199: // Ç
case 199: // Ç
string[n] = 96;
break;
case 231: // ç
case 231: // ç
string[n] = 97;
break;
case 209: // Ñ
case 209: // Ñ
string[n] = 98;
break;
case 241: // ñ
case 241: // ñ
string[n] = 99;
break;
// Acentos Mayusculas
case 193: // Á
case 193: // Á
string[n] = 100;
break;
case 201: // É
case 201: // É
string[n] = 101;
break;
case 205: // Í
case 205: // Í
string[n] = 102;
break;
case 211: // Ó
case 211: // Ó
string[n] = 103;
break;
case 218: // Ú
case 218: // Ú
string[n] = 104;
break;
// Acentos Minusculas
case 225: // á
case 225: // á
string[n] = 105;
break;
case 233: // é
case 233: // é
string[n] = 106;
break;
case 237: // í
case 237: // í
string[n] = 107;
break;
case 243: // ó
case 243: // ó
string[n] = 108;
break;
case 250: // ú
case 250: // ú
string[n] = 109;
break;
// Dieresis
case 239: // ï
case 239: // ï
string[n] = 110;
break;
case 252: // ü
case 252: // ü
string[n] = 111;
break;
// Admiracion e interrogante (Español)
case 161: // ¡
// Admiracion e interrogante (Español)
case 161: // ¡
string[n] = 112;
break;
case 191: // ¿
case 191: // ¿
string[n] = 113;
break;
// Caracter invalido
@ -355,7 +355,7 @@ void NF_WriteText(u8 screen, u8 layer, u16 x, u16 y, const char* text) {
break;
case 1: // Rotacion 90º a la derecha
case 1: // Rotacion 90º a la derecha
// Traspasa las coordenadas virtuales a las reales
tx = (NF_TEXT[screen][layer].width - y);
ty = x;
@ -379,7 +379,7 @@ void NF_WriteText(u8 screen, u8 layer, u16 x, u16 y, const char* text) {
break;
case 2: // Rotacion 90º a la izquierda
case 2: // Rotacion 90º a la izquierda
// Traspasa las coordenadas virtuales a las reales
tx = y;
ty = (NF_TEXT[screen][layer].height - x);
@ -444,7 +444,7 @@ void NF_ClearTextLayer(u8 screen, u8 layer) {
NF_Error(114, NULL, screen);
}
// Calcula el tamaño del buffer
// Calcula el tamaño del buffer
u32 size = (((NF_TEXT[screen][layer].width + 1) * (NF_TEXT[screen][layer].height + 1)) << 1);
// Pon a 0 todos los bytes del mapa de la capa de texto

View File

@ -32,7 +32,7 @@
// Funcion NF_LoadTextFont16();
void NF_LoadTextFont16(const char* file, const char* name, u16 width, u16 height, u8 rotation) {
// Variable temporal del tamaño de la paleta
// Variable temporal del tamaño de la paleta
u32 pal_size = 0;
// Busca un slot libre
@ -73,7 +73,7 @@ void NF_LoadTextFont16(const char* file, const char* name, u16 width, u16 height
sprintf(filename, "%s/%s.fnt", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
NF_TILEDBG[slot].tilesize = (NF_TEXT_FONT_CHARS_16 << 7); // 1 letra 128 bytes (letras * 128)
// Reserva el espacio en RAM
NF_BUFFER_BGTILES[slot] = (char*) calloc (NF_TILEDBG[slot].tilesize, sizeof(char));
@ -109,12 +109,12 @@ void NF_LoadTextFont16(const char* file, const char* name, u16 width, u16 height
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
pal_size = ftell(file_id);
NF_TILEDBG[slot].palsize = pal_size;
rewind(file_id);
// Si el tamaño es inferior a 512 bytes, ajustalo
// Si el tamaño es inferior a 512 bytes, ajustalo
if (NF_TILEDBG[slot].palsize < 512) NF_TILEDBG[slot].palsize = 512;
// Reserva el espacio en RAM
NF_BUFFER_BGPAL[slot] = (char*) calloc (NF_TILEDBG[slot].palsize, sizeof(char));
@ -169,11 +169,11 @@ void NF_CreateTextLayer16(u8 screen, u8 layer, u8 rotation, const char* name) {
NF_TEXT[screen][layer].width = ((NF_TILEDBG[slot].width >> 3) - 1);
NF_TEXT[screen][layer].height = ((NF_TILEDBG[slot].height >> 4) - 1);
break;
case 1: // 90º derecha
case 1: // 90º derecha
NF_TEXT[screen][layer].width = ((NF_TILEDBG[slot].width >> 4) - 1);
NF_TEXT[screen][layer].height = ((NF_TILEDBG[slot].height >> 3) - 1);
break;
case 2: // 90º izquierda
case 2: // 90º izquierda
NF_TEXT[screen][layer].width = ((NF_TILEDBG[slot].width >> 4) - 1);
NF_TEXT[screen][layer].height = ((NF_TILEDBG[slot].height >> 3) - 1);
break;
@ -225,62 +225,62 @@ void NF_WriteText16(u8 screen, u8 layer, u16 x, u16 y, const char* text) {
string[n] = 200;
break;
// Caracteres especiales
case 199: // Ç
case 199: // Ç
string[n] = 96;
break;
case 231: // ç
case 231: // ç
string[n] = 97;
break;
case 209: // Ñ
case 209: // Ñ
string[n] = 98;
break;
case 241: // ñ
case 241: // ñ
string[n] = 99;
break;
// Acentos Mayusculas
case 193: // Á
case 193: // Á
string[n] = 100;
break;
case 201: // É
case 201: // É
string[n] = 101;
break;
case 205: // Í
case 205: // Í
string[n] = 102;
break;
case 211: // Ó
case 211: // Ó
string[n] = 103;
break;
case 218: // Ú
case 218: // Ú
string[n] = 104;
break;
// Acentos Minusculas
case 225: // á
case 225: // á
string[n] = 105;
break;
case 233: // é
case 233: // é
string[n] = 106;
break;
case 237: // í
case 237: // í
string[n] = 107;
break;
case 243: // ó
case 243: // ó
string[n] = 108;
break;
case 250: // ú
case 250: // ú
string[n] = 109;
break;
// Dieresis
case 239: // ï
case 239: // ï
string[n] = 110;
break;
case 252: // ü
case 252: // ü
string[n] = 111;
break;
// Admiracion e interrogante (Español)
case 161: // ¡
// Admiracion e interrogante (Español)
case 161: // ¡
string[n] = 112;
break;
case 191: // ¿
case 191: // ¿
string[n] = 113;
break;
// Caracter invalido
@ -327,7 +327,7 @@ void NF_WriteText16(u8 screen, u8 layer, u16 x, u16 y, const char* text) {
}
break;
case 1: // 90º derecha
case 1: // 90º derecha
// Traspasa las coordenadas
tx = (NF_TEXT[screen][layer].width - y);
ty = x;
@ -355,7 +355,7 @@ void NF_WriteText16(u8 screen, u8 layer, u16 x, u16 y, const char* text) {
}
break;
case 2: // 90º izquierda
case 2: // 90º izquierda
// Traspasa las coordenadas
tx = y;
ty = (NF_TEXT[screen][layer].height - x);
@ -408,16 +408,16 @@ void NF_ClearTextLayer16(u8 screen, u8 layer) {
NF_Error(114, NULL, screen);
}
// Calcula el tamaño del buffer (segun la rotacion)
// Calcula el tamaño del buffer (segun la rotacion)
u32 size = 0;
switch (NF_TEXT[screen][layer].rotation) {
case 0: // Sin rotacion
size = (((NF_TEXT[screen][layer].width + 1) * ((NF_TEXT[screen][layer].height + 1) << 1)) << 1);
break;
case 1: // 90º a la derecha
case 1: // 90º a la derecha
size = ((((NF_TEXT[screen][layer].width + 1) << 1) * (NF_TEXT[screen][layer].height + 1)) << 1);
break;
case 2: // 90º a la izquierda
case 2: // 90º a la izquierda
size = ((((NF_TEXT[screen][layer].width + 1) << 1) * (NF_TEXT[screen][layer].height + 1)) << 1);
break;
}

View File

@ -58,9 +58,9 @@ void NF_InitTiledBgBuffers(void) {
NF_BUFFER_BGMAP[n] = NULL; // Buffer para el map
NF_BUFFER_BGPAL[n] = NULL; // Buffer para la paleta
sprintf(NF_TILEDBG[n].name, "xxxNONAMExxx"); // Nombre del Tileset
NF_TILEDBG[n].tilesize = 0; // Tamaño del Tileset
NF_TILEDBG[n].mapsize = 0; // Tamaño del Mapa
NF_TILEDBG[n].palsize = 0; // Tamaño de la Paleta
NF_TILEDBG[n].tilesize = 0; // Tamaño del Tileset
NF_TILEDBG[n].mapsize = 0; // Tamaño del Mapa
NF_TILEDBG[n].palsize = 0; // Tamaño de la Paleta
NF_TILEDBG[n].width = 0; // Ancho del Mapa
NF_TILEDBG[n].height = 0; // Alto del Mapa
NF_TILEDBG[n].available = true; // Disponibilidad
@ -169,7 +169,7 @@ void NF_InitTiledBgSys(u8 screen) {
// Funcion NF_LoadTiledBg();
void NF_LoadTiledBg(const char* file, const char* name, u16 width, u16 height) {
// Variable temporal del tamaño de la paleta
// Variable temporal del tamaño de la paleta
u32 pal_size = 0;
// Busca un slot libre
@ -210,7 +210,7 @@ void NF_LoadTiledBg(const char* file, const char* name, u16 width, u16 height) {
sprintf(filename, "%s/%s.img", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_TILEDBG[slot].tilesize = ftell(file_id);
rewind(file_id);
@ -230,9 +230,9 @@ void NF_LoadTiledBg(const char* file, const char* name, u16 width, u16 height) {
sprintf(filename, "%s/%s.map", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
NF_TILEDBG[slot].mapsize = ((((ftell(file_id) - 1) >> 11) + 1) << 11); // Ajusta el tamaño a bloques de 2kb
NF_TILEDBG[slot].mapsize = ((((ftell(file_id) - 1) >> 11) + 1) << 11); // Ajusta el tamaño a bloques de 2kb
rewind(file_id);
// Reserva el espacio en RAM
NF_BUFFER_BGMAP[slot] = (char*) calloc (NF_TILEDBG[slot].mapsize, sizeof(char));
@ -250,12 +250,12 @@ void NF_LoadTiledBg(const char* file, const char* name, u16 width, u16 height) {
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
pal_size = ftell(file_id);
NF_TILEDBG[slot].palsize = pal_size;
rewind(file_id);
// Si el tamaño es inferior a 512 bytes, ajustalo
// Si el tamaño es inferior a 512 bytes, ajustalo
if (NF_TILEDBG[slot].palsize < 512) NF_TILEDBG[slot].palsize = 512;
// Reserva el espacio en RAM
NF_BUFFER_BGPAL[slot] = (char*) calloc (NF_TILEDBG[slot].palsize, sizeof(char));
@ -283,7 +283,7 @@ void NF_LoadTiledBg(const char* file, const char* name, u16 width, u16 height) {
// Funcion NF_LoadTilesForBg();
void NF_LoadTilesForBg(const char* file, const char* name, u16 width, u16 height, u16 tile_start, u16 tile_end) {
// Variable temporal del tamaño de los datos
// Variable temporal del tamaño de los datos
u32 tile_size = 0;
u32 pal_size = 0;
@ -325,13 +325,13 @@ void NF_LoadTilesForBg(const char* file, const char* name, u16 width, u16 height
sprintf(filename, "%s/%s.img", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
tile_size = ftell(file_id);
rewind(file_id);
// Calcula el tamaño del tilesize a cargar
NF_TILEDBG[slot].tilesize = (((tile_end - tile_start) + 1) << 6); // nº de tiles x 64 bytes
// Si el tamaño del Tilesed solicitado excede del tamaño de archivo, error
// Calcula el tamaño del tilesize a cargar
NF_TILEDBG[slot].tilesize = (((tile_end - tile_start) + 1) << 6); // nº de tiles x 64 bytes
// Si el tamaño del Tilesed solicitado excede del tamaño de archivo, error
if (((tile_end + 1) << 6) > tile_size) {
NF_Error(106, "Tilenumber", (tile_size >> 6));
}
@ -366,12 +366,12 @@ void NF_LoadTilesForBg(const char* file, const char* name, u16 width, u16 height
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
pal_size = ftell(file_id);
NF_TILEDBG[slot].palsize = pal_size;
rewind(file_id);
// Si el tamaño es inferior a 512 bytes, ajustalo
// Si el tamaño es inferior a 512 bytes, ajustalo
if (NF_TILEDBG[slot].palsize < 512) NF_TILEDBG[slot].palsize = 512;
// Reserva el espacio en RAM
NF_BUFFER_BGPAL[slot] = (char*) calloc (NF_TILEDBG[slot].palsize, sizeof(char));
@ -427,9 +427,9 @@ void NF_UnloadTiledBg(const char* name) {
// Resetea las variables para ese fondo
sprintf(NF_TILEDBG[slot].name, "xxxNONAMExxx"); // Nombre del Tileset
NF_TILEDBG[slot].tilesize = 0; // Tamaño del Tileset
NF_TILEDBG[slot].mapsize = 0; // Tamaño del Mapa
NF_TILEDBG[slot].palsize = 0; // Tamaño de la Paleta
NF_TILEDBG[slot].tilesize = 0; // Tamaño del Tileset
NF_TILEDBG[slot].mapsize = 0; // Tamaño del Mapa
NF_TILEDBG[slot].palsize = 0; // Tamaño de la Paleta
NF_TILEDBG[slot].width = 0; // Ancho del Mapa
NF_TILEDBG[slot].height = 0; // Alto del Mapa
NF_TILEDBG[slot].available = true; // Disponibilidad
@ -470,7 +470,7 @@ void NF_CreateTiledBg(u8 screen, u8 layer, const char* name) {
u8 tilesblocks = 0;
u8 basetiles = 0;
// Transfiere el tamaño del fondo
// Transfiere el tamaño del fondo
NF_TILEDBG_LAYERS[screen][layer].bgwidth = NF_TILEDBG[slot].width; // Ancho del fondo
NF_TILEDBG_LAYERS[screen][layer].bgheight = NF_TILEDBG[slot].height; // Altura del fondo
NF_TILEDBG_LAYERS[screen][layer].mapwidth = NF_TILEDBG[slot].width; // Ancho del mapa
@ -478,7 +478,7 @@ void NF_CreateTiledBg(u8 screen, u8 layer, const char* name) {
NF_TILEDBG_LAYERS[screen][layer].bgtype = 0; // Tipo de fondo
NF_TILEDBG_LAYERS[screen][layer].bgslot = slot; // Buffer de graficos usado
// Calcula el tipo y tamaño del mapa si es Infinito ( >512 )
// Calcula el tipo y tamaño del mapa si es Infinito ( >512 )
// ( >512 x n )
if ((NF_TILEDBG[slot].width >= 512) && (NF_TILEDBG[slot].height <= 256)) {
NF_TILEDBG_LAYERS[screen][layer].mapwidth = 512;
@ -573,7 +573,7 @@ void NF_CreateTiledBg(u8 screen, u8 layer, const char* name) {
}
// Obten el tamaño del fondo
// Obten el tamaño del fondo
u32 bg_size = 0;
// 256x256
if ((NF_TILEDBG_LAYERS[screen][layer].mapwidth == 256) && (NF_TILEDBG_LAYERS[screen][layer].mapheight == 256)) {
@ -733,8 +733,8 @@ void NF_DeleteTiledBg(u8 screen, u8 layer) {
u8 n; // Uso general
u16 basetiles = 0; // Base del Tileset
u16 basemap = 0; // Base del Map
u16 tilesize = 0; // Tamaño del Tileset
u16 mapsize = 0; // Tamaño del Map
u16 tilesize = 0; // Tamaño del Tileset
u16 mapsize = 0; // Tamaño del Map
// Borra el Tileset de la VRAM
basetiles = NF_TILEDBG_LAYERS[screen][layer].tilebase;
@ -819,9 +819,9 @@ u32 NF_GetTileMapAddress(u8 screen, u8 layer, u16 tile_x, u16 tile_y) {
// Obtiene las medidas en tiles del mapa
u16 size_x = (NF_TILEDBG_LAYERS[screen][layer].bgwidth >> 3); // Tiles de ancho
u16 size_y = (NF_TILEDBG_LAYERS[screen][layer].bgheight >> 3); // Tiles de alto
u16 block_x = (tile_x >> 5); // nº de pantalla (X)
u16 block_y = (tile_y >> 5); // nº de pantalla (Y)
u32 row_size = ((size_x >> 5) << 11); // Tamaño en bytes de una fila de pantallas
u16 block_x = (tile_x >> 5); // nº de pantalla (X)
u16 block_y = (tile_y >> 5); // nº de pantalla (Y)
u32 row_size = ((size_x >> 5) << 11); // Tamaño en bytes de una fila de pantallas
// Protegete de los fuera de rango
if (tile_x > size_x) NF_Error(106, "Tile X", size_x);
@ -891,7 +891,7 @@ void NF_UpdateVramMap(u8 screen, u8 layer) {
u32 address = 0; // Direccion de destino
u32 mov_x = 0; // Desplazamiento X
u32 mov_y = 0; // Desplazamiento Y
u32 rowsize = 0; // Tamaño de la fila de pantallas
u32 rowsize = 0; // Tamaño de la fila de pantallas
// Calcula la direccion base del mapa
if (screen == 0) { // (VRAM_A)
@ -1075,7 +1075,7 @@ u8 NF_GetTilePal(u8 screen, u8 layer, u16 tile_x, u16 tile_y) {
// Obten los bytes
u8 hibyte = *(NF_BUFFER_BGMAP[NF_TILEDBG_LAYERS[screen][layer].bgslot] + (address + 1));
// Devuelve el nº de la paleta (4 ultimos bits del HI-Byte)
// Devuelve el nº de la paleta (4 ultimos bits del HI-Byte)
return ((hibyte >> 4) & 0x0F);
}
@ -1109,7 +1109,7 @@ void NF_LoadExBgPal(const char* file, u8 slot) {
NF_Error(106, "ExBgPal", (NF_SLOTS_EXBGPAL - 1));
}
// Variable temporal del tamaño de la paleta
// Variable temporal del tamaño de la paleta
u32 pal_size = 0;
// Vacia el buffer
@ -1126,12 +1126,12 @@ void NF_LoadExBgPal(const char* file, u8 slot) {
sprintf(filename, "%s/%s.pal", NF_ROOTFOLDER, file);
file_id = fopen(filename, "rb");
if (file_id) { // Si el archivo existe...
// Obten el tamaño del archivo
// Obten el tamaño del archivo
fseek(file_id, 0, SEEK_END);
pal_size = ftell(file_id);
NF_EXBGPAL[slot].palsize = pal_size;
rewind(file_id);
// Si el tamaño es inferior a 512 bytes, ajustalo
// Si el tamaño es inferior a 512 bytes, ajustalo
if (NF_EXBGPAL[slot].palsize < 512) NF_EXBGPAL[slot].palsize = 512;
// Reserva el espacio en RAM
NF_EXBGPAL[slot].buffer = (char*) calloc (NF_EXBGPAL[slot].palsize, sizeof(char));
@ -1169,7 +1169,7 @@ void NF_UnloadExBgPal(u8 slot) {
free(NF_EXBGPAL[slot].buffer);
NF_EXBGPAL[slot].buffer = NULL;
// Tamaño de la paleta a 0
// Tamaño de la paleta a 0
NF_EXBGPAL[slot].palsize = 0;
// Guarda el estado del slot
@ -1225,7 +1225,7 @@ void NF_SetExBgPal(u8 screen, u8 layer, u8 pal) {
NF_Error(105, text, layer); // Si no existe, error
}
// Tamaño del buffer
// Tamaño del buffer
u32 mapsize = NF_TILEDBG[NF_TILEDBG_LAYERS[screen][layer].bgslot].mapsize;
// Variables comunes
u32 pos = 0;
@ -1318,7 +1318,7 @@ void NF_RotateTileGfx(u8 slot, u16 tile, u8 rotation) {
switch (rotation) {
case 1: // 90º a la derecha
case 1: // 90º a la derecha
xb = 7;
yb = 0;
for (ya = 0; ya < 8; ya ++) {
@ -1335,7 +1335,7 @@ void NF_RotateTileGfx(u8 slot, u16 tile, u8 rotation) {
}
break;
case 2: // 90º a la izquierda
case 2: // 90º a la izquierda
xb = 0;
yb = 7;
for (ya = 0; ya < 8; ya ++) {
@ -1352,7 +1352,7 @@ void NF_RotateTileGfx(u8 slot, u16 tile, u8 rotation) {
}
break;
case 3: // 180 º
case 3: // 180 º
xb = 7;
yb = 7;
for (ya = 0; ya < 8; ya ++) {