yaze
0.3.2
Link to the Past ROM Editor
Loading...
Searching...
No Matches
spc700_cycles.h
Go to the documentation of this file.
1
#ifndef YAZE_APP_EMU_AUDIO_INTERNAL_SPC700_CYCLES_H
2
#define YAZE_APP_EMU_AUDIO_INTERNAL_SPC700_CYCLES_H
3
4
#include <cstdint>
5
6
namespace
yaze
{
7
namespace
emu {
8
9
// SPC700 opcode cycle counts
10
// Reference: https://problemkaputt.de/fullsnes.htm#snesapucpu
11
// Note: Some opcodes have variable cycles depending on page boundary crossing
12
// These are baseline cycles; actual cycles may be higher
13
constexpr
int
spc700_cycles
[256] = {
14
// 0x00-0x0F
15
2,
// 00 NOP
16
8,
// 01 TCALL 0
17
4,
// 02 SET1 dp, 0
18
5,
// 03 BBS dp, 0, rel
19
3,
// 04 OR A, dp
20
4,
// 05 OR A, abs
21
3,
// 06 OR A, (X)
22
6,
// 07 OR A, (dp+X)
23
2,
// 08 OR A, #imm
24
6,
// 09 OR dp, dp
25
5,
// 0A OR1 C, abs.bit
26
4,
// 0B ASL dp
27
5,
// 0C ASL abs
28
4,
// 0D PUSH PSW
29
6,
// 0E TSET1 abs
30
8,
// 0F BRK
31
32
// 0x10-0x1F
33
2,
// 10 BPL rel
34
8,
// 11 TCALL 1
35
4,
// 12 CLR1 dp, 0
36
5,
// 13 BBC dp, 0, rel
37
4,
// 14 OR A, dp+X
38
5,
// 15 OR A, abs+X
39
5,
// 16 OR A, abs+Y
40
6,
// 17 OR A, (dp)+Y
41
5,
// 18 OR dp, #imm
42
5,
// 19 OR (X), (Y)
43
5,
// 1A DECW dp
44
5,
// 1B ASL dp+X
45
2,
// 1C ASL A
46
2,
// 1D DEC X
47
4,
// 1E CMP X, abs
48
6,
// 1F JMP (abs+X)
49
50
// 0x20-0x2F
51
2,
// 20 CLRP
52
8,
// 21 TCALL 2
53
4,
// 22 SET1 dp, 1
54
5,
// 23 BBS dp, 1, rel
55
3,
// 24 AND A, dp
56
4,
// 25 AND A, abs
57
3,
// 26 AND A, (X)
58
6,
// 27 AND A, (dp+X)
59
2,
// 28 AND A, #imm
60
6,
// 29 AND dp, dp
61
5,
// 2A OR1 C, /abs.bit
62
4,
// 2B ROL dp
63
5,
// 2C ROL abs
64
4,
// 2D PUSH A
65
5,
// 2E CBNE dp, rel
66
4,
// 2F BRA rel
67
68
// 0x30-0x3F
69
2,
// 30 BMI rel
70
8,
// 31 TCALL 3
71
4,
// 32 CLR1 dp, 1
72
5,
// 33 BBC dp, 1, rel
73
4,
// 34 AND A, dp+X
74
5,
// 35 AND A, abs+X
75
5,
// 36 AND A, abs+Y
76
6,
// 37 AND A, (dp)+Y
77
5,
// 38 AND dp, #imm
78
5,
// 39 AND (X), (Y)
79
5,
// 3A INCW dp
80
5,
// 3B ROL dp+X
81
2,
// 3C ROL A
82
2,
// 3D INC X
83
3,
// 3E CMP X, dp
84
8,
// 3F CALL abs
85
86
// 0x40-0x4F
87
2,
// 40 SETP
88
8,
// 41 TCALL 4
89
4,
// 42 SET1 dp, 2
90
5,
// 43 BBS dp, 2, rel
91
3,
// 44 EOR A, dp
92
4,
// 45 EOR A, abs
93
3,
// 46 EOR A, (X)
94
6,
// 47 EOR A, (dp+X)
95
2,
// 48 EOR A, #imm
96
6,
// 49 EOR dp, dp
97
4,
// 4A AND1 C, abs.bit
98
4,
// 4B LSR dp
99
5,
// 4C LSR abs
100
4,
// 4D PUSH X
101
6,
// 4E TCLR1 abs
102
6,
// 4F PCALL dp
103
104
// 0x50-0x5F
105
2,
// 50 BVC rel
106
8,
// 51 TCALL 5
107
4,
// 52 CLR1 dp, 2
108
5,
// 53 BBC dp, 2, rel
109
4,
// 54 EOR A, dp+X
110
5,
// 55 EOR A, abs+X
111
5,
// 56 EOR A, abs+Y
112
6,
// 57 EOR A, (dp)+Y
113
5,
// 58 EOR dp, #imm
114
5,
// 59 EOR (X), (Y)
115
4,
// 5A CMPW YA, dp
116
5,
// 5B LSR dp+X
117
2,
// 5C LSR A
118
2,
// 5D MOV X, A
119
4,
// 5E CMP Y, abs
120
3,
// 5F JMP abs
121
122
// 0x60-0x6F
123
2,
// 60 CLRC
124
8,
// 61 TCALL 6
125
4,
// 62 SET1 dp, 3
126
5,
// 63 BBS dp, 3, rel
127
3,
// 64 CMP A, dp
128
4,
// 65 CMP A, abs
129
3,
// 66 CMP A, (X)
130
6,
// 67 CMP A, (dp+X)
131
2,
// 68 CMP A, #imm
132
6,
// 69 CMP dp, dp
133
4,
// 6A AND1 C, /abs.bit
134
4,
// 6B ROR dp
135
5,
// 6C ROR abs
136
4,
// 6D PUSH Y
137
5,
// 6E DBNZ dp, rel
138
5,
// 6F RET
139
140
// 0x70-0x7F
141
2,
// 70 BVS rel
142
8,
// 71 TCALL 7
143
4,
// 72 CLR1 dp, 3
144
5,
// 73 BBC dp, 3, rel
145
4,
// 74 CMP A, dp+X
146
5,
// 75 CMP A, abs+X
147
5,
// 76 CMP A, abs+Y
148
6,
// 77 CMP A, (dp)+Y
149
5,
// 78 CMP dp, #imm
150
5,
// 79 CMP (X), (Y)
151
5,
// 7A ADDW YA, dp
152
5,
// 7B ROR dp+X
153
2,
// 7C ROR A
154
2,
// 7D MOV A, X
155
3,
// 7E CMP Y, dp
156
6,
// 7F RETI
157
158
// 0x80-0x8F
159
2,
// 80 SETC
160
8,
// 81 TCALL 8
161
4,
// 82 SET1 dp, 4
162
5,
// 83 BBS dp, 4, rel
163
3,
// 84 ADC A, dp
164
4,
// 85 ADC A, abs
165
3,
// 86 ADC A, (X)
166
6,
// 87 ADC A, (dp+X)
167
2,
// 88 ADC A, #imm
168
6,
// 89 ADC dp, dp
169
5,
// 8A EOR1 C, abs.bit
170
4,
// 8B DEC dp
171
5,
// 8C DEC abs
172
2,
// 8D MOV Y, #imm
173
4,
// 8E POP PSW
174
5,
// 8F MOV dp, #imm
175
176
// 0x90-0x9F
177
2,
// 90 BCC rel
178
8,
// 91 TCALL 9
179
4,
// 92 CLR1 dp, 4
180
5,
// 93 BBC dp, 4, rel
181
4,
// 94 ADC A, dp+X
182
5,
// 95 ADC A, abs+X
183
5,
// 96 ADC A, abs+Y
184
6,
// 97 ADC A, (dp)+Y
185
5,
// 98 ADC dp, #imm
186
5,
// 99 ADC (X), (Y)
187
5,
// 9A SUBW YA, dp
188
5,
// 9B DEC dp+X
189
2,
// 9C DEC A
190
2,
// 9D MOV X, SP
191
12,
// 9E DIV YA, X
192
5,
// 9F XCN A
193
194
// 0xA0-0xAF
195
3,
// A0 EI
196
8,
// A1 TCALL 10
197
4,
// A2 SET1 dp, 5
198
5,
// A3 BBS dp, 5, rel
199
3,
// A4 SBC A, dp
200
4,
// A5 SBC A, abs
201
3,
// A6 SBC A, (X)
202
6,
// A7 SBC A, (dp+X)
203
2,
// A8 SBC A, #imm
204
6,
// A9 SBC dp, dp
205
4,
// AA MOV1 C, abs.bit
206
4,
// AB INC dp
207
5,
// AC INC abs
208
2,
// AD CMP Y, #imm
209
4,
// AE POP A
210
4,
// AF MOV (X)+, A
211
212
// 0xB0-0xBF
213
2,
// B0 BCS rel
214
8,
// B1 TCALL 11
215
4,
// B2 CLR1 dp, 5
216
5,
// B3 BBC dp, 5, rel
217
4,
// B4 SBC A, dp+X
218
5,
// B5 SBC A, abs+X
219
5,
// B6 SBC A, abs+Y
220
6,
// B7 SBC A, (dp)+Y
221
5,
// B8 SBC dp, #imm
222
5,
// B9 SBC (X), (Y)
223
5,
// BA MOVW YA, dp
224
5,
// BB INC dp+X
225
2,
// BC INC A
226
2,
// BD MOV SP, X
227
3,
// BE DAS A
228
4,
// BF MOV A, (X)+
229
230
// 0xC0-0xCF
231
3,
// C0 DI
232
8,
// C1 TCALL 12
233
4,
// C2 SET1 dp, 6
234
5,
// C3 BBS dp, 6, rel
235
3,
// C4 MOV dp, A
236
4,
// C5 MOV abs, A
237
3,
// C6 MOV (X), A
238
6,
// C7 MOV (dp+X), A
239
2,
// C8 CMP X, #imm
240
4,
// C9 MOV abs, X
241
6,
// CA MOV1 abs.bit, C
242
3,
// CB MOV dp, Y
243
4,
// CC MOV abs, Y
244
2,
// CD MOV X, #imm
245
4,
// CE POP X
246
9,
// CF MUL YA
247
248
// 0xD0-0xDF
249
2,
// D0 BNE rel
250
8,
// D1 TCALL 13
251
4,
// D2 CLR1 dp, 6
252
5,
// D3 BBC dp, 6, rel
253
4,
// D4 MOV dp+X, A
254
5,
// D5 MOV abs+X, A
255
5,
// D6 MOV abs+Y, A
256
6,
// D7 MOV (dp)+Y, A
257
3,
// D8 MOV dp, X
258
4,
// D9 MOV dp+Y, X
259
5,
// DA MOVW dp, YA
260
4,
// DB MOV dp+X, Y
261
2,
// DC DEC Y
262
2,
// DD MOV A, Y
263
6,
// DE CBNE dp+X, rel
264
3,
// DF DAA A
265
266
// 0xE0-0xEF
267
2,
// E0 CLRV
268
8,
// E1 TCALL 14
269
4,
// E2 SET1 dp, 7
270
5,
// E3 BBS dp, 7, rel
271
3,
// E4 MOV A, dp
272
4,
// E5 MOV A, abs
273
3,
// E6 MOV A, (X)
274
6,
// E7 MOV A, (dp+X)
275
2,
// E8 MOV A, #imm
276
4,
// E9 MOV X, abs
277
5,
// EA NOT1 abs.bit
278
3,
// EB MOV Y, dp
279
4,
// EC MOV Y, abs
280
3,
// ED NOTC
281
4,
// EE POP Y
282
3,
// EF SLEEP
283
284
// 0xF0-0xFF
285
2,
// F0 BEQ rel
286
8,
// F1 TCALL 15
287
4,
// F2 CLR1 dp, 7
288
5,
// F3 BBC dp, 7, rel
289
4,
// F4 MOV A, dp+X
290
5,
// F5 MOV A, abs+X
291
5,
// F6 MOV A, abs+Y
292
6,
// F7 MOV A, (dp)+Y
293
3,
// F8 MOV X, dp
294
4,
// F9 MOV X, dp+Y
295
6,
// FA MOV dp, dp
296
4,
// FB MOV Y, dp+X
297
2,
// FC INC Y
298
2,
// FD MOV Y, A
299
4,
// FE DBNZ Y, rel
300
3
// FF STOP
301
};
302
303
}
// namespace emu
304
}
// namespace yaze
305
306
#endif
// YAZE_APP_EMU_AUDIO_INTERNAL_SPC700_CYCLES_H
307
yaze::emu::spc700_cycles
constexpr int spc700_cycles[256]
Definition
spc700_cycles.h:13
yaze
Main namespace for the application.
Definition
asar_wrapper.cc:14
src
app
emu
audio
internal
spc700_cycles.h
Generated by
1.9.8