-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrp.ts
101 lines (95 loc) · 1.96 KB
/
rp.ts
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
98
99
100
101
import { Condition, RichPresence } from '@cruncheevos/core';
const memorySizeToRp = (size: Condition.Size): string => {
switch (size) {
case 'Bit0':
return '0xM';
case 'Bit1':
return '0xN';
case 'Bit2':
return '0xO';
case 'Bit3':
return '0xP';
case 'Bit4':
return '0xQ';
case 'Bit5':
return '0xR';
case 'Bit6':
return '0xS';
case 'Bit7':
return '0xT';
case 'Lower4':
return '0xL';
case 'Upper4':
return '0xU';
case '8bit':
return '0xH';
case '24bit':
return '0xW';
case '32bit':
return '0xX';
case '16bitBE':
return '0xI';
case '24bitBE':
return '0xJ';
case '32bitBE':
return '0xG';
case 'BitCount':
return '0xK';
case 'Float':
return 'fF';
case 'FloatBE':
return 'fB';
case 'MBF32':
return 'fM';
case 'MBF32LE':
return 'fL';
case 'Double32':
return 'fH';
case 'Double32BE':
return 'fI';
default:
return '0x ';
}
};
const prefixToRp = (prefix: Condition.ValueType): string => {
switch (prefix) {
case 'Delta':
return 'd';
case 'Prior':
return 'p';
case 'BCD':
return 'b';
case 'Invert':
return '~';
default:
return '';
}
};
export const rpMakeLookupLib = (
name: string,
size: Condition.Size,
addr: number,
obj: Record<number, string | number>,
fallback: string | undefined = undefined,
prefix: Condition.ValueType = '',
) => {
const values: Record<string | number, string> = {};
if (fallback) {
values['*'] = fallback;
}
for (const key in obj) {
const tmp = obj[key];
if (typeof tmp === 'number') {
values[key] = '' + tmp;
} else {
values[key] = tmp;
}
}
const target = `${prefixToRp(prefix)}${memorySizeToRp(size)}${addr.toString(16)}`;
const data: RichPresence.LookupParams = {
values,
name,
defaultAt: target,
};
return data;
};