mirror of
https://github.com/knightfox75/nds_nflib.git
synced 2025-06-18 16:55:32 -04:00
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:
parent
fb2d400e39
commit
61fde2b572
@ -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.
|
2
docs/[ESP] Descargo de responsabilidad.txt
Normal file
2
docs/[ESP] Descargo de responsabilidad.txt
Normal 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.
|
@ -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/.
|
||||
|
@ -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.
|
@ -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;
|
||||
}
|
||||
|
@ -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 ");
|
||||
|
@ -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][..][..][..][..]
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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
|
||||
|
@ -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])
|
||||
|
@ -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)
|
||||
|
@ -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])
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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º
|
||||
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 ++) {
|
||||
|
Loading…
Reference in New Issue
Block a user