use super::api::{FLAG_C, FLAG_P, FLAG_S, FLAG_Z};
use super::z80_base::{Z80Data, SHIFT_0X_CB, SHIFT_0X_DD, SHIFT_0X_DDCB, SHIFT_0X_ED, SHIFT_0X_FD};
pub fn get_timings(data: &Z80Data, opcode: u16) -> u64 {
match opcode {
0 => {
5
}
0x2 => {
8
}
0x3 => {
7
}
0x4 => {
5
}
0x5 => {
5
}
0x7 => {
5
}
0x8 => {
5
}
0x9 => {
12
}
0x12 => {
8
}
0x13 => {
7
}
0x14 => {
5
}
0x15 => {
5
}
0x17 => {
5
}
0x19 => {
12
}
0x23 => {
7
}
0x24 => {
5
}
0x25 => {
5
}
0x27 => {
5
}
0x29 => {
12
}
0x33 => {
7
}
0x34 => {
12
}
0x35 => {
12
}
0x37 => {
5
}
0x39 => {
12
}
0x46 => {
8
}
0x56 => {
8
}
0x66 => {
8
}
0x76 => {
5
}
0x86 => {
8
}
0x96 => {
8
}
0x1 => {
11
}
0x6 => {
8
}
0x0a => {
8
}
0x0b => {
7
}
0x0c => {
5
}
0x0d => {
5
}
0x0e => {
8
}
0x0f => {
5
}
0x10 => {
0
}
0x11 => {
11
}
0x16 => {
8
}
0x18 => {
13
}
0x1a => {
8
}
0x1b => {
7
}
0x1c => {
5
}
0x1d => {
5
}
0x1e => {
8
}
0x1f => {
5
}
0x21 => {
11
}
0x22 => {
17
}
0x26 => {
8
}
0x2a => {
17
}
0x2b => {
7
}
0x2c => {
5
}
0x2d => {
5
}
0x2e => {
8
}
0x2f => {
5
}
0x31 => {
11
}
0x32 => {
14
}
0x36 => {
11
}
0x3a => {
14
}
0x3b => {
7
}
0x3c => {
5
}
0x3d => {
5
}
0x3e => {
8
}
0x3f => {
5
}
0x40 => {
5
}
0x48 => {
5
}
0x4e => {
8
}
0x50 => {
5
}
0x58 => {
5
}
0x5e => {
8
}
0x60 => {
5
}
0x68 => {
5
}
0x6e => {
8
}
0x70 => {
8
}
0x78 => {
5
}
0x7e => {
8
}
0x80 => {
5
}
0x88 => {
5
}
0x8e => {
8
}
0x90 => {
5
}
0x98 => {
5
}
0x9e => {
8
}
0xa0 => {
5
}
0xa6 => {
8
}
0xa8 => {
5
}
0xae => {
8
}
0xb0 => {
5
}
0xb6 => {
8
}
0xb8 => {
5
}
0xbe => {
8
}
0xc1 => {
11
}
0xc2 => {
11
}
0xc3 => {
11
}
0xc5 => {
12
}
0xc6 => {
8
}
0xc7 => {
12
}
0xc9 => {
11
}
0xca => {
11
}
val if val == SHIFT_0X_CB => {
10
}
val if val == SHIFT_0X_CB + 0x06 => {
17
}
val if val == SHIFT_0X_CB + 0x08 => {
10
}
val if val == SHIFT_0X_CB + 0x0e => {
17
}
val if val == SHIFT_0X_CB + 0x10 => {
10
}
val if val == SHIFT_0X_CB + 0x16 => {
17
}
val if val == SHIFT_0X_CB + 0x18 => {
10
}
val if val == SHIFT_0X_CB + 0x1e => {
17
}
val if val == SHIFT_0X_CB + 0x20 => {
10
}
val if val == SHIFT_0X_CB + 0x26 => {
17
}
val if val == SHIFT_0X_CB + 0x28 => {
10
}
val if val == SHIFT_0X_CB + 0x2e => {
17
}
val if val == SHIFT_0X_CB + 0x38 => {
10
}
val if val == SHIFT_0X_CB + 0x3e => {
17
}
val if val == SHIFT_0X_CB + 0x40 => {
10
}
val if val == SHIFT_0X_CB + 0x46 => {
14
}
val if val == SHIFT_0X_CB + 0x80 => {
10
}
val if val == SHIFT_0X_CB + 0x86 => {
17
}
val if val == SHIFT_0X_CB + 0xc0 => {
10
}
val if val == SHIFT_0X_CB + 0xc6 => {
17
}
0xcd => {
18
}
0xce => {
8
}
0xcf => {
12
}
0xd1 => {
11
}
0xd2 => {
11
}
0xd3 => {
12
}
0xd5 => {
12
}
0xd6 => {
8
}
0xd7 => {
12
}
0xd9 => {
5
}
0xda => {
11
}
0xdb => {
12
}
val if val == SHIFT_0X_DD + 0x04 => {
10
}
val if val == SHIFT_0X_DD + 0x05 => {
10
}
val if val == SHIFT_0X_DD + 0x09 => {
17
}
val if val == SHIFT_0X_DD + 0x19 => {
17
}
val if val == SHIFT_0X_DD + 0x21 => {
16
}
val if val == SHIFT_0X_DD + 0x22 => {
22
}
val if val == SHIFT_0X_DD + 0x23 => {
12
}
val if val == SHIFT_0X_DD + 0x26 => {
13
}
val if val == SHIFT_0X_DD + 0x29 => {
17
}
val if val == SHIFT_0X_DD + 0x2a => {
22
}
val if val == SHIFT_0X_DD + 0x2b => {
12
}
val if val == SHIFT_0X_DD + 0x2e => {
13
}
val if val == SHIFT_0X_DD + 0x34 => {
25
}
val if val == SHIFT_0X_DD + 0x35 => {
25
}
val if val == SHIFT_0X_DD + 0x36 => {
21
}
val if val == SHIFT_0X_DD + 0x39 => {
17
}
val if val == SHIFT_0X_DD + 0x40 => {
10
}
val if val == SHIFT_0X_DD + 0x46 => {
21
}
val if val == SHIFT_0X_DD + 0x48 => {
10
}
val if val == SHIFT_0X_DD + 0x4e => {
21
}
val if val == SHIFT_0X_DD + 0x50 => {
10
}
val if val == SHIFT_0X_DD + 0x56 => {
21
}
val if val == SHIFT_0X_DD + 0x58 => {
10
}
val if val == SHIFT_0X_DD + 0x5e => {
21
}
val if val == SHIFT_0X_DD + 0x60 => {
10
}
val if val == SHIFT_0X_DD + 0x66 => {
21
}
val if val == SHIFT_0X_DD + 0x68 => {
10
}
val if val == SHIFT_0X_DD + 0x6e => {
21
}
val if val == SHIFT_0X_DD + 0x70 => {
21
}
val if val == SHIFT_0X_DD + 0x78 => {
10
}
val if val == SHIFT_0X_DD + 0x7e => {
21
}
val if val == SHIFT_0X_DD + 0x80 => {
10
}
val if val == SHIFT_0X_DD + 0x86 => {
21
}
val if val == SHIFT_0X_DD + 0x88 => {
10
}
val if val == SHIFT_0X_DD + 0x8e => {
21
}
val if val == SHIFT_0X_DD + 0x90 => {
10
}
val if val == SHIFT_0X_DD + 0x96 => {
21
}
val if val == SHIFT_0X_DD + 0x98 => {
10
}
val if val == SHIFT_0X_DD + 0x9e => {
21
}
val if val == SHIFT_0X_DD + 0xa0 => {
10
}
val if val == SHIFT_0X_DD + 0xa6 => {
21
}
val if val == SHIFT_0X_DD + 0xa8 => {
10
}
val if val == SHIFT_0X_DD + 0xae => {
21
}
val if val == SHIFT_0X_DD + 0xb0 => {
10
}
val if val == SHIFT_0X_DD + 0xb6 => {
21
}
val if val == SHIFT_0X_DD + 0xb8 => {
10
}
val if val == SHIFT_0X_DD + 0xbe => {
21
}
val if val == SHIFT_0X_DDCB + 0x06 => {
25
}
val if val == SHIFT_0X_DDCB + 0x0e => {
25
}
val if val == SHIFT_0X_DDCB + 0x16 => {
25
}
val if val == SHIFT_0X_DDCB + 0x1e => {
25
}
val if val == SHIFT_0X_DDCB + 0x26 => {
25
}
val if val == SHIFT_0X_DDCB + 0x2e => {
25
}
val if val == SHIFT_0X_DDCB + 0x3e => {
25
}
val if val == SHIFT_0X_DDCB + 0x46 => {
25
}
val if val == SHIFT_0X_DDCB + 0x86 => {
25
}
val if val == SHIFT_0X_DDCB + 0xc6 => {
25
}
val if val == SHIFT_0X_DD + 0xe1 => {
16
}
val if val == SHIFT_0X_DD + 0xe3 => {
25
}
val if val == SHIFT_0X_DD + 0xe5 => {
17
}
val if val == SHIFT_0X_DD + 0xe9 => {
10
}
val if val == SHIFT_0X_DD + 0xf9 => {
12
}
0xde => {
8
}
0xdf => {
12
}
0xe1 => {
11
}
0xe2 => {
11
}
0xe3 => {
20
}
0xe5 => {
12
}
0xe6 => {
8
}
0xe7 => {
12
}
0xe9 => {
5
}
0xea => {
11
}
0xeb => {
5
}
val if val == SHIFT_0X_ED + 0x40 => {
14
}
val if val == SHIFT_0X_ED + 0x41 => {
14
}
val if val == SHIFT_0X_ED + 0x42 => {
17
}
val if val == SHIFT_0X_ED + 0x43 => {
22
}
val if val == SHIFT_0X_ED + 0x44 => {
10
}
val if val == SHIFT_0X_ED + 0x45 => {
16
}
val if val == SHIFT_0X_ED + 0x46 => {
10
}
val if val == SHIFT_0X_ED + 0x47 => {
11
}
val if val == SHIFT_0X_ED + 0x48 => {
14
}
val if val == SHIFT_0X_ED + 0x49 => {
14
}
val if val == SHIFT_0X_ED + 0x4a => {
17
}
val if val == SHIFT_0X_ED + 0x4b => {
22
}
val if val == SHIFT_0X_ED + 0x4d => {
16
}
val if val == SHIFT_0X_ED + 0x4f => {
11
}
val if val == SHIFT_0X_ED + 0x50 => {
14
}
val if val == SHIFT_0X_ED + 0x51 => {
14
}
val if val == SHIFT_0X_ED + 0x52 => {
17
}
val if val == SHIFT_0X_ED + 0x53 => {
22
}
val if val == SHIFT_0X_ED + 0x56 => {
10
}
val if val == SHIFT_0X_ED + 0x57 => {
11
}
val if val == SHIFT_0X_ED + 0x58 => {
14
}
val if val == SHIFT_0X_ED + 0x59 => {
14
}
val if val == SHIFT_0X_ED + 0x5a => {
17
}
val if val == SHIFT_0X_ED + 0x5b => {
22
}
val if val == SHIFT_0X_ED + 0x5e => {
10
}
val if val == SHIFT_0X_ED + 0x5f => {
11
}
val if val == SHIFT_0X_ED + 0x60 => {
14
}
val if val == SHIFT_0X_ED + 0x61 => {
14
}
val if val == SHIFT_0X_ED + 0x62 => {
17
}
val if val == SHIFT_0X_ED + 0x67 => {
20
}
val if val == SHIFT_0X_ED + 0x68 => {
14
}
val if val == SHIFT_0X_ED + 0x69 => {
14
}
val if val == SHIFT_0X_ED + 0x6a => {
17
}
val if val == SHIFT_0X_ED + 0x6f => {
20
}
val if val == SHIFT_0X_ED + 0x70 => {
14
}
val if val == SHIFT_0X_ED + 0x72 => {
17
}
val if val == SHIFT_0X_ED + 0x73 => {
22
}
val if val == SHIFT_0X_ED + 0x78 => {
14
}
val if val == SHIFT_0X_ED + 0x79 => {
14
}
val if val == SHIFT_0X_ED + 0x7a => {
17
}
val if val == SHIFT_0X_ED + 0x7b => {
22
}
val if val == SHIFT_0X_ED + 0xa0 => {
18
}
val if val == SHIFT_0X_ED + 0xa1 => {
18
}
val if val == SHIFT_0X_ED + 0xa2 => {
18
}
val if val == SHIFT_0X_ED + 0xa3 => {
18
}
val if val == SHIFT_0X_ED + 0xa8 => {
18
}
val if val == SHIFT_0X_ED + 0xa9 => {
18
}
val if val == SHIFT_0X_ED + 0xaa => {
18
}
val if val == SHIFT_0X_ED + 0xab => {
18
}
val if val == SHIFT_0X_ED + 0xb0 => {
0
}
val if val == SHIFT_0X_ED + 0xb1 => {
0
}
val if val == SHIFT_0X_ED + 0xb2 => {
0
}
val if val == SHIFT_0X_ED + 0xb3 => {
0
}
val if val == SHIFT_0X_ED + 0xb8 => {
0
}
val if val == SHIFT_0X_ED + 0xb9 => {
0
}
val if val == SHIFT_0X_ED + 0xba => {
0
}
val if val == SHIFT_0X_ED + 0xbb => {
0
}
val if val == SHIFT_0X_ED + 0xc1 => {
0
}
val if val == SHIFT_0X_ED + 0xc3 => {
0
}
val if val == SHIFT_0X_ED + 0xf3 => {
0
}
0xee => {
8
}
0xef => {
12
}
0xf1 => {
11
}
0xf2 => {
11
}
0xf3 => {
5
}
0xf5 => {
12
}
0xf6 => {
8
}
0xf7 => {
12
}
0xf9 => {
7
}
0xfa => {
11
}
0xfb => {
5
}
val if val == SHIFT_0X_FD + 0x04 => {
10
}
val if val == SHIFT_0X_FD + 0x05 => {
10
}
val if val == SHIFT_0X_FD + 0x09 => {
17
}
val if val == SHIFT_0X_FD + 0x19 => {
17
}
val if val == SHIFT_0X_FD + 0x21 => {
16
}
val if val == SHIFT_0X_FD + 0x22 => {
22
}
val if val == SHIFT_0X_FD + 0x23 => {
12
}
val if val == SHIFT_0X_FD + 0x26 => {
13
}
val if val == SHIFT_0X_FD + 0x29 => {
17
}
val if val == SHIFT_0X_FD + 0x2a => {
22
}
val if val == SHIFT_0X_FD + 0x2b => {
12
}
val if val == SHIFT_0X_FD + 0x2e => {
13
}
val if val == SHIFT_0X_FD + 0x34 => {
25
}
val if val == SHIFT_0X_FD + 0x35 => {
25
}
val if val == SHIFT_0X_FD + 0x36 => {
21
}
val if val == SHIFT_0X_FD + 0x39 => {
17
}
val if val == SHIFT_0X_FD + 0x40 => {
10
}
val if val == SHIFT_0X_FD + 0x46 => {
21
}
val if val == SHIFT_0X_FD + 0x48 => {
10
}
val if val == SHIFT_0X_FD + 0x4e => {
21
}
val if val == SHIFT_0X_FD + 0x50 => {
10
}
val if val == SHIFT_0X_FD + 0x56 => {
21
}
val if val == SHIFT_0X_FD + 0x58 => {
10
}
val if val == SHIFT_0X_FD + 0x5e => {
21
}
val if val == SHIFT_0X_FD + 0x60 => {
10
}
val if val == SHIFT_0X_FD + 0x66 => {
21
}
val if val == SHIFT_0X_FD + 0x68 => {
10
}
val if val == SHIFT_0X_FD + 0x6e => {
21
}
val if val == SHIFT_0X_FD + 0x70 => {
21
}
val if val == SHIFT_0X_FD + 0x78 => {
10
}
val if val == SHIFT_0X_FD + 0x7e => {
21
}
val if val == SHIFT_0X_FD + 0x80 => {
10
}
val if val == SHIFT_0X_FD + 0x86 => {
21
}
val if val == SHIFT_0X_FD + 0x88 => {
10
}
val if val == SHIFT_0X_FD + 0x8e => {
21
}
val if val == SHIFT_0X_FD + 0x90 => {
10
}
val if val == SHIFT_0X_FD + 0x96 => {
21
}
val if val == SHIFT_0X_FD + 0x98 => {
10
}
val if val == SHIFT_0X_FD + 0x9e => {
21
}
val if val == SHIFT_0X_FD + 0xa0 => {
10
}
val if val == SHIFT_0X_FD + 0xa6 => {
21
}
val if val == SHIFT_0X_FD + 0xa8 => {
10
}
val if val == SHIFT_0X_FD + 0xae => {
21
}
val if val == SHIFT_0X_FD + 0xb0 => {
10
}
val if val == SHIFT_0X_FD + 0xb6 => {
21
}
val if val == SHIFT_0X_FD + 0xb8 => {
10
}
val if val == SHIFT_0X_FD + 0xbe => {
21
}
val if val == SHIFT_0X_DDCB + 0x06 => {
25
}
val if val == SHIFT_0X_DDCB + 0x0e => {
25
}
val if val == SHIFT_0X_DDCB + 0x16 => {
25
}
val if val == SHIFT_0X_DDCB + 0x1e => {
25
}
val if val == SHIFT_0X_DDCB + 0x26 => {
25
}
val if val == SHIFT_0X_DDCB + 0x2e => {
25
}
val if val == SHIFT_0X_DDCB + 0x3e => {
25
}
val if val == SHIFT_0X_DDCB + 0x46 => {
22
}
val if val == SHIFT_0X_DDCB + 0x86 => {
25
}
val if val == SHIFT_0X_DDCB + 0xc6 => {
25
}
val if val == SHIFT_0X_FD + 0xe1 => {
16
}
val if val == SHIFT_0X_FD + 0xe3 => {
25
}
val if val == SHIFT_0X_FD + 0xe5 => {
17
}
val if val == SHIFT_0X_FD + 0xe9 => {
10
}
val if val == SHIFT_0X_FD + 0xf9 => {
12
}
0xfe => {
8
}
0xff => {
12
}
0xdc => {
if data.F & FLAG_C != 0 {
18
} else {
11
}
}
0xfc => {
if data.F & FLAG_S != 0 {
18
} else {
11
}
}
0xd4 => {
if data.F & FLAG_C == 0 {
18
} else {
11
}
}
0xc4 => {
if data.F & FLAG_Z == 0 {
18
} else {
11
}
}
0xf4 => {
if data.F & FLAG_S == 0 {
18
} else {
11
}
}
0xec => {
if data.F & FLAG_P != 0 {
18
} else {
11
}
}
0xe4 => {
if data.F & FLAG_P == 0 {
18
} else {
11
}
}
0xcc => {
if data.F & FLAG_Z != 0 {
18
} else {
11
}
}
0x38 => {
if data.F & FLAG_C != 0 {
13
} else {
8
}
}
0x30 => {
if data.F & FLAG_C == 0 {
13
} else {
8
}
}
0x28 => {
if data.F & FLAG_Z != 0 {
13
} else {
8
}
}
0x20 => {
if data.F & FLAG_Z == 0 {
13
} else {
8
}
}
0xd8 => {
if data.F & FLAG_C != 0 {
12
} else {
6
}
}
0xf8 => {
if data.F & FLAG_S != 0 {
12
} else {
6
}
}
0xd0 => {
if data.F & FLAG_C == 0 {
12
} else {
6
}
}
0xc0 => {
if data.F & FLAG_Z == 0 {
12
} else {
6
}
}
0xf0 => {
if data.F & FLAG_S == 0 {
12
} else {
6
}
}
0xe8 => {
if data.F & FLAG_P != 0 {
12
} else {
6
}
}
0xe0 => {
if data.F & FLAG_P == 0 {
12
} else {
6
}
}
0xc8 => {
if data.F & FLAG_Z != 0 {
12
} else {
6
}
}
_ => 0,
}
}