summaryrefslogtreecommitdiffstats
path: root/include/ps3_common.h
blob: 83df640806d053382ec701d47638daa6ffb26a0c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#define u64 unsigned long long
#define u32 unsigned int
#define u16 unsigned short int
#define u8 unsigned char


u64 get_u64(void* vd) {
  u8 *d = (u8*)vd;
  return ((u64)d[0]<<56) | ((u64)d[1]<<48) | ((u64)d[2]<<40) | ((u64)d[3]<<32) | (d[4]<<24) | (d[5]<<16) | (d[6]<<8) | d[7];
}

void set_u64(void* vd, u64 v) {
  u8 *d = (u8*)vd;
  d[0] = v>>56;
  d[1] = v>>48;
  d[2] = v>>40;
  d[3] = v>>32;
  d[4] = v>>24;
  d[5] = v>>16;
  d[6] = v>>8;
  d[7] = v>>0;
}

void set_u32(void* vd, u32 v) {
  u8 *d = (u8*)vd;
  d[0] = v>>24;
  d[1] = v>>16;
  d[2] = v>>8;
  d[3] = v>>0;
}

void set_u16(void* vd, u16 v) {
  u8 *d = (u8*)vd;
  d[0] = v>>8;
  d[1] = v>>0;
}

u32 get_u32(void* vd) {
  u8 *d = (u8*)vd;
  return (d[0]<<24) | (d[1]<<16) | (d[2]<<8) | d[3];
}

float get_float(u8* d) {
  float ret;
  u32 inter = (d[0]<<24) | (d[1]<<16) | (d[2]<<8) | d[3];
  memcpy(&ret, &inter, 4);
  return ret;
}

u32 get_u16(void* vd) {
  u8 *d = (u8*)vd;
  return (d[0]<<8) | d[1];
}

void hexdump(u8* d, int l) {
  int i;
  for(i=0;i<l;i++) {
    if(i!=0 && (i%16)==0) printf("\n");
    printf("%2.2X ", d[i]);
  }
  printf("\n");
}


void hexdump_nl(u8* d, int l) {
  int i;
  for(i=0;i<l;i++) {
    printf("%2.2X ", d[i]);
  }
  printf("\n");
}

void hexdump_ns(u8* d, int l) {
  int i;
  for(i=0;i<l;i++) {
    printf("%2.2X", d[i]);
  }
}

void hexdump_c(u8* d, int l) {
  int i;
  for(i=0;i<l;i++) {
    printf("0x%2.2X", d[i]);
    if(i!=(l-1)) {
      printf(",");
    }
  }
}

void hexdump_32(u8* d, int l) {
  int i;
  for(i=0;i<l;i+=4) {
    if(i!=0 && (i%16)==0) printf("\n");
    printf("%8X ", get_u32(d+i));
  }
  printf("\n");
}