iplleo.h 2.68 KB
/********************************************************************************
	iplleo.h: NINTENDO64 Disk Drive IPL header.

	January 17, 1987
 ********************************************************************************/

#ifndef IPLLEO_H
#define	IPLLEO_H

#include <PR/leoappli.h>

/********************************************************************************/
/*																				*/
/*	Destiny area.																*/
/*																				*/
/********************************************************************************/

#define LEO_COUNTRY_CODE_JAPAN			0xe848d316
#define LEO_COUNTRY_CODE_USA			0x2263ee56
#define LEO_COUNTRY_CODE_EUROPE			0xffffffff  		/* not defined		*/
#define LEO_COUNTRY_CODE_ASIA			0xffffffff  		/* not defined		*/
#define LEO_COUNTRY_CODE_DEVELOPER		0x00000000

#if defined(JAPAN_ID)
#define	LEO_COUNTRY_CODE		LEO_COUNTRY_CODE_JAPAN
#elif defined(USA_ID)
#define	LEO_COUNTRY_CODE		LEO_COUNTRY_CODE_USA
#elif defined(EUROPE_ID)
#define	LEO_COUNTRY_CODE		LEO_COUNTRY_CODE_EUROPE
#elif defined(ASIA_ID)
#define	LEO_COUNTRY_CODE		LEO_COUNTRY_CODE_ASIA
#else
#define	LEO_COUNTRY_CODE		LEO_COUNTRY_CODE_DEVELOPER
#endif


/********************************************************************************/
/*																				*/
/*	Read IPL command.															*/
/*																				*/
/********************************************************************************/

typedef struct {
    LEOCmdHeader  header;
    u64          *buff_ptr;
    u32           code;
} LEOCmdReadIPL;

typedef struct {
    LEOCmdHeader	header;
	u16				pad;
	u8				year;
	u8				month;
	u8				day;
	u8				hour;
	u8				minute;
	u8				second;
} LEOCmdTimeIPL;


/********************************************************************************/
/*																				*/
/*	ID area.																	*/
/*																				*/
/********************************************************************************/

typedef struct {
  u16			pad;
  u8			year;
  u8			month;
  u8			day;
  u8			hour;
  u8			minute;
  u8			second;
} LEODiskTime;

typedef	struct {
  u64			lineNumber;
  LEODiskTime	time;
} LEOSerialNum;

typedef struct {
  u8			gameName[4];
  u8			gameVersion;	
  u8			diskNumber;
  u16			diskUsage;
  LEOSerialNum	serialNumber;
  u64			reserve;
} LEODiskID;

#define	diskInformation		((LEODiskID *)0x800001a0)


/********************************************************************************/
/*																				*/
/*	IPL function prototype definition											*/
/*																				*/
/********************************************************************************/

extern void leoIPLInitialize(int priwrk, int priint);
extern void leoIPLCommand(void *command);
extern void leoIPLReset(void);

#endif