mirror of
https://github.com/open-develop/xenoborg.git
synced 2025-04-02 13:21:42 -04:00
109 lines
5.1 KiB
C
109 lines
5.1 KiB
C
#pragma once
|
|
|
|
struct smbus_t
|
|
{
|
|
// Ports
|
|
unsigned char status; // 0xC000
|
|
unsigned char control; // 0xC002
|
|
unsigned char address; // 0xC004
|
|
unsigned char data; // 0xC006
|
|
unsigned char command; // 0xC008
|
|
};
|
|
|
|
struct pic_t
|
|
{
|
|
unsigned char pic_version[3]; // 0x01 (r)
|
|
unsigned char pic_ver_string_counter; // 0x01 (w)
|
|
unsigned char reset_and_poweroff_ctrl; // 0x02 (w)
|
|
unsigned char tray_state_r; // 0x03 (r)
|
|
unsigned char av_pack_state; // 0x04 (r)
|
|
unsigned char power_fan_mode; // 0x05 (w)
|
|
unsigned char power_fan_speed; // 0x06 (w)
|
|
unsigned char led_mode; // 0x07 (w)
|
|
unsigned char led_flash_seq; // 0x08 (w)
|
|
unsigned char cpu_temperature; // 0x09 (r)
|
|
unsigned char board_temperature; // 0x0A (r)
|
|
unsigned char tray_eject; // 0x0C (w)
|
|
unsigned char unknown_scratch_register; // 0x0E (w?)
|
|
unsigned char scratch_register; // 0x0F (r)
|
|
unsigned char fan_speed; // 0x10 (r)
|
|
unsigned char irq_reason; // 0x11 (r)
|
|
unsigned char overheat; // 0x18 (r)
|
|
unsigned char reset_on_eject; // 0x19 (w)
|
|
unsigned char irq_enable; // 0x1A (r?/w)
|
|
unsigned char krnl_scratch_reg; // 0x1B (r/w)
|
|
};
|
|
|
|
// This struct is a slightly moddified version of the one found below:
|
|
// http://www.xbox-linux.org/docs/Xbox_Serial_EEPROM.html
|
|
|
|
#pragma pack( 1 )
|
|
struct eeprom_t
|
|
{
|
|
unsigned long HMAC_SHA1_Hash : 20; // 0x00 - 0x13 HMAC_SHA1 Hash
|
|
unsigned long Confounder : 8; // 0x14 - 0x1B RC4 Encrypted Confounder ??
|
|
unsigned long HDDKkey : 16; // 0x1C - 0x2B RC4 Encrypted HDD key
|
|
unsigned long XBERegion : 4; // 0x2C - 0x2F RC4 Encrypted Region code (0x01 North America, 0x02 Japan, 0x04 Europe)
|
|
unsigned long Checksum2 : 4; // 0x30 - 0x33 Checksum of next 44 bytes
|
|
unsigned long SerialNumber : 12; // 0x34 - 0x3F Xbox serial number
|
|
unsigned long MACAddress : 6; // 0x40 - 0x45 Ethernet MAC address
|
|
unsigned long UNKNOWN2 : 2; // 0x46 - 0x47 Unknown Padding ?
|
|
|
|
unsigned long OnlineKey : 16; // 0x48 - 0x57 Online Key ?
|
|
|
|
unsigned long VideoStandard : 4; // 0x58 - 0x5B 0x00800300 = PAL, 0x00400100 = NTSC, 0x00400200=NTSC_J
|
|
|
|
unsigned long UNKNOWN3 : 4; // 0x5C - 0x5F Unknown Padding ?
|
|
|
|
//Comes configured up to here from factory.. everything after this can be zero'd out...
|
|
//To reset XBOX to Factory settings, Make checksum3 0xFFFFFFFF and zero all data below (0x64-0xFF)
|
|
//Doing this will Reset XBOX and upon startup will get Language & Setup screen...
|
|
unsigned long Checksum3 : 4; // 0x60 - 0x63 other Checksum of next
|
|
|
|
unsigned long TimeZoneBias : 4; // 0x64 - 0x67 Zone Bias?
|
|
unsigned long TimeZoneStdName : 4; // 0x68 - 0x6B Standard timezone
|
|
unsigned long TimeZoneDltName : 4; // 0x5C - 0x6F Daylight timezone
|
|
unsigned long UNKNOWN4 : 8; // 0x70 - 0x77 Unknown Padding ?
|
|
unsigned long TimeZoneStdDate : 4; // 0x78 - 0x7B 10-05-00-02 (Month-Day-DayOfWeek-Hour)
|
|
unsigned long TimeZoneDltDate : 4; // 0x7C - 0x7F 04-01-00-02 (Month-Day-DayOfWeek-Hour)
|
|
unsigned long UNKNOWN5 : 8; // 0x80 - 0x87 Unknown Padding ?
|
|
unsigned long TimeZoneStdBias : 4; // 0x88 - 0x8B Standard Bias?
|
|
unsigned long TimeZoneDltBias : 4; // 0x8C - 0x8F Daylight Bias?
|
|
|
|
unsigned long LanguageID : 4; // 0x90 - 0x93 Language ID
|
|
|
|
unsigned long VideoFlags : 4; // 0x94 - 0x97 Video Settings - 0x96 b0==widescreen 0x96 b4 == letterbox
|
|
unsigned long AudioFlags : 4; // 0x98 - 0x9B Audio Settings
|
|
|
|
unsigned long ParentalControlGames : 4; // 0x9C - 0x9F 0=MAX rating
|
|
unsigned long ParentalControlPwd : 4; // 0xA0 - 0xA3 7=X, 8=Y, B=LTrigger, C=RTrigger
|
|
unsigned long ParentalControlMovies : 4; // 0xA4 - 0xA7 0=Max rating
|
|
|
|
unsigned long XBOXLiveIPAddress : 4; // 0xA8 - 0xAB XBOX Live IP Address..
|
|
unsigned long XBOXLiveDNS : 4; // 0xAC - 0xAF XBOX Live DNS Server..
|
|
unsigned long XBOXLiveGateWay : 4; // 0xB0 - 0xB3 XBOX Live Gateway Address..
|
|
unsigned long XBOXLiveSubNetMask : 4; // 0xB4 - 0xB7 XBOX Live Subnet Mask..
|
|
unsigned long OtherSettings : 4; // 0xA8 - 0xBB Other XBLive settings ?
|
|
|
|
unsigned long DVDPlaybackKitZone : 4; // 0xBC - 0xBF DVD Playback Kit Zone
|
|
|
|
unsigned __int64 UNKNOWN6 : 64; // 0xC0 - 0xFF Unknown Codes / Memory timing table?
|
|
};
|
|
#pragma pack()
|
|
|
|
// Read/Write port mapped I/O for SMBus devices
|
|
unsigned char xinpb( unsigned short Port );
|
|
unsigned short xinpw( unsigned short Port );
|
|
unsigned long xinpdw( unsigned short Port );
|
|
|
|
void xoutpb( unsigned short Port, unsigned char Data );
|
|
void xoutpw( unsigned short Port, unsigned short Data );
|
|
void xoutpdw( unsigned short Port, unsigned long Data );
|
|
|
|
void smbus_reset( void );
|
|
|
|
/* PIC (Programmable Interrupt Controller) functions */
|
|
void pic_reset( void );
|
|
unsigned char pic_read( unsigned char Command );
|
|
void pic_write( unsigned char Command, unsigned char Data );
|
|
void pic_irq( void );
|