mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-11-01 08:25:18 +01:00
DVD fix, remove libs
This commit is contained in:
parent
0261754092
commit
cce59fa2c7
121
include/di.h
121
include/di.h
@ -1,121 +0,0 @@
|
|||||||
/*-------------------------------------------------------------
|
|
||||||
|
|
||||||
di.h -- Drive Interface library
|
|
||||||
|
|
||||||
Team Twiizers
|
|
||||||
Copyright (C) 2008
|
|
||||||
|
|
||||||
Erant
|
|
||||||
marcan
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any
|
|
||||||
damages arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any
|
|
||||||
purpose, including commercial applications, and to alter it and
|
|
||||||
redistribute it freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you
|
|
||||||
must not claim that you wrote the original software. If you use
|
|
||||||
this software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
2. Altered source versions must be plainly marked as such, and
|
|
||||||
must not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
-------------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
All buffers in this document need to be 32-byte aligned!
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __DI_H__
|
|
||||||
#define __DI_H__
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <ogc/ipc.h>
|
|
||||||
/*
|
|
||||||
DEFINES GO HERE!
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define DVD_IDENTIFY 0x12
|
|
||||||
#define DVD_READ_DISCID 0x70
|
|
||||||
#define DVD_LOW_READ 0x71
|
|
||||||
#define DVD_WAITFORCOVERCLOSE 0x79
|
|
||||||
#define DVD_READ_PHYSICAL 0x80
|
|
||||||
#define DVD_READ_COPYRIGHT 0x81
|
|
||||||
#define DVD_READ_DISCKEY 0x82
|
|
||||||
#define DVD_GETCOVER 0x88
|
|
||||||
#define DVD_RESET 0x8A
|
|
||||||
#define DVD_OPEN_PARTITION 0x8B
|
|
||||||
#define DVD_CLOSE_PARTITION 0x8C
|
|
||||||
#define DVD_READ_UNENCRYPTED 0x8D
|
|
||||||
#define DVD_REPORTKEY 0xA4
|
|
||||||
#define DVD_READ 0xD0
|
|
||||||
#define DVD_READ_CONFIG 0xD1
|
|
||||||
#define DVD_GET_ERROR 0xE0
|
|
||||||
#define DVD_SET_MOTOR 0xE3
|
|
||||||
|
|
||||||
#define DVD_READY 0x1
|
|
||||||
#define DVD_INIT 0x2
|
|
||||||
#define DVD_UNKNOWN 0x4
|
|
||||||
#define DVD_NO_DISC 0x8
|
|
||||||
#define DVD_IOS_ERROR 0x10
|
|
||||||
#define DVD_D0 0x20
|
|
||||||
#define DVD_A8 0x40
|
|
||||||
|
|
||||||
#define MAX_RETRY 16
|
|
||||||
/*
|
|
||||||
TYPEDEFS GO HERE!
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct{
|
|
||||||
uint16_t rev;
|
|
||||||
uint16_t dev_code;
|
|
||||||
uint32_t rel_date;
|
|
||||||
}DI_DriveID;
|
|
||||||
|
|
||||||
typedef int(*di_callback)(uint32_t status, uint32_t error);
|
|
||||||
typedef int(*read_func)(void*,uint32_t,uint32_t);
|
|
||||||
typedef int(*read_func_async)(void*,uint32_t,uint32_t,ipccallback);
|
|
||||||
/*
|
|
||||||
FUNCTION PROTOTYPES GO HERE!
|
|
||||||
*/
|
|
||||||
|
|
||||||
int DI_Init();
|
|
||||||
void DI_Mount();
|
|
||||||
void DI_Close();
|
|
||||||
int DI_GetStatus();
|
|
||||||
|
|
||||||
int DI_Identify(DI_DriveID* id);
|
|
||||||
int DI_ReadDiscID(u64 *id);
|
|
||||||
int DI_GetError(uint32_t* error);
|
|
||||||
int DI_GetCoverRegister(uint32_t* status);
|
|
||||||
int DI_Reset();
|
|
||||||
|
|
||||||
int DI_StopMotor();
|
|
||||||
int DI_Eject();
|
|
||||||
int DI_KillDrive();
|
|
||||||
|
|
||||||
int DI_ReadDVD(void* buf, uint32_t len, uint32_t lba);
|
|
||||||
int DI_ReadDVDAsync(void* buf, uint32_t len, uint32_t lba, ipccallback ipc_cb);
|
|
||||||
|
|
||||||
int DI_Read(void *buf, u32 size, u32 offset);
|
|
||||||
int DI_UnencryptedRead(void *buf, u32 size, u32 offset);
|
|
||||||
|
|
||||||
int DI_ReadDVDConfig(uint32_t* val, uint32_t flag);
|
|
||||||
int DI_ReadDVDCopyright(uint32_t* copyright);
|
|
||||||
int DI_ReadDVDDiscKey(void* buf);
|
|
||||||
int DI_ReadDVDPhysical(void* buf);
|
|
||||||
int DI_ReportKey(int keytype, uint32_t lba, void* buf);
|
|
||||||
|
|
||||||
int DI_OpenPartition(u32 offset);
|
|
||||||
int DI_ClosePartition(void);
|
|
||||||
|
|
||||||
#endif
|
|
305
include/mxml.h
305
include/mxml.h
@ -1,305 +0,0 @@
|
|||||||
/*
|
|
||||||
* "$Id: mxml.h 307 2007-09-15 20:03:15Z mike $"
|
|
||||||
*
|
|
||||||
* Header file for Mini-XML, a small XML-like file parsing library.
|
|
||||||
*
|
|
||||||
* Copyright 2003-2007 by Michael Sweet.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prevent multiple inclusion...
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _mxml_h_
|
|
||||||
# define _mxml_h_
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Include necessary headers...
|
|
||||||
*/
|
|
||||||
|
|
||||||
# include <stdio.h>
|
|
||||||
# include <stdlib.h>
|
|
||||||
# include <string.h>
|
|
||||||
# include <ctype.h>
|
|
||||||
# include <errno.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Constants...
|
|
||||||
*/
|
|
||||||
|
|
||||||
# define MXML_TAB 8 /* Tabs every N columns */
|
|
||||||
|
|
||||||
# define MXML_NO_CALLBACK 0 /* Don't use a type callback */
|
|
||||||
# define MXML_INTEGER_CALLBACK mxml_integer_cb
|
|
||||||
/* Treat all data as integers */
|
|
||||||
# define MXML_OPAQUE_CALLBACK mxml_opaque_cb
|
|
||||||
/* Treat all data as opaque */
|
|
||||||
# define MXML_REAL_CALLBACK mxml_real_cb
|
|
||||||
/* Treat all data as real numbers */
|
|
||||||
# define MXML_TEXT_CALLBACK 0 /* Treat all data as text */
|
|
||||||
# define MXML_IGNORE_CALLBACK mxml_ignore_cb
|
|
||||||
/* Ignore all non-element content */
|
|
||||||
|
|
||||||
# define MXML_NO_PARENT 0 /* No parent for the node */
|
|
||||||
|
|
||||||
# define MXML_DESCEND 1 /* Descend when finding/walking */
|
|
||||||
# define MXML_NO_DESCEND 0 /* Don't descend when finding/walking */
|
|
||||||
# define MXML_DESCEND_FIRST -1 /* Descend for first find */
|
|
||||||
|
|
||||||
# define MXML_WS_BEFORE_OPEN 0 /* Callback for before open tag */
|
|
||||||
# define MXML_WS_AFTER_OPEN 1 /* Callback for after open tag */
|
|
||||||
# define MXML_WS_BEFORE_CLOSE 2 /* Callback for before close tag */
|
|
||||||
# define MXML_WS_AFTER_CLOSE 3 /* Callback for after close tag */
|
|
||||||
|
|
||||||
# define MXML_ADD_BEFORE 0 /* Add node before specified node */
|
|
||||||
# define MXML_ADD_AFTER 1 /* Add node after specified node */
|
|
||||||
# define MXML_ADD_TO_PARENT NULL /* Add node relative to parent */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Data types...
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef enum mxml_sax_event_e /**** SAX event type. ****/
|
|
||||||
{
|
|
||||||
MXML_SAX_CDATA, /* CDATA node */
|
|
||||||
MXML_SAX_COMMENT, /* Comment node */
|
|
||||||
MXML_SAX_DATA, /* Data node */
|
|
||||||
MXML_SAX_DIRECTIVE, /* Processing directive node */
|
|
||||||
MXML_SAX_ELEMENT_CLOSE, /* Element closed */
|
|
||||||
MXML_SAX_ELEMENT_OPEN /* Element opened */
|
|
||||||
} mxml_sax_event_t;
|
|
||||||
|
|
||||||
typedef enum mxml_type_e /**** The XML node type. ****/
|
|
||||||
{
|
|
||||||
MXML_IGNORE = -1, /* Ignore/throw away node @since Mini-XML 2.3@ */
|
|
||||||
MXML_ELEMENT, /* XML element with attributes */
|
|
||||||
MXML_INTEGER, /* Integer value */
|
|
||||||
MXML_OPAQUE, /* Opaque string */
|
|
||||||
MXML_REAL, /* Real value */
|
|
||||||
MXML_TEXT, /* Text fragment */
|
|
||||||
MXML_CUSTOM /* Custom data @since Mini-XML 2.1@ */
|
|
||||||
} mxml_type_t;
|
|
||||||
|
|
||||||
typedef void (*mxml_custom_destroy_cb_t)(void *);
|
|
||||||
/**** Custom data destructor ****/
|
|
||||||
|
|
||||||
typedef void (*mxml_error_cb_t)(const char *);
|
|
||||||
/**** Error callback function ****/
|
|
||||||
|
|
||||||
typedef struct mxml_attr_s /**** An XML element attribute value. ****/
|
|
||||||
{
|
|
||||||
char *name; /* Attribute name */
|
|
||||||
char *value; /* Attribute value */
|
|
||||||
} mxml_attr_t;
|
|
||||||
|
|
||||||
typedef struct mxml_element_s /**** An XML element value. ****/
|
|
||||||
{
|
|
||||||
char *name; /* Name of element */
|
|
||||||
int num_attrs; /* Number of attributes */
|
|
||||||
mxml_attr_t *attrs; /* Attributes */
|
|
||||||
} mxml_element_t;
|
|
||||||
|
|
||||||
typedef struct mxml_text_s /**** An XML text value. ****/
|
|
||||||
{
|
|
||||||
int whitespace; /* Leading whitespace? */
|
|
||||||
char *string; /* Fragment string */
|
|
||||||
} mxml_text_t;
|
|
||||||
|
|
||||||
typedef struct mxml_custom_s /**** An XML custom value. @since Mini-XML 2.1@ ****/
|
|
||||||
{
|
|
||||||
void *data; /* Pointer to (allocated) custom data */
|
|
||||||
mxml_custom_destroy_cb_t destroy; /* Pointer to destructor function */
|
|
||||||
} mxml_custom_t;
|
|
||||||
|
|
||||||
typedef union mxml_value_u /**** An XML node value. ****/
|
|
||||||
{
|
|
||||||
mxml_element_t element; /* Element */
|
|
||||||
int integer; /* Integer number */
|
|
||||||
char *opaque; /* Opaque string */
|
|
||||||
double real; /* Real number */
|
|
||||||
mxml_text_t text; /* Text fragment */
|
|
||||||
mxml_custom_t custom; /* Custom data @since Mini-XML 2.1@ */
|
|
||||||
} mxml_value_t;
|
|
||||||
|
|
||||||
typedef struct mxml_node_s /**** An XML node. ****/
|
|
||||||
{
|
|
||||||
mxml_type_t type; /* Node type */
|
|
||||||
struct mxml_node_s *next; /* Next node under same parent */
|
|
||||||
struct mxml_node_s *prev; /* Previous node under same parent */
|
|
||||||
struct mxml_node_s *parent; /* Parent node */
|
|
||||||
struct mxml_node_s *child; /* First child node */
|
|
||||||
struct mxml_node_s *last_child; /* Last child node */
|
|
||||||
mxml_value_t value; /* Node value */
|
|
||||||
int ref_count; /* Use count */
|
|
||||||
void *user_data; /* User data */
|
|
||||||
} mxml_node_t;
|
|
||||||
|
|
||||||
typedef struct mxml_index_s /**** An XML node index. ****/
|
|
||||||
{
|
|
||||||
char *attr; /* Attribute used for indexing or NULL */
|
|
||||||
int num_nodes; /* Number of nodes in index */
|
|
||||||
int alloc_nodes; /* Allocated nodes in index */
|
|
||||||
int cur_node; /* Current node */
|
|
||||||
mxml_node_t **nodes; /* Node array */
|
|
||||||
} mxml_index_t;
|
|
||||||
|
|
||||||
typedef int (*mxml_custom_load_cb_t)(mxml_node_t *, const char *);
|
|
||||||
/**** Custom data load callback function ****/
|
|
||||||
|
|
||||||
typedef char *(*mxml_custom_save_cb_t)(mxml_node_t *);
|
|
||||||
/**** Custom data save callback function ****/
|
|
||||||
|
|
||||||
typedef mxml_type_t (*mxml_load_cb_t)(mxml_node_t *);
|
|
||||||
/**** Load callback function ****/
|
|
||||||
|
|
||||||
typedef const char *(*mxml_save_cb_t)(mxml_node_t *, int);
|
|
||||||
/**** Save callback function ****/
|
|
||||||
|
|
||||||
typedef void (*mxml_sax_cb_t)(mxml_node_t *, mxml_sax_event_t, void *);
|
|
||||||
/**** SAX callback function ****/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* C++ support...
|
|
||||||
*/
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
# endif /* __cplusplus */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prototypes...
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void mxmlAdd(mxml_node_t *parent, int where,
|
|
||||||
mxml_node_t *child, mxml_node_t *node);
|
|
||||||
extern void mxmlDelete(mxml_node_t *node);
|
|
||||||
extern void mxmlElementDeleteAttr(mxml_node_t *node,
|
|
||||||
const char *name);
|
|
||||||
extern const char *mxmlElementGetAttr(mxml_node_t *node, const char *name);
|
|
||||||
extern void mxmlElementSetAttr(mxml_node_t *node, const char *name,
|
|
||||||
const char *value);
|
|
||||||
extern void mxmlElementSetAttrf(mxml_node_t *node, const char *name,
|
|
||||||
const char *format, ...)
|
|
||||||
# ifdef __GNUC__
|
|
||||||
__attribute__ ((__format__ (__printf__, 3, 4)))
|
|
||||||
# endif /* __GNUC__ */
|
|
||||||
;
|
|
||||||
extern int mxmlEntityAddCallback(int (*cb)(const char *name));
|
|
||||||
extern const char *mxmlEntityGetName(int val);
|
|
||||||
extern int mxmlEntityGetValue(const char *name);
|
|
||||||
extern void mxmlEntityRemoveCallback(int (*cb)(const char *name));
|
|
||||||
extern mxml_node_t *mxmlFindElement(mxml_node_t *node, mxml_node_t *top,
|
|
||||||
const char *name, const char *attr,
|
|
||||||
const char *value, int descend);
|
|
||||||
extern void mxmlIndexDelete(mxml_index_t *ind);
|
|
||||||
extern mxml_node_t *mxmlIndexEnum(mxml_index_t *ind);
|
|
||||||
extern mxml_node_t *mxmlIndexFind(mxml_index_t *ind,
|
|
||||||
const char *element,
|
|
||||||
const char *value);
|
|
||||||
extern mxml_index_t *mxmlIndexNew(mxml_node_t *node, const char *element,
|
|
||||||
const char *attr);
|
|
||||||
extern mxml_node_t *mxmlIndexReset(mxml_index_t *ind);
|
|
||||||
extern mxml_node_t *mxmlLoadFd(mxml_node_t *top, int fd,
|
|
||||||
mxml_type_t (*cb)(mxml_node_t *));
|
|
||||||
extern mxml_node_t *mxmlLoadFile(mxml_node_t *top, FILE *fp,
|
|
||||||
mxml_type_t (*cb)(mxml_node_t *));
|
|
||||||
extern mxml_node_t *mxmlLoadString(mxml_node_t *top, const char *s,
|
|
||||||
mxml_type_t (*cb)(mxml_node_t *));
|
|
||||||
extern mxml_node_t *mxmlNewCDATA(mxml_node_t *parent, const char *string);
|
|
||||||
extern mxml_node_t *mxmlNewCustom(mxml_node_t *parent, void *data,
|
|
||||||
mxml_custom_destroy_cb_t destroy);
|
|
||||||
extern mxml_node_t *mxmlNewElement(mxml_node_t *parent, const char *name);
|
|
||||||
extern mxml_node_t *mxmlNewInteger(mxml_node_t *parent, int integer);
|
|
||||||
extern mxml_node_t *mxmlNewOpaque(mxml_node_t *parent, const char *opaque);
|
|
||||||
extern mxml_node_t *mxmlNewReal(mxml_node_t *parent, double real);
|
|
||||||
extern mxml_node_t *mxmlNewText(mxml_node_t *parent, int whitespace,
|
|
||||||
const char *string);
|
|
||||||
extern mxml_node_t *mxmlNewTextf(mxml_node_t *parent, int whitespace,
|
|
||||||
const char *format, ...)
|
|
||||||
# ifdef __GNUC__
|
|
||||||
__attribute__ ((__format__ (__printf__, 3, 4)))
|
|
||||||
# endif /* __GNUC__ */
|
|
||||||
;
|
|
||||||
extern mxml_node_t *mxmlNewXML(const char *version);
|
|
||||||
extern int mxmlRelease(mxml_node_t *node);
|
|
||||||
extern void mxmlRemove(mxml_node_t *node);
|
|
||||||
extern int mxmlRetain(mxml_node_t *node);
|
|
||||||
extern char *mxmlSaveAllocString(mxml_node_t *node,
|
|
||||||
mxml_save_cb_t cb);
|
|
||||||
extern int mxmlSaveFd(mxml_node_t *node, int fd,
|
|
||||||
mxml_save_cb_t cb);
|
|
||||||
extern int mxmlSaveFile(mxml_node_t *node, FILE *fp,
|
|
||||||
mxml_save_cb_t cb);
|
|
||||||
extern int mxmlSaveString(mxml_node_t *node, char *buffer,
|
|
||||||
int bufsize, mxml_save_cb_t cb);
|
|
||||||
extern mxml_node_t *mxmlSAXLoadFd(mxml_node_t *top, int fd,
|
|
||||||
mxml_type_t (*cb)(mxml_node_t *),
|
|
||||||
mxml_sax_cb_t sax, void *sax_data);
|
|
||||||
extern mxml_node_t *mxmlSAXLoadFile(mxml_node_t *top, FILE *fp,
|
|
||||||
mxml_type_t (*cb)(mxml_node_t *),
|
|
||||||
mxml_sax_cb_t sax, void *sax_data);
|
|
||||||
extern mxml_node_t *mxmlSAXLoadString(mxml_node_t *top, const char *s,
|
|
||||||
mxml_type_t (*cb)(mxml_node_t *),
|
|
||||||
mxml_sax_cb_t sax, void *sax_data);
|
|
||||||
extern int mxmlSetCDATA(mxml_node_t *node, const char *data);
|
|
||||||
extern int mxmlSetCustom(mxml_node_t *node, void *data,
|
|
||||||
mxml_custom_destroy_cb_t destroy);
|
|
||||||
extern void mxmlSetCustomHandlers(mxml_custom_load_cb_t load,
|
|
||||||
mxml_custom_save_cb_t save);
|
|
||||||
extern int mxmlSetElement(mxml_node_t *node, const char *name);
|
|
||||||
extern void mxmlSetErrorCallback(mxml_error_cb_t cb);
|
|
||||||
extern int mxmlSetInteger(mxml_node_t *node, int integer);
|
|
||||||
extern int mxmlSetOpaque(mxml_node_t *node, const char *opaque);
|
|
||||||
extern int mxmlSetReal(mxml_node_t *node, double real);
|
|
||||||
extern int mxmlSetText(mxml_node_t *node, int whitespace,
|
|
||||||
const char *string);
|
|
||||||
extern int mxmlSetTextf(mxml_node_t *node, int whitespace,
|
|
||||||
const char *format, ...)
|
|
||||||
# ifdef __GNUC__
|
|
||||||
__attribute__ ((__format__ (__printf__, 3, 4)))
|
|
||||||
# endif /* __GNUC__ */
|
|
||||||
;
|
|
||||||
extern void mxmlSetWrapMargin(int column);
|
|
||||||
extern mxml_node_t *mxmlWalkNext(mxml_node_t *node, mxml_node_t *top,
|
|
||||||
int descend);
|
|
||||||
extern mxml_node_t *mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top,
|
|
||||||
int descend);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Semi-private functions...
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void mxml_error(const char *format, ...);
|
|
||||||
extern mxml_type_t mxml_ignore_cb(mxml_node_t *node);
|
|
||||||
extern mxml_type_t mxml_integer_cb(mxml_node_t *node);
|
|
||||||
extern mxml_type_t mxml_opaque_cb(mxml_node_t *node);
|
|
||||||
extern mxml_type_t mxml_real_cb(mxml_node_t *node);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* C++ support...
|
|
||||||
*/
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
|
||||||
}
|
|
||||||
# endif /* __cplusplus */
|
|
||||||
#endif /* !_mxml_h_ */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* End of "$Id: mxml.h 307 2007-09-15 20:03:15Z mike $".
|
|
||||||
*/
|
|
3569
include/png.h
3569
include/png.h
File diff suppressed because it is too large
Load Diff
1481
include/pngconf.h
1481
include/pngconf.h
File diff suppressed because it is too large
Load Diff
1132
include/pngu/pngu.c
1132
include/pngu/pngu.c
File diff suppressed because it is too large
Load Diff
@ -1,171 +0,0 @@
|
|||||||
/********************************************************************************************
|
|
||||||
|
|
||||||
PNGU Version : 0.2a
|
|
||||||
|
|
||||||
Coder : frontier
|
|
||||||
|
|
||||||
More info : http://frontier-dev.net
|
|
||||||
|
|
||||||
********************************************************************************************/
|
|
||||||
#ifndef __PNGU__
|
|
||||||
#define __PNGU__
|
|
||||||
|
|
||||||
// Return codes
|
|
||||||
#define PNGU_OK 0
|
|
||||||
#define PNGU_ODD_WIDTH 1
|
|
||||||
#define PNGU_ODD_STRIDE 2
|
|
||||||
#define PNGU_INVALID_WIDTH_OR_HEIGHT 3
|
|
||||||
#define PNGU_FILE_IS_NOT_PNG 4
|
|
||||||
#define PNGU_UNSUPPORTED_COLOR_TYPE 5
|
|
||||||
#define PNGU_NO_FILE_SELECTED 6
|
|
||||||
#define PNGU_CANT_OPEN_FILE 7
|
|
||||||
#define PNGU_CANT_READ_FILE 8
|
|
||||||
#define PNGU_LIB_ERROR 9
|
|
||||||
|
|
||||||
// Color types
|
|
||||||
#define PNGU_COLOR_TYPE_GRAY 1
|
|
||||||
#define PNGU_COLOR_TYPE_GRAY_ALPHA 2
|
|
||||||
#define PNGU_COLOR_TYPE_PALETTE 3
|
|
||||||
#define PNGU_COLOR_TYPE_RGB 4
|
|
||||||
#define PNGU_COLOR_TYPE_RGB_ALPHA 5
|
|
||||||
#define PNGU_COLOR_TYPE_UNKNOWN 6
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Types
|
|
||||||
typedef unsigned char PNGU_u8;
|
|
||||||
typedef unsigned short PNGU_u16;
|
|
||||||
typedef unsigned int PNGU_u32;
|
|
||||||
typedef unsigned long long PNGU_u64;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
PNGU_u8 r;
|
|
||||||
PNGU_u8 g;
|
|
||||||
PNGU_u8 b;
|
|
||||||
} PNGUCOLOR;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
PNGU_u32 imgWidth; // In pixels
|
|
||||||
PNGU_u32 imgHeight; // In pixels
|
|
||||||
PNGU_u32 imgBitDepth; // In bitx
|
|
||||||
PNGU_u32 imgColorType; // PNGU_COLOR_TYPE_*
|
|
||||||
PNGU_u32 validBckgrnd; // Non zero if there is a background color
|
|
||||||
PNGUCOLOR bckgrnd; // Backgroun color
|
|
||||||
PNGU_u32 numTrans; // Number of transparent colors
|
|
||||||
PNGUCOLOR *trans; // Transparent colors
|
|
||||||
} PNGUPROP;
|
|
||||||
|
|
||||||
// Image context, always initialize with SelectImageFrom* and free with ReleaseImageContext
|
|
||||||
struct _IMGCTX;
|
|
||||||
typedef struct _IMGCTX *IMGCTX;
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Pixel conversion *
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
// Macro to convert RGB8 values to RGB565
|
|
||||||
#define PNGU_RGB8_TO_RGB565(r,g,b) ( ((((PNGU_u16) r) & 0xF8U) << 8) | ((((PNGU_u16) g) & 0xFCU) << 3) | (((PNGU_u16) b) >> 3) )
|
|
||||||
|
|
||||||
// Macro to convert RGBA8 values to RGB5A3
|
|
||||||
#define PNGU_RGB8_TO_RGB5A3(r,g,b,a) (PNGU_u16) (((a & 0xE0U) == 0xE0U) ? \
|
|
||||||
(0x8000U | ((((PNGU_u16) r) & 0xF8U) << 7) | ((((PNGU_u16) g) & 0xF8U) << 2) | (((PNGU_u16) b) >> 3)) : \
|
|
||||||
(((((PNGU_u16) a) & 0xE0U) << 7) | ((((PNGU_u16) r) & 0xF0U) << 4) | (((PNGU_u16) g) & 0xF0U) | ((((PNGU_u16) b) & 0xF0U) >> 4)))
|
|
||||||
|
|
||||||
// Function to convert two RGB8 values to YCbYCr
|
|
||||||
PNGU_u32 PNGU_RGB8_TO_YCbYCr (PNGU_u8 r1, PNGU_u8 g1, PNGU_u8 b1, PNGU_u8 r2, PNGU_u8 g2, PNGU_u8 b2);
|
|
||||||
|
|
||||||
// Function to convert an YCbYCr to two RGB8 values.
|
|
||||||
void PNGU_YCbYCr_TO_RGB8 (PNGU_u32 ycbycr, PNGU_u8 *r1, PNGU_u8 *g1, PNGU_u8 *b1, PNGU_u8 *r2, PNGU_u8 *g2, PNGU_u8 *b2);
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Image context handling *
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
// Selects a PNG file, previosly loaded into a buffer, and creates an image context for subsequent procesing.
|
|
||||||
IMGCTX PNGU_SelectImageFromBuffer (const void *buffer);
|
|
||||||
|
|
||||||
// Selects a PNG file, from any devoptab device, and creates an image context for subsequent procesing.
|
|
||||||
IMGCTX PNGU_SelectImageFromDevice (const char *filename);
|
|
||||||
|
|
||||||
// Frees resources associated with an image context. Always call this function when you no longer need the IMGCTX.
|
|
||||||
void PNGU_ReleaseImageContext (IMGCTX ctx);
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Miscelaneous *
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
// Retrieves info from selected PNG file, including image dimensions, color format, background and transparency colors.
|
|
||||||
int PNGU_GetImageProperties (IMGCTX ctx, PNGUPROP *fileproperties);
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Image conversion *
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
// Expands selected image into an YCbYCr buffer. You need to specify context, image dimensions,
|
|
||||||
// destination address and stride in pixels (stride = buffer width - image width).
|
|
||||||
int PNGU_DecodeToYCbYCr (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer, PNGU_u32 stride);
|
|
||||||
|
|
||||||
// Macro for decoding an image inside a buffer at given coordinates.
|
|
||||||
#define PNGU_DECODE_TO_COORDS_YCbYCr(ctx,coordX,coordY,imgWidth,imgHeight,bufferWidth,bufferHeight,buffer) \
|
|
||||||
\
|
|
||||||
PNGU_DecodeToYCbYCr (ctx, imgWidth, imgHeight, ((void *) buffer) + (coordY) * (bufferWidth) * 2 + \
|
|
||||||
(coordX) * 2, (bufferWidth) - (imgWidth))
|
|
||||||
|
|
||||||
// Expands selected image into a linear RGB565 buffer. You need to specify context, image dimensions,
|
|
||||||
// destination address and stride in pixels (stride = buffer width - image width).
|
|
||||||
int PNGU_DecodeToRGB565 (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer, PNGU_u32 stride);
|
|
||||||
|
|
||||||
// Macro for decoding an image inside a buffer at given coordinates.
|
|
||||||
#define PNGU_DECODE_TO_COORDS_RGB565(ctx,coordX,coordY,imgWidth,imgHeight,bufferWidth,bufferHeight,buffer) \
|
|
||||||
\
|
|
||||||
PNGU_DecodeToRGB565 (ctx, imgWidth, imgHeight, ((void *) buffer) + (coordY) * (bufferWidth) * 2 + \
|
|
||||||
(coordX) * 2, (bufferWidth) - (imgWidth))
|
|
||||||
|
|
||||||
// Expands selected image into a linear RGBA8 buffer. You need to specify context, image dimensions,
|
|
||||||
// destination address, stride in pixels and default alpha value, which is used if the source image
|
|
||||||
// doesn't have an alpha channel.
|
|
||||||
int PNGU_DecodeToRGBA8 (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer, PNGU_u32 stride, PNGU_u8 default_alpha);
|
|
||||||
|
|
||||||
// Macro for decoding an image inside a buffer at given coordinates.
|
|
||||||
#define PNGU_DECODE_TO_COORDS_RGBA8(ctx,coordX,coordY,imgWidth,imgHeight,default_alpha,bufferWidth,bufferHeight,buffer) \
|
|
||||||
\
|
|
||||||
PNGU_DecodeToRGBA8 (ctx, imgWidth, imgHeight, ((void *) buffer) + (coordY) * (bufferWidth) * 2 + \
|
|
||||||
(coordX) * 2, (bufferWidth) - (imgWidth), default_alpha)
|
|
||||||
|
|
||||||
// Expands selected image into a 4x4 tiled RGB565 buffer. You need to specify context, image dimensions
|
|
||||||
// and destination address.
|
|
||||||
int PNGU_DecodeTo4x4RGB565 (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer);
|
|
||||||
|
|
||||||
// Expands selected image into a 4x4 tiled RGB5A3 buffer. You need to specify context, image dimensions,
|
|
||||||
// destination address and default alpha value, which is used if the source image doesn't have an alpha channel.
|
|
||||||
int PNGU_DecodeTo4x4RGB5A3 (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer, PNGU_u8 default_alpha);
|
|
||||||
|
|
||||||
// Expands selected image into a 4x4 tiled RGBA8 buffer. You need to specify context, image dimensions,
|
|
||||||
// destination address and default alpha value, which is used if the source image doesn't have an alpha channel.
|
|
||||||
int PNGU_DecodeTo4x4RGBA8 (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer, PNGU_u8 default_alpha);
|
|
||||||
|
|
||||||
// Encodes an YCbYCr image in PNG format and stores it in the selected device or memory buffer. You need to
|
|
||||||
// specify context, image dimensions, destination address and stride in pixels (stride = buffer width - image width).
|
|
||||||
int PNGU_EncodeFromYCbYCr (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, void *buffer, PNGU_u32 stride);
|
|
||||||
|
|
||||||
// Macro for encoding an image stored into an YCbYCr buffer at given coordinates.
|
|
||||||
#define PNGU_ENCODE_TO_COORDS_YCbYCr(ctx,coordX,coordY,imgWidth,imgHeight,bufferWidth,bufferHeight,buffer) \
|
|
||||||
\
|
|
||||||
PNGU_EncodeFromYCbYCr (ctx, imgWidth, imgHeight, ((void *) buffer) + (coordY) * (bufferWidth) * 2 + \
|
|
||||||
(coordX) * 2, (bufferWidth) - (imgWidth))
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
BIN
lib/libdi.a
BIN
lib/libdi.a
Binary file not shown.
BIN
lib/libmxml.a
BIN
lib/libmxml.a
Binary file not shown.
BIN
lib/libpng.a
BIN
lib/libpng.a
Binary file not shown.
@ -57,14 +57,13 @@ dvd_read (void *dst, unsigned int len, u64 offset)
|
|||||||
|
|
||||||
if(offset < 0x57057C00 || (isWii == true && offset < 0x118244F00LL)) // don't read past the end of the DVD
|
if(offset < 0x57057C00 || (isWii == true && offset < 0x118244F00LL)) // don't read past the end of the DVD
|
||||||
{
|
{
|
||||||
offset >>= 2;
|
|
||||||
|
|
||||||
#ifdef HW_DOL
|
#ifdef HW_DOL
|
||||||
|
|
||||||
dvd[0] = 0x2E;
|
dvd[0] = 0x2E;
|
||||||
dvd[1] = 0;
|
dvd[1] = 0;
|
||||||
dvd[2] = 0xA8000000;
|
dvd[2] = 0xA8000000;
|
||||||
dvd[3] = (u32)offset;
|
dvd[3] = (u32)(offset >> 2);
|
||||||
dvd[4] = len;
|
dvd[4] = len;
|
||||||
dvd[5] = (u32) buffer;
|
dvd[5] = (u32) buffer;
|
||||||
dvd[6] = len;
|
dvd[6] = len;
|
||||||
@ -79,7 +78,7 @@ dvd_read (void *dst, unsigned int len, u64 offset)
|
|||||||
|
|
||||||
#elif WII_DVD
|
#elif WII_DVD
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
ret = DI_ReadDVD(dst, (u32)len, (u32)offset);
|
ret = DI_ReadDVD(dst, len >> 11, (u32)(offset >> 11));
|
||||||
if (ret==0)
|
if (ret==0)
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ogcsys.h>
|
#include <ogcsys.h>
|
||||||
#include "mxml.h"
|
#include <mxml.h>
|
||||||
|
|
||||||
#include "snes9x.h"
|
#include "snes9x.h"
|
||||||
#include "memmap.h"
|
#include "memmap.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user