Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
folium-app
GitHub Repository: folium-app/Folium
Path: blob/a-new-beginning/Cherry/Core/include/opcode_timing.h
2 views
1
/*
2
* Gearcoleco - ColecoVision Emulator
3
* Copyright (C) 2021 Ignacio Sanchez
4
5
* This program is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation, either version 3 of the License, or
8
* any later version.
9
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
15
* You should have received a copy of the GNU General Public License
16
* along with this program. If not, see http://www.gnu.org/licenses/
17
*
18
*/
19
20
#ifndef OPCODE_TIMING_H
21
#define OPCODE_TIMING_H
22
23
const u8 kOPCodeTStates[256] =
24
{
25
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
26
/* 0x00 */ 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4,
27
/* 0x10 */ 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4,
28
/* 0x20 */ 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4,
29
/* 0x30 */ 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4,
30
/* 0x40 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
31
/* 0x50 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
32
/* 0x60 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
33
/* 0x70 */ 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,
34
/* 0x80 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
35
/* 0x90 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
36
/* 0xA0 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
37
/* 0xB0 */ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
38
/* 0xC0 */ 5,10,10,10,10,11, 7,11, 5,10,10, 0,10,17, 7,11,
39
/* 0xD0 */ 5,10,10,11,10,11, 7,11, 5, 4,10,11,10, 0, 7,11,
40
/* 0xE0 */ 5,10,10,19,10,11, 7,11, 5, 4,10, 4,10, 0, 7,11,
41
/* 0xF0 */ 5,10,10, 4,10,11, 7,11, 5, 6,10, 4,10, 0, 7,11
42
};
43
44
const u8 kOPCodeTStatesBranched[256] =
45
{
46
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
47
/* 0x00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48
/* 0x10 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49
/* 0x20 */ 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
50
/* 0x30 */ 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
51
/* 0x40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
52
/* 0x50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
53
/* 0x60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
54
/* 0x70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
55
/* 0x80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
56
/* 0x90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57
/* 0xA0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
58
/* 0xB0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
59
/* 0xC0 */ 6, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
60
/* 0xD0 */ 6, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
61
/* 0xE0 */ 6, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
62
/* 0xF0 */ 6, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0
63
};
64
65
const u8 kOPCodeCBTStates[256] =
66
{
67
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
68
/* 0x00 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
69
/* 0x10 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
70
/* 0x20 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
71
/* 0x30 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
72
/* 0x40 */ 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8,
73
/* 0x50 */ 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8,
74
/* 0x60 */ 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8,
75
/* 0x70 */ 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8,
76
/* 0x80 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
77
/* 0x90 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
78
/* 0xA0 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
79
/* 0xB0 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
80
/* 0xC0 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
81
/* 0xD0 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
82
/* 0xE0 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
83
/* 0xF0 */ 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8
84
};
85
86
const u8 kOPCodeEDTStates[256] =
87
{
88
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
89
/* 0x00 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
90
/* 0x10 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
91
/* 0x20 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
92
/* 0x30 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
93
/* 0x40 */ 12,12,15,20, 8,14, 8, 9,12,12,15,20, 8,14, 8, 9,
94
/* 0x50 */ 12,12,15,20, 8,14, 8, 9,12,12,15,20, 8,14, 8, 9,
95
/* 0x60 */ 12,12,15,20, 8,14, 8,18,12,12,15,20, 8,14, 8,18,
96
/* 0x70 */ 12,12,15,20, 8,14, 8, 8,12,12,15,20, 8,14, 8, 8,
97
/* 0x80 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
98
/* 0x90 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
99
/* 0xA0 */ 16,16,16,16, 8, 8, 8, 8,16,16,16,16, 8, 8, 8, 8,
100
/* 0xB0 */ 16,16,16,16, 8, 8, 8, 8,16,16,16,16, 8, 8, 8, 8,
101
/* 0xC0 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
102
/* 0xD0 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
103
/* 0xE0 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
104
/* 0xF0 */ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
105
};
106
107
const u8 kOPCodeXYTStates[256] =
108
{
109
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
110
/* 0x00 */ 4+4,10+4, 7+4, 6+4, 4+4, 4+4, 7+4, 4+4, 4+4,11+4, 7+4, 6+4, 4+4, 4+4, 7+4, 4+4,
111
/* 0x10 */ 8+4,10+4, 7+4, 6+4, 4+4, 4+4, 7+4, 4+4,12+4,11+4, 7+4, 6+4, 4+4, 4+4, 7+4, 4+4,
112
/* 0x20 */ 7+4,10+4,16+4, 6+4, 4+4, 4+4, 7+4, 4+4, 7+4,11+4,16+4, 6+4, 4+4, 4+4, 7+4, 4+4,
113
/* 0x30 */ 7+4,10+4,13+4, 6+4, 23 , 23 , 19 , 4+4, 7+4,11+4,13+4, 6+4, 4+4, 4+4, 7+4, 4+4,
114
/* 0x40 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
115
/* 0x50 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
116
/* 0x60 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
117
/* 0x70 */ 19 , 19 , 19 , 19 , 19 , 19 , 4+4, 19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
118
/* 0x80 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
119
/* 0x90 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
120
/* 0xA0 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
121
/* 0xB0 */ 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4, 4+4, 4+4, 4+4, 4+4, 4+4, 4+4,19 , 4+4,
122
/* 0xC0 */ 5+4,10+4,10+4,10+4,10+4,11+4, 7+4,11+4, 5+4,10+4,10+4, 0 ,10+4,17+4, 7+4,11+4,
123
/* 0xD0 */ 5+4,10+4,10+4,11+4,10+4,11+4, 7+4,11+4, 5+4, 4+4,10+4,11+4,10+4, 4 , 7+4,11+4,
124
/* 0xE0 */ 5+4,10+4,10+4,19+4,10+4,11+4, 7+4,11+4, 5+4, 4+4,10+4, 4+4,10+4, 4 , 7+4,11+4,
125
/* 0xF0 */ 5+4,10+4,10+4, 4+4,10+4,11+4, 7+4,11+4, 5+4, 6+4,10+4, 4+4,10+4, 4 , 7+4,11+4
126
};
127
128
const u8 kOPCodeXYCBTStates[256] =
129
{
130
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
131
/* 0x00 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
132
/* 0x10 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
133
/* 0x20 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
134
/* 0x30 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
135
/* 0x40 */ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
136
/* 0x50 */ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
137
/* 0x60 */ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
138
/* 0x70 */ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
139
/* 0x80 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
140
/* 0x90 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
141
/* 0xA0 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
142
/* 0xB0 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
143
/* 0xC0 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
144
/* 0xD0 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
145
/* 0xE0 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
146
/* 0xF0 */ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23
147
};
148
149
#endif /* OPCODE_TIMING_H */
150
151
152