rnes 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,30 @@
1
+ module Rnes
2
+ class InterruptLine
3
+ # @return [Boolean]
4
+ attr_reader :irq
5
+
6
+ # @return [Boolean]
7
+ attr_reader :nmi
8
+
9
+ def initialize
10
+ @irq = false
11
+ @nmi = false
12
+ end
13
+
14
+ def assert_irq
15
+ @irq = true
16
+ end
17
+
18
+ def assert_nmi
19
+ @nmi = true
20
+ end
21
+
22
+ def deassert_irq
23
+ @irq = false
24
+ end
25
+
26
+ def deassert_nmi
27
+ @nmi = false
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,51 @@
1
+ module Rnes
2
+ class Keypad
3
+ KEY_MAP = {
4
+ '.' => 0,
5
+ ',' => 1,
6
+ 'n' => 2,
7
+ 'm' => 3,
8
+ 'w' => 4,
9
+ 's' => 5,
10
+ 'a' => 6,
11
+ 'd' => 7,
12
+ }.freeze
13
+
14
+ def initialize
15
+ @buffer = 0
16
+ @copy = 0
17
+ @index = 0
18
+ end
19
+
20
+ def check
21
+ character = ::STDIN.read_nonblock(1)
22
+ index = KEY_MAP[character]
23
+ if index
24
+ @buffer |= 1 << index
25
+ end
26
+ rescue ::EOFError
27
+ # Rescue on no STDIN environment (e.g. CircleCI).
28
+ rescue ::IO::WaitReadable
29
+ # Rescue on no data in STDIN buffer.
30
+ end
31
+
32
+ # @return [Integer]
33
+ def read
34
+ value = @copy[@index]
35
+ @index = (@index + 1) % 0x10
36
+ value
37
+ end
38
+
39
+ # @param [Integer] value
40
+ def write(value)
41
+ if value[0] == 1
42
+ @set = true
43
+ elsif @set
44
+ @set = false
45
+ @copy = @buffer
46
+ @buffer = 0
47
+ @index = 0
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,142 @@
1
+ require 'rnes/operation/records'
2
+
3
+ module Rnes
4
+ class Logger
5
+ # @param [Rnes::Cpu] cpu
6
+ # @param [String] path
7
+ # @param [Rnes::Ppu] ppu
8
+ def initialize(cpu:, path:, ppu:)
9
+ @cpu = cpu
10
+ @path = path
11
+ @ppu = ppu
12
+ end
13
+
14
+ def puts
15
+ file.puts(line)
16
+ end
17
+
18
+ private
19
+
20
+ # @return [File]
21
+ def file
22
+ @file ||= ::File.open(@path, 'w')
23
+ end
24
+
25
+ # @return [String]
26
+ def line
27
+ [
28
+ segment_cpu_program_counter,
29
+ '',
30
+ segment_operation_code,
31
+ segment_operand,
32
+ segment_operation_full_name,
33
+ segment_operand_humanized,
34
+ '',
35
+ segment_cpu_accumulator,
36
+ segment_cpu_index_x,
37
+ segment_cpu_index_y,
38
+ segment_cpu_status,
39
+ segment_ppu_control1,
40
+ segment_ppu_control2,
41
+ segment_cpu_stack_pointer,
42
+ segment_cycle,
43
+ segment_ppu_line,
44
+ ].join(' ')
45
+ end
46
+
47
+ # @return [String]
48
+ def segment_cpu_accumulator
49
+ format('A:%02X', @cpu.registers.accumulator)
50
+ end
51
+
52
+ # @return [String]
53
+ def segment_cpu_index_x
54
+ format('X:%02X', @cpu.registers.index_x)
55
+ end
56
+
57
+ # @return [String]
58
+ def segment_cpu_index_y
59
+ format('Y:%02X', @cpu.registers.index_y)
60
+ end
61
+
62
+ # @return [String]
63
+ def segment_cpu_program_counter
64
+ format('%04X', @cpu.registers.program_counter)
65
+ end
66
+
67
+ # @return [String]
68
+ def segment_cpu_stack_pointer
69
+ format('SP:%02X', @cpu.registers.stack_pointer - 0x100)
70
+ end
71
+
72
+ # @return [String]
73
+ def segment_cpu_status
74
+ format('P:%08b', @cpu.registers.status)
75
+ end
76
+
77
+ # @return [String]
78
+ def segment_cycle
79
+ format('CYC:%03d', @ppu.cycle)
80
+ end
81
+
82
+ # @return [String]
83
+ def segment_operand
84
+ program_counter = @cpu.registers.program_counter
85
+ operation = @cpu.read_operation
86
+ case operation.addressing_mode
87
+ when :absolute, :absolute_x, :absolute_y, :indirect_absolute, :pre_indexed_absolute, :post_indexed_absolute
88
+ format('%02X %02X', @cpu.bus.read(program_counter + 1), @cpu.bus.read(program_counter + 2))
89
+ when :immediate, :relative, :zero_page, :zero_page_x, :zero_page_y
90
+ format('%02X ', @cpu.bus.read(program_counter + 1))
91
+ else
92
+ ' ' * 5
93
+ end
94
+ end
95
+
96
+ # @return [String]
97
+ def segment_operand_humanized
98
+ operation = @cpu.read_operation
99
+ program_counter = @cpu.registers.program_counter
100
+ string = begin
101
+ case operation.addressing_mode
102
+ when :absolute, :absolute_x, :absolute_y, :indirect_absolute, :pre_indexed_absolute, :post_indexed_absolute
103
+ format('$%02X%02X', @cpu.bus.read(program_counter + 2), @cpu.bus.read(program_counter + 1))
104
+ when :immediate, :relative, :zero_page, :zero_page_x, :zero_oage_y
105
+ format('#$%02X', @cpu.bus.read(program_counter + 1))
106
+ else
107
+ ''
108
+ end
109
+ end
110
+ format('%-5s', string)
111
+ end
112
+
113
+ # @return [String]
114
+ def segment_operation_code
115
+ operation = @cpu.read_operation
116
+ operation_code = ::Rnes::Operation::RECORDS.find_index(operation.to_hash)
117
+ format('%02X', operation_code)
118
+ end
119
+
120
+ # @return [String]
121
+ def segment_operation_full_name
122
+ operation = @cpu.read_operation
123
+ format('%-10s', operation.full_name)
124
+ end
125
+
126
+ # @return [String]
127
+ def segment_ppu_control1
128
+ format('CTRL1:%08b', @ppu.registers.control1)
129
+ end
130
+
131
+ # @return [String]
132
+ def segment_ppu_control2
133
+ format('CTRL2:%08b', @ppu.registers.control2)
134
+ end
135
+
136
+ # @note SL means "Scan Line".
137
+ # @return [String]
138
+ def segment_ppu_line
139
+ format('SL:%03d', @ppu.line)
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,52 @@
1
+ require 'rnes/errors'
2
+ require 'rnes/operation/records'
3
+
4
+ module Rnes
5
+ class Operation
6
+ class << self
7
+ # @param [Integer] operation_code
8
+ # @return [Rnes::Operation]
9
+ def build(operation_code)
10
+ record = ::Rnes::Operation::RECORDS[operation_code]
11
+ if record
12
+ new(record)
13
+ else
14
+ raise ::Rnes::InvalidOperationCodeError, "Invalid operation code: #{operation_code}"
15
+ end
16
+ end
17
+ end
18
+
19
+ # @return [Symbol]
20
+ attr_reader :addressing_mode
21
+
22
+ # @return [Integer]
23
+ attr_reader :cycle
24
+
25
+ # @return [Symbol]
26
+ attr_reader :full_name
27
+
28
+ # @return [Symbol]
29
+ attr_reader :name
30
+
31
+ # @param [Symbol] addressing_mode
32
+ # @param [Integer] cycle
33
+ # @param [Symbol] full_name
34
+ # @param [Symbol] name
35
+ def initialize(addressing_mode:, cycle:, full_name:, name:)
36
+ @addressing_mode = addressing_mode
37
+ @cycle = cycle
38
+ @full_name = full_name
39
+ @name = name
40
+ end
41
+
42
+ # @return [Hash]
43
+ def to_hash
44
+ {
45
+ addressing_mode: addressing_mode,
46
+ cycle: cycle,
47
+ full_name: full_name,
48
+ name: name,
49
+ }
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,1477 @@
1
+ module Rnes
2
+ class Operation
3
+ RECORDS = [
4
+ {
5
+ full_name: :BRK,
6
+ name: :BRK,
7
+ addressing_mode: :implied,
8
+ cycle: 7,
9
+ },
10
+ {
11
+ full_name: :ORA_INDX,
12
+ name: :ORA,
13
+ addressing_mode: :pre_indexed_indirect,
14
+ cycle: 6,
15
+ },
16
+ {
17
+ full_name: :NOP,
18
+ name: :NOP,
19
+ addressing_mode: :implied,
20
+ cycle: 2,
21
+ },
22
+ {
23
+ full_name: :SLO_INDX,
24
+ name: :SLO,
25
+ addressing_mode: :pre_indexed_indirect,
26
+ cycle: 8,
27
+ },
28
+ {
29
+ full_name: :NOPD,
30
+ name: :NOPD,
31
+ addressing_mode: :implied,
32
+ cycle: 3,
33
+ },
34
+ {
35
+ full_name: :ORA_ZERO,
36
+ name: :ORA,
37
+ addressing_mode: :zero_page,
38
+ cycle: 3,
39
+ },
40
+ {
41
+ full_name: :ASL_ZERO,
42
+ name: :ASL,
43
+ addressing_mode: :zero_page,
44
+ cycle: 5,
45
+ },
46
+ {
47
+ full_name: :SLO_ZERO,
48
+ name: :SLO,
49
+ addressing_mode: :zero_page,
50
+ cycle: 5,
51
+ },
52
+ {
53
+ full_name: :PHP,
54
+ name: :PHP,
55
+ addressing_mode: :implied,
56
+ cycle: 3,
57
+ },
58
+ {
59
+ full_name: :ORA_IMM,
60
+ name: :ORA,
61
+ addressing_mode: :immediate,
62
+ cycle: 2,
63
+ },
64
+ {
65
+ full_name: :ASL,
66
+ name: :ASL,
67
+ addressing_mode: :accumulator,
68
+ cycle: 2,
69
+ },
70
+ {},
71
+ {
72
+ full_name: :NOPI,
73
+ name: :NOPI,
74
+ addressing_mode: :implied,
75
+ cycle: 4,
76
+ },
77
+ {
78
+ full_name: :ORA_ABS,
79
+ name: :ORA,
80
+ addressing_mode: :absolute,
81
+ cycle: 4,
82
+ },
83
+ {
84
+ full_name: :ASL_ABS,
85
+ name: :ASL,
86
+ addressing_mode: :absolute,
87
+ cycle: 6,
88
+ },
89
+ {
90
+ full_name: :SLO_ABS,
91
+ name: :SLO,
92
+ addressing_mode: :absolute,
93
+ cycle: 6,
94
+ },
95
+ {
96
+ full_name: :BPL,
97
+ name: :BPL,
98
+ addressing_mode: :relative,
99
+ cycle: 2,
100
+ },
101
+ {
102
+ full_name: :ORA_INDY,
103
+ name: :ORA,
104
+ addressing_mode: :post_indexed_indirect,
105
+ cycle: 5,
106
+ },
107
+ {
108
+ full_name: :NOP,
109
+ name: :NOP,
110
+ addressing_mode: :implied,
111
+ cycle: 2,
112
+ },
113
+ {
114
+ full_name: :SLO_INDY,
115
+ name: :SLO,
116
+ addressing_mode: :post_indexed_indirect,
117
+ cycle: 8,
118
+ },
119
+ {
120
+ full_name: :NOPD,
121
+ name: :NOPD,
122
+ addressing_mode: :implied,
123
+ cycle: 4,
124
+ },
125
+ {
126
+ full_name: :ORA_ZEROX,
127
+ name: :ORA,
128
+ addressing_mode: :zero_page_x,
129
+ cycle: 4,
130
+ },
131
+ {
132
+ full_name: :ASL_ZEROX,
133
+ name: :ASL,
134
+ addressing_mode: :zero_page_x,
135
+ cycle: 6,
136
+ },
137
+ {
138
+ full_name: :SLO_ZEROX,
139
+ name: :SLO,
140
+ addressing_mode: :zero_page_x,
141
+ cycle: 6,
142
+ },
143
+ {
144
+ full_name: :CLC,
145
+ name: :CLC,
146
+ addressing_mode: :implied,
147
+ cycle: 2,
148
+ },
149
+ {
150
+ full_name: :ORA_ABSY,
151
+ name: :ORA,
152
+ addressing_mode: :absolute_y,
153
+ cycle: 4,
154
+ },
155
+ {
156
+ full_name: :NOP,
157
+ name: :NOP,
158
+ addressing_mode: :implied,
159
+ cycle: 2,
160
+ },
161
+ {
162
+ full_name: :SLO_ABSY,
163
+ name: :SLO,
164
+ addressing_mode: :absolute_y,
165
+ cycle: 7,
166
+ },
167
+ {
168
+ full_name: :NOPI,
169
+ name: :NOPI,
170
+ addressing_mode: :implied,
171
+ cycle: 4,
172
+ },
173
+ {
174
+ full_name: :ORA_ABSX,
175
+ name: :ORA,
176
+ addressing_mode: :absolute_x,
177
+ cycle: 4,
178
+ },
179
+ {
180
+ full_name: :ASL_ABSX,
181
+ name: :ASL,
182
+ addressing_mode: :absolute_x,
183
+ cycle: 6,
184
+ },
185
+ {
186
+ full_name: :SLO_ABSX,
187
+ name: :SLO,
188
+ addressing_mode: :absolute_x,
189
+ cycle: 7,
190
+ },
191
+ {
192
+ full_name: :JSR_ABS,
193
+ name: :JSR,
194
+ addressing_mode: :absolute,
195
+ cycle: 6,
196
+ },
197
+ {
198
+ full_name: :AND_INDX,
199
+ name: :AND,
200
+ addressing_mode: :pre_indexed_indirect,
201
+ cycle: 6,
202
+ },
203
+ {
204
+ full_name: :NOP,
205
+ name: :NOP,
206
+ addressing_mode: :implied,
207
+ cycle: 2,
208
+ },
209
+ {
210
+ full_name: :RLA_INDX,
211
+ name: :RLA,
212
+ addressing_mode: :pre_indexed_indirect,
213
+ cycle: 8,
214
+ },
215
+ {
216
+ full_name: :BIT_ZERO,
217
+ name: :BIT,
218
+ addressing_mode: :zero_page,
219
+ cycle: 3,
220
+ },
221
+ {
222
+ full_name: :AND_ZERO,
223
+ name: :AND,
224
+ addressing_mode: :zero_page,
225
+ cycle: 3,
226
+ },
227
+ {
228
+ full_name: :ROL_ZERO,
229
+ name: :ROL,
230
+ addressing_mode: :zero_page,
231
+ cycle: 5,
232
+ },
233
+ {
234
+ full_name: :RLA_ZERO,
235
+ name: :RLA,
236
+ addressing_mode: :zero_page,
237
+ cycle: 5,
238
+ },
239
+ {
240
+ full_name: :PLP,
241
+ name: :PLP,
242
+ addressing_mode: :implied,
243
+ cycle: 4,
244
+ },
245
+ {
246
+ full_name: :AND_IMM,
247
+ name: :AND,
248
+ addressing_mode: :immediate,
249
+ cycle: 2,
250
+ },
251
+ {
252
+ full_name: :ROL,
253
+ name: :ROL,
254
+ addressing_mode: :accumulator,
255
+ cycle: 2,
256
+ },
257
+ {},
258
+ {
259
+ full_name: :BIT_ABS,
260
+ name: :BIT,
261
+ addressing_mode: :absolute,
262
+ cycle: 4,
263
+ },
264
+ {
265
+ full_name: :AND_ABS,
266
+ name: :AND,
267
+ addressing_mode: :absolute,
268
+ cycle: 4,
269
+ },
270
+ {
271
+ full_name: :ROL_ABS,
272
+ name: :ROL,
273
+ addressing_mode: :absolute,
274
+ cycle: 6,
275
+ },
276
+ {
277
+ full_name: :RLA_ABS,
278
+ name: :RLA,
279
+ addressing_mode: :absolute,
280
+ cycle: 6,
281
+ },
282
+ {
283
+ full_name: :BMI,
284
+ name: :BMI,
285
+ addressing_mode: :relative,
286
+ cycle: 2,
287
+ },
288
+ {
289
+ full_name: :AND_INDY,
290
+ name: :AND,
291
+ addressing_mode: :post_indexed_indirect,
292
+ cycle: 5,
293
+ },
294
+ {
295
+ full_name: :NOP,
296
+ name: :NOP,
297
+ addressing_mode: :implied,
298
+ cycle: 2,
299
+ },
300
+ {
301
+ full_name: :RLA_INDY,
302
+ name: :RLA,
303
+ addressing_mode: :post_indexed_indirect,
304
+ cycle: 8,
305
+ },
306
+ {
307
+ full_name: :NOPD,
308
+ name: :NOPD,
309
+ addressing_mode: :implied,
310
+ cycle: 4,
311
+ },
312
+ {
313
+ full_name: :AND_ZEROX,
314
+ name: :AND,
315
+ addressing_mode: :zero_page_x,
316
+ cycle: 4,
317
+ },
318
+ {
319
+ full_name: :ROL_ZEROX,
320
+ name: :ROL,
321
+ addressing_mode: :zero_page_x,
322
+ cycle: 6,
323
+ },
324
+ {
325
+ full_name: :RLA_ZEROX,
326
+ name: :RLA,
327
+ addressing_mode: :zero_page_x,
328
+ cycle: 6,
329
+ },
330
+ {
331
+ full_name: :SEC,
332
+ name: :SEC,
333
+ addressing_mode: :implied,
334
+ cycle: 2,
335
+ },
336
+ {
337
+ full_name: :AND_ABSY,
338
+ name: :AND,
339
+ addressing_mode: :absolute_y,
340
+ cycle: 4,
341
+ },
342
+ {
343
+ full_name: :NOP,
344
+ name: :NOP,
345
+ addressing_mode: :implied,
346
+ cycle: 2,
347
+ },
348
+ {
349
+ full_name: :RLA_ABSY,
350
+ name: :RLA,
351
+ addressing_mode: :absolute_y,
352
+ cycle: 7,
353
+ },
354
+ {
355
+ full_name: :NOPI,
356
+ name: :NOPI,
357
+ addressing_mode: :implied,
358
+ cycle: 4,
359
+ },
360
+ {
361
+ full_name: :AND_ABSX,
362
+ name: :AND,
363
+ addressing_mode: :absolute_x,
364
+ cycle: 4,
365
+ },
366
+ {
367
+ full_name: :ROL_ABSX,
368
+ name: :ROL,
369
+ addressing_mode: :absolute_x,
370
+ cycle: 6,
371
+ },
372
+ {
373
+ full_name: :RLA_ABSX,
374
+ name: :RLA,
375
+ addressing_mode: :absolute_x,
376
+ cycle: 7,
377
+ },
378
+ {
379
+ full_name: :RTI,
380
+ name: :RTI,
381
+ addressing_mode: :implied,
382
+ cycle: 6,
383
+ },
384
+ {
385
+ full_name: :EOR_INDX,
386
+ name: :EOR,
387
+ addressing_mode: :pre_indexed_indirect,
388
+ cycle: 6,
389
+ },
390
+ {
391
+ full_name: :NOP,
392
+ name: :NOP,
393
+ addressing_mode: :implied,
394
+ cycle: 2,
395
+ },
396
+ {
397
+ full_name: :SRE_INDX,
398
+ name: :SRE,
399
+ addressing_mode: :pre_indexed_indirect,
400
+ cycle: 8,
401
+ },
402
+ {
403
+ full_name: :NOPD,
404
+ name: :NOPD,
405
+ addressing_mode: :implied,
406
+ cycle: 3,
407
+ },
408
+ {
409
+ full_name: :EOR_ZERO,
410
+ name: :EOR,
411
+ addressing_mode: :zero_page,
412
+ cycle: 3,
413
+ },
414
+ {
415
+ full_name: :LSR_ZERO,
416
+ name: :LSR,
417
+ addressing_mode: :zero_page,
418
+ cycle: 5,
419
+ },
420
+ {
421
+ full_name: :SRE_ZERO,
422
+ name: :SRE,
423
+ addressing_mode: :zero_page,
424
+ cycle: 5,
425
+ },
426
+ {
427
+ full_name: :PHA,
428
+ name: :PHA,
429
+ addressing_mode: :implied,
430
+ cycle: 3,
431
+ },
432
+ {
433
+ full_name: :EOR_IMM,
434
+ name: :EOR,
435
+ addressing_mode: :immediate,
436
+ cycle: 2,
437
+ },
438
+ {
439
+ full_name: :LSR,
440
+ name: :LSR,
441
+ addressing_mode: :accumulator,
442
+ cycle: 2,
443
+ },
444
+ {},
445
+ {
446
+ full_name: :JMP_ABS,
447
+ name: :JMP,
448
+ addressing_mode: :absolute,
449
+ cycle: 3,
450
+ },
451
+ {
452
+ full_name: :EOR_ABS,
453
+ name: :EOR,
454
+ addressing_mode: :absolute,
455
+ cycle: 4,
456
+ },
457
+ {
458
+ full_name: :LSR_ABS,
459
+ name: :LSR,
460
+ addressing_mode: :absolute,
461
+ cycle: 6,
462
+ },
463
+ {
464
+ full_name: :SRE_ABS,
465
+ name: :SRE,
466
+ addressing_mode: :absolute,
467
+ cycle: 6,
468
+ },
469
+ {
470
+ full_name: :BVC,
471
+ name: :BVC,
472
+ addressing_mode: :relative,
473
+ cycle: 2,
474
+ },
475
+ {
476
+ full_name: :EOR_INDY,
477
+ name: :EOR,
478
+ addressing_mode: :post_indexed_indirect,
479
+ cycle: 5,
480
+ },
481
+ {
482
+ full_name: :NOP,
483
+ name: :NOP,
484
+ addressing_mode: :implied,
485
+ cycle: 2,
486
+ },
487
+ {
488
+ full_name: :SRE_INDY,
489
+ name: :SRE,
490
+ addressing_mode: :post_indexed_indirect,
491
+ cycle: 8,
492
+ },
493
+ {
494
+ full_name: :NOPD,
495
+ name: :NOPD,
496
+ addressing_mode: :implied,
497
+ cycle: 4,
498
+ },
499
+ {
500
+ full_name: :EOR_ZEROX,
501
+ name: :EOR,
502
+ addressing_mode: :zero_page_x,
503
+ cycle: 4,
504
+ },
505
+ {
506
+ full_name: :LSR_ZEROX,
507
+ name: :LSR,
508
+ addressing_mode: :zero_page_x,
509
+ cycle: 6,
510
+ },
511
+ {
512
+ full_name: :SRE_ZEROX,
513
+ name: :SRE,
514
+ addressing_mode: :zero_page_x,
515
+ cycle: 6,
516
+ },
517
+ {
518
+ full_name: :CLI,
519
+ name: :CLI,
520
+ addressing_mode: :implied,
521
+ cycle: 2,
522
+ },
523
+ {
524
+ full_name: :EOR_ABSY,
525
+ name: :EOR,
526
+ addressing_mode: :absolute_y,
527
+ cycle: 4,
528
+ },
529
+ {
530
+ full_name: :NOP,
531
+ name: :NOP,
532
+ addressing_mode: :implied,
533
+ cycle: 2,
534
+ },
535
+ {
536
+ full_name: :SRE_ABSY,
537
+ name: :SRE,
538
+ addressing_mode: :absolute_y,
539
+ cycle: 7,
540
+ },
541
+ {
542
+ full_name: :NOPI,
543
+ name: :NOPI,
544
+ addressing_mode: :implied,
545
+ cycle: 4,
546
+ },
547
+ {
548
+ full_name: :EOR_ABSX,
549
+ name: :EOR,
550
+ addressing_mode: :absolute_x,
551
+ cycle: 4,
552
+ },
553
+ {
554
+ full_name: :LSR_ABSX,
555
+ name: :LSR,
556
+ addressing_mode: :absolute_x,
557
+ cycle: 6,
558
+ },
559
+ {
560
+ full_name: :SRE_ABSX,
561
+ name: :SRE,
562
+ addressing_mode: :absolute_x,
563
+ cycle: 7,
564
+ },
565
+ {
566
+ full_name: :RTS,
567
+ name: :RTS,
568
+ addressing_mode: :implied,
569
+ cycle: 6,
570
+ },
571
+ {
572
+ full_name: :ADC_INDX,
573
+ name: :ADC,
574
+ addressing_mode: :pre_indexed_indirect,
575
+ cycle: 6,
576
+ },
577
+ {
578
+ full_name: :NOP,
579
+ name: :NOP,
580
+ addressing_mode: :implied,
581
+ cycle: 2,
582
+ },
583
+ {
584
+ full_name: :RRA_INDX,
585
+ name: :RRA,
586
+ addressing_mode: :pre_indexed_indirect,
587
+ cycle: 8,
588
+ },
589
+ {
590
+ full_name: :NOPD,
591
+ name: :NOPD,
592
+ addressing_mode: :implied,
593
+ cycle: 3,
594
+ },
595
+ {
596
+ full_name: :ADC_ZERO,
597
+ name: :ADC,
598
+ addressing_mode: :zero_page,
599
+ cycle: 3,
600
+ },
601
+ {
602
+ full_name: :ROR_ZERO,
603
+ name: :ROR,
604
+ addressing_mode: :zero_page,
605
+ cycle: 5,
606
+ },
607
+ {
608
+ full_name: :RRA_ZERO,
609
+ name: :RRA,
610
+ addressing_mode: :zero_page,
611
+ cycle: 5,
612
+ },
613
+ {
614
+ full_name: :PLA,
615
+ name: :PLA,
616
+ addressing_mode: :implied,
617
+ cycle: 4,
618
+ },
619
+ {
620
+ full_name: :ADC_IMM,
621
+ name: :ADC,
622
+ addressing_mode: :immediate,
623
+ cycle: 2,
624
+ },
625
+ {
626
+ full_name: :ROR,
627
+ name: :ROR,
628
+ addressing_mode: :accumulator,
629
+ cycle: 2,
630
+ },
631
+ {},
632
+ {
633
+ full_name: :JMP_INDABS,
634
+ name: :JMP,
635
+ addressing_mode: :indirect_absolute,
636
+ cycle: 5,
637
+ },
638
+ {
639
+ full_name: :ADC_ABS,
640
+ name: :ADC,
641
+ addressing_mode: :absolute,
642
+ cycle: 4,
643
+ },
644
+ {
645
+ full_name: :ROR_ABS,
646
+ name: :ROR,
647
+ addressing_mode: :absolute,
648
+ cycle: 6,
649
+ },
650
+ {
651
+ full_name: :RRA_ABS,
652
+ name: :RRA,
653
+ addressing_mode: :absolute,
654
+ cycle: 6,
655
+ },
656
+ {
657
+ full_name: :BVS,
658
+ name: :BVS,
659
+ addressing_mode: :relative,
660
+ cycle: 2,
661
+ },
662
+ {
663
+ full_name: :ADC_INDY,
664
+ name: :ADC,
665
+ addressing_mode: :post_indexed_indirect,
666
+ cycle: 5,
667
+ },
668
+ {
669
+ full_name: :NOP,
670
+ name: :NOP,
671
+ addressing_mode: :implied,
672
+ cycle: 2,
673
+ },
674
+ {
675
+ full_name: :RRA_INDY,
676
+ name: :RRA,
677
+ addressing_mode: :post_indexed_indirect,
678
+ cycle: 8,
679
+ },
680
+ {
681
+ full_name: :NOPD,
682
+ name: :NOPD,
683
+ addressing_mode: :implied,
684
+ cycle: 4,
685
+ },
686
+ {
687
+ full_name: :ADC_ZEROX,
688
+ name: :ADC,
689
+ addressing_mode: :zero_page_x,
690
+ cycle: 4,
691
+ },
692
+ {
693
+ full_name: :ROR_ZEROX,
694
+ name: :ROR,
695
+ addressing_mode: :zero_page_x,
696
+ cycle: 6,
697
+ },
698
+ {
699
+ full_name: :RRA_ZEROX,
700
+ name: :RRA,
701
+ addressing_mode: :zero_page_x,
702
+ cycle: 6,
703
+ },
704
+ {
705
+ full_name: :SEI,
706
+ name: :SEI,
707
+ addressing_mode: :implied,
708
+ cycle: 2,
709
+ },
710
+ {
711
+ full_name: :ADC_ABSY,
712
+ name: :ADC,
713
+ addressing_mode: :absolute_y,
714
+ cycle: 4,
715
+ },
716
+ {
717
+ full_name: :NOP,
718
+ name: :NOP,
719
+ addressing_mode: :implied,
720
+ cycle: 2,
721
+ },
722
+ {
723
+ full_name: :RRA_ABSY,
724
+ name: :RRA,
725
+ addressing_mode: :absolute_y,
726
+ cycle: 7,
727
+ },
728
+ {
729
+ full_name: :NOPI,
730
+ name: :NOPI,
731
+ addressing_mode: :implied,
732
+ cycle: 4,
733
+ },
734
+ {
735
+ full_name: :ADC_ABSX,
736
+ name: :ADC,
737
+ addressing_mode: :absolute_x,
738
+ cycle: 4,
739
+ },
740
+ {
741
+ full_name: :ROR_ABSX,
742
+ name: :ROR,
743
+ addressing_mode: :absolute_x,
744
+ cycle: 6,
745
+ },
746
+ {
747
+ full_name: :RRA_ABSX,
748
+ name: :RRA,
749
+ addressing_mode: :absolute_x,
750
+ cycle: 7,
751
+ },
752
+ {
753
+ full_name: :NOPD,
754
+ name: :NOPD,
755
+ addressing_mode: :implied,
756
+ cycle: 2,
757
+ },
758
+ {
759
+ full_name: :STA_INDX,
760
+ name: :STA,
761
+ addressing_mode: :pre_indexed_indirect,
762
+ cycle: 6,
763
+ },
764
+ {
765
+ full_name: :NOPD,
766
+ name: :NOPD,
767
+ addressing_mode: :implied,
768
+ cycle: 2,
769
+ },
770
+ {
771
+ full_name: :SAX_INDX,
772
+ name: :SAX,
773
+ addressing_mode: :pre_indexed_indirect,
774
+ cycle: 6,
775
+ },
776
+ {
777
+ full_name: :STY_ZERO,
778
+ name: :STY,
779
+ addressing_mode: :zero_page,
780
+ cycle: 3,
781
+ },
782
+ {
783
+ full_name: :STA_ZERO,
784
+ name: :STA,
785
+ addressing_mode: :zero_page,
786
+ cycle: 3,
787
+ },
788
+ {
789
+ full_name: :STX_ZERO,
790
+ name: :STX,
791
+ addressing_mode: :zero_page,
792
+ cycle: 3,
793
+ },
794
+ {
795
+ full_name: :SAX_ZERO,
796
+ name: :SAX,
797
+ addressing_mode: :zero_page,
798
+ cycle: 3,
799
+ },
800
+ {
801
+ full_name: :DEY,
802
+ name: :DEY,
803
+ addressing_mode: :implied,
804
+ cycle: 2,
805
+ },
806
+ {
807
+ full_name: :NOPD,
808
+ name: :NOPD,
809
+ addressing_mode: :implied,
810
+ cycle: 2,
811
+ },
812
+ {
813
+ full_name: :TXA,
814
+ name: :TXA,
815
+ addressing_mode: :implied,
816
+ cycle: 2,
817
+ },
818
+ {},
819
+ {
820
+ full_name: :STY_ABS,
821
+ name: :STY,
822
+ addressing_mode: :absolute,
823
+ cycle: 4,
824
+ },
825
+ {
826
+ full_name: :STA_ABS,
827
+ name: :STA,
828
+ addressing_mode: :absolute,
829
+ cycle: 4,
830
+ },
831
+ {
832
+ full_name: :STX_ABS,
833
+ name: :STX,
834
+ addressing_mode: :absolute,
835
+ cycle: 4,
836
+ },
837
+ {
838
+ full_name: :SAX_ABS,
839
+ name: :SAX,
840
+ addressing_mode: :absolute,
841
+ cycle: 4,
842
+ },
843
+ {
844
+ full_name: :BCC,
845
+ name: :BCC,
846
+ addressing_mode: :relative,
847
+ cycle: 2,
848
+ },
849
+ {
850
+ full_name: :STA_INDY,
851
+ name: :STA,
852
+ addressing_mode: :post_indexed_indirect,
853
+ cycle: 6,
854
+ },
855
+ {
856
+ full_name: :NOP,
857
+ name: :NOP,
858
+ addressing_mode: :implied,
859
+ cycle: 2,
860
+ },
861
+ {},
862
+ {
863
+ full_name: :STY_ZEROX,
864
+ name: :STY,
865
+ addressing_mode: :zero_page_x,
866
+ cycle: 4,
867
+ },
868
+ {
869
+ full_name: :STA_ZEROX,
870
+ name: :STA,
871
+ addressing_mode: :zero_page_x,
872
+ cycle: 4,
873
+ },
874
+ {
875
+ full_name: :STX_ZEROY,
876
+ name: :STX,
877
+ addressing_mode: :zero_page_y,
878
+ cycle: 4,
879
+ },
880
+ {
881
+ full_name: :SAX_ZEROY,
882
+ name: :SAX,
883
+ addressing_mode: :zero_page_y,
884
+ cycle: 4,
885
+ },
886
+ {
887
+ full_name: :TYA,
888
+ name: :TYA,
889
+ addressing_mode: :implied,
890
+ cycle: 2,
891
+ },
892
+ {
893
+ full_name: :STA_ABSY,
894
+ name: :STA,
895
+ addressing_mode: :absolute_y,
896
+ cycle: 4,
897
+ },
898
+ {
899
+ full_name: :TXS,
900
+ name: :TXS,
901
+ addressing_mode: :implied,
902
+ cycle: 2,
903
+ },
904
+ {},
905
+ {},
906
+ {
907
+ full_name: :STA_ABSX,
908
+ name: :STA,
909
+ addressing_mode: :absolute_x,
910
+ cycle: 4,
911
+ },
912
+ {},
913
+ {},
914
+ {
915
+ full_name: :LDY_IMM,
916
+ name: :LDY,
917
+ addressing_mode: :immediate,
918
+ cycle: 2,
919
+ },
920
+ {
921
+ full_name: :LDA_INDX,
922
+ name: :LDA,
923
+ addressing_mode: :pre_indexed_indirect,
924
+ cycle: 6,
925
+ },
926
+ {
927
+ full_name: :LDX_IMM,
928
+ name: :LDX,
929
+ addressing_mode: :immediate,
930
+ cycle: 2,
931
+ },
932
+ {
933
+ full_name: :LAX_INDX,
934
+ name: :LAX,
935
+ addressing_mode: :pre_indexed_indirect,
936
+ cycle: 6,
937
+ },
938
+ {
939
+ full_name: :LDY_ZERO,
940
+ name: :LDY,
941
+ addressing_mode: :zero_page,
942
+ cycle: 3,
943
+ },
944
+ {
945
+ full_name: :LDA_ZERO,
946
+ name: :LDA,
947
+ addressing_mode: :zero_page,
948
+ cycle: 3,
949
+ },
950
+ {
951
+ full_name: :LDX_ZERO,
952
+ name: :LDX,
953
+ addressing_mode: :zero_page,
954
+ cycle: 3,
955
+ },
956
+ {
957
+ full_name: :LAX_ZERO,
958
+ name: :LAX,
959
+ addressing_mode: :zero_page,
960
+ cycle: 3,
961
+ },
962
+ {
963
+ full_name: :TAY,
964
+ name: :TAY,
965
+ addressing_mode: :implied,
966
+ cycle: 2,
967
+ },
968
+ {
969
+ full_name: :LDA_IMM,
970
+ name: :LDA,
971
+ addressing_mode: :immediate,
972
+ cycle: 2,
973
+ },
974
+ {
975
+ full_name: :TAX,
976
+ name: :TAX,
977
+ addressing_mode: :implied,
978
+ cycle: 2,
979
+ },
980
+ {},
981
+ {
982
+ full_name: :LDY_ABS,
983
+ name: :LDY,
984
+ addressing_mode: :absolute,
985
+ cycle: 4,
986
+ },
987
+ {
988
+ full_name: :LDA_ABS,
989
+ name: :LDA,
990
+ addressing_mode: :absolute,
991
+ cycle: 4,
992
+ },
993
+ {
994
+ full_name: :LDX_ABS,
995
+ name: :LDX,
996
+ addressing_mode: :absolute,
997
+ cycle: 4,
998
+ },
999
+ {
1000
+ full_name: :LAX_ABS,
1001
+ name: :LAX,
1002
+ addressing_mode: :absolute,
1003
+ cycle: 4,
1004
+ },
1005
+ {
1006
+ full_name: :BCS,
1007
+ name: :BCS,
1008
+ addressing_mode: :relative,
1009
+ cycle: 2,
1010
+ },
1011
+ {
1012
+ full_name: :LDA_INDY,
1013
+ name: :LDA,
1014
+ addressing_mode: :post_indexed_indirect,
1015
+ cycle: 5,
1016
+ },
1017
+ {
1018
+ full_name: :NOP,
1019
+ name: :NOP,
1020
+ addressing_mode: :implied,
1021
+ cycle: 2,
1022
+ },
1023
+ {
1024
+ full_name: :LAX_INDY,
1025
+ name: :LAX,
1026
+ addressing_mode: :post_indexed_indirect,
1027
+ cycle: 5,
1028
+ },
1029
+ {
1030
+ full_name: :LDY_ZEROX,
1031
+ name: :LDY,
1032
+ addressing_mode: :zero_page_x,
1033
+ cycle: 4,
1034
+ },
1035
+ {
1036
+ full_name: :LDA_ZEROX,
1037
+ name: :LDA,
1038
+ addressing_mode: :zero_page_x,
1039
+ cycle: 4,
1040
+ },
1041
+ {
1042
+ full_name: :LDX_ZEROY,
1043
+ name: :LDX,
1044
+ addressing_mode: :zero_page_y,
1045
+ cycle: 4,
1046
+ },
1047
+ {
1048
+ full_name: :LAX_ZEROY,
1049
+ name: :LAX,
1050
+ addressing_mode: :zero_page_y,
1051
+ cycle: 4,
1052
+ },
1053
+ {
1054
+ full_name: :CLV,
1055
+ name: :CLV,
1056
+ addressing_mode: :implied,
1057
+ cycle: 2,
1058
+ },
1059
+ {
1060
+ full_name: :LDA_ABSY,
1061
+ name: :LDA,
1062
+ addressing_mode: :absolute_y,
1063
+ cycle: 4,
1064
+ },
1065
+ {
1066
+ full_name: :TSX,
1067
+ name: :TSX,
1068
+ addressing_mode: :implied,
1069
+ cycle: 2,
1070
+ },
1071
+ {},
1072
+ {
1073
+ full_name: :LDY_ABSX,
1074
+ name: :LDY,
1075
+ addressing_mode: :absolute_x,
1076
+ cycle: 4,
1077
+ },
1078
+ {
1079
+ full_name: :LDA_ABSX,
1080
+ name: :LDA,
1081
+ addressing_mode: :absolute_x,
1082
+ cycle: 4,
1083
+ },
1084
+ {
1085
+ full_name: :LDX_ABSY,
1086
+ name: :LDX,
1087
+ addressing_mode: :absolute_y,
1088
+ cycle: 4,
1089
+ },
1090
+ {
1091
+ full_name: :LAX_ABSY,
1092
+ name: :LAX,
1093
+ addressing_mode: :absolute_y,
1094
+ cycle: 4,
1095
+ },
1096
+ {
1097
+ full_name: :CPY_IMM,
1098
+ name: :CPY,
1099
+ addressing_mode: :immediate,
1100
+ cycle: 2,
1101
+ },
1102
+ {
1103
+ full_name: :CMP_INDX,
1104
+ name: :CMP,
1105
+ addressing_mode: :pre_indexed_indirect,
1106
+ cycle: 6,
1107
+ },
1108
+ {
1109
+ full_name: :NOPD,
1110
+ name: :NOPD,
1111
+ addressing_mode: :implied,
1112
+ cycle: 2,
1113
+ },
1114
+ {
1115
+ full_name: :DCP_INDX,
1116
+ name: :DCP,
1117
+ addressing_mode: :pre_indexed_indirect,
1118
+ cycle: 8,
1119
+ },
1120
+ {
1121
+ full_name: :CPY_ZERO,
1122
+ name: :CPY,
1123
+ addressing_mode: :zero_page,
1124
+ cycle: 3,
1125
+ },
1126
+ {
1127
+ full_name: :CMP_ZERO,
1128
+ name: :CMP,
1129
+ addressing_mode: :zero_page,
1130
+ cycle: 3,
1131
+ },
1132
+ {
1133
+ full_name: :DEC_ZERO,
1134
+ name: :DEC,
1135
+ addressing_mode: :zero_page,
1136
+ cycle: 5,
1137
+ },
1138
+ {
1139
+ full_name: :DCP_ZERO,
1140
+ name: :DCP,
1141
+ addressing_mode: :zero_page,
1142
+ cycle: 5,
1143
+ },
1144
+ {
1145
+ full_name: :INY,
1146
+ name: :INY,
1147
+ addressing_mode: :implied,
1148
+ cycle: 2,
1149
+ },
1150
+ {
1151
+ full_name: :CMP_IMM,
1152
+ name: :CMP,
1153
+ addressing_mode: :immediate,
1154
+ cycle: 2,
1155
+ },
1156
+ {
1157
+ full_name: :DEX,
1158
+ name: :DEX,
1159
+ addressing_mode: :implied,
1160
+ cycle: 2,
1161
+ },
1162
+ {},
1163
+ {
1164
+ full_name: :CPY_ABS,
1165
+ name: :CPY,
1166
+ addressing_mode: :absolute,
1167
+ cycle: 4,
1168
+ },
1169
+ {
1170
+ full_name: :CMP_ABS,
1171
+ name: :CMP,
1172
+ addressing_mode: :absolute,
1173
+ cycle: 4,
1174
+ },
1175
+ {
1176
+ full_name: :DEC_ABS,
1177
+ name: :DEC,
1178
+ addressing_mode: :absolute,
1179
+ cycle: 6,
1180
+ },
1181
+ {
1182
+ full_name: :DCP_ABS,
1183
+ name: :DCP,
1184
+ addressing_mode: :absolute,
1185
+ cycle: 6,
1186
+ },
1187
+ {
1188
+ full_name: :BNE,
1189
+ name: :BNE,
1190
+ addressing_mode: :relative,
1191
+ cycle: 2,
1192
+ },
1193
+ {
1194
+ full_name: :CMP_INDY,
1195
+ name: :CMP,
1196
+ addressing_mode: :post_indexed_indirect,
1197
+ cycle: 5,
1198
+ },
1199
+ {
1200
+ full_name: :NOP,
1201
+ name: :NOP,
1202
+ addressing_mode: :implied,
1203
+ cycle: 2,
1204
+ },
1205
+ {
1206
+ full_name: :DCP_INDY,
1207
+ name: :DCP,
1208
+ addressing_mode: :post_indexed_indirect,
1209
+ cycle: 8,
1210
+ },
1211
+ {
1212
+ full_name: :NOPD,
1213
+ name: :NOPD,
1214
+ addressing_mode: :implied,
1215
+ cycle: 4,
1216
+ },
1217
+ {
1218
+ full_name: :CMP_ZEROX,
1219
+ name: :CMP,
1220
+ addressing_mode: :zero_page_x,
1221
+ cycle: 4,
1222
+ },
1223
+ {
1224
+ full_name: :DEC_ZEROX,
1225
+ name: :DEC,
1226
+ addressing_mode: :zero_page_x,
1227
+ cycle: 6,
1228
+ },
1229
+ {
1230
+ full_name: :DCP_ZEROX,
1231
+ name: :DCP,
1232
+ addressing_mode: :zero_page_x,
1233
+ cycle: 6,
1234
+ },
1235
+ {
1236
+ full_name: :CLD,
1237
+ name: :CLD,
1238
+ addressing_mode: :implied,
1239
+ cycle: 2,
1240
+ },
1241
+ {
1242
+ full_name: :CMP_ABSY,
1243
+ name: :CMP,
1244
+ addressing_mode: :absolute_y,
1245
+ cycle: 4,
1246
+ },
1247
+ {
1248
+ full_name: :NOP,
1249
+ name: :NOP,
1250
+ addressing_mode: :implied,
1251
+ cycle: 2,
1252
+ },
1253
+ {
1254
+ full_name: :DCP_ABSY,
1255
+ name: :DCP,
1256
+ addressing_mode: :absolute_y,
1257
+ cycle: 2,
1258
+ },
1259
+ {
1260
+ full_name: :NOPI,
1261
+ name: :NOPI,
1262
+ addressing_mode: :implied,
1263
+ cycle: 4,
1264
+ },
1265
+ {
1266
+ full_name: :CMP_ABSX,
1267
+ name: :CMP,
1268
+ addressing_mode: :absolute_x,
1269
+ cycle: 4,
1270
+ },
1271
+ {
1272
+ full_name: :DEC_ABSX,
1273
+ name: :DEC,
1274
+ addressing_mode: :absolute_x,
1275
+ cycle: 7,
1276
+ },
1277
+ {
1278
+ full_name: :DCP_ABSX,
1279
+ name: :DCP,
1280
+ addressing_mode: :absolute_x,
1281
+ cycle: 7,
1282
+ },
1283
+ {
1284
+ full_name: :CPX_IMM,
1285
+ name: :CPX,
1286
+ addressing_mode: :immediate,
1287
+ cycle: 2,
1288
+ },
1289
+ {
1290
+ full_name: :SBC_INDX,
1291
+ name: :SBC,
1292
+ addressing_mode: :pre_indexed_indirect,
1293
+ cycle: 6,
1294
+ },
1295
+ {
1296
+ full_name: :NOPD,
1297
+ name: :NOPD,
1298
+ addressing_mode: :implied,
1299
+ cycle: 3,
1300
+ },
1301
+ {
1302
+ full_name: :ISB_INDX,
1303
+ name: :ISB,
1304
+ addressing_mode: :pre_indexed_indirect,
1305
+ cycle: 8,
1306
+ },
1307
+ {
1308
+ full_name: :CPX_ZERO,
1309
+ name: :CPX,
1310
+ addressing_mode: :zero_page,
1311
+ cycle: 3,
1312
+ },
1313
+ {
1314
+ full_name: :SBC_ZERO,
1315
+ name: :SBC,
1316
+ addressing_mode: :zero_page,
1317
+ cycle: 3,
1318
+ },
1319
+ {
1320
+ full_name: :INC_ZERO,
1321
+ name: :INC,
1322
+ addressing_mode: :zero_page,
1323
+ cycle: 5,
1324
+ },
1325
+ {
1326
+ full_name: :ISB_ZERO,
1327
+ name: :ISB,
1328
+ addressing_mode: :zero_page,
1329
+ cycle: 5,
1330
+ },
1331
+ {
1332
+ full_name: :INX,
1333
+ name: :INX,
1334
+ addressing_mode: :implied,
1335
+ cycle: 2,
1336
+ },
1337
+ {
1338
+ full_name: :SBC_IMM,
1339
+ name: :SBC,
1340
+ addressing_mode: :immediate,
1341
+ cycle: 2,
1342
+ },
1343
+ {
1344
+ full_name: :NOP,
1345
+ name: :NOP,
1346
+ addressing_mode: :implied,
1347
+ cycle: 2,
1348
+ },
1349
+ {
1350
+ full_name: :SBC_IMM,
1351
+ name: :SBC,
1352
+ addressing_mode: :immediate,
1353
+ cycle: 2,
1354
+ },
1355
+ {
1356
+ full_name: :CPX_ABS,
1357
+ name: :CPX,
1358
+ addressing_mode: :absolute,
1359
+ cycle: 4,
1360
+ },
1361
+ {
1362
+ full_name: :SBC_ABS,
1363
+ name: :SBC,
1364
+ addressing_mode: :absolute,
1365
+ cycle: 4,
1366
+ },
1367
+ {
1368
+ full_name: :INC_ABS,
1369
+ name: :INC,
1370
+ addressing_mode: :absolute,
1371
+ cycle: 6,
1372
+ },
1373
+ {
1374
+ full_name: :ISB_ABS,
1375
+ name: :ISB,
1376
+ addressing_mode: :absolute,
1377
+ cycle: 6,
1378
+ },
1379
+ {
1380
+ full_name: :BEQ,
1381
+ name: :BEQ,
1382
+ addressing_mode: :relative,
1383
+ cycle: 2,
1384
+ },
1385
+ {
1386
+ full_name: :SBC_INDY,
1387
+ name: :SBC,
1388
+ addressing_mode: :post_indexed_indirect,
1389
+ cycle: 5,
1390
+ },
1391
+ {
1392
+ full_name: :NOP,
1393
+ name: :NOP,
1394
+ addressing_mode: :implied,
1395
+ cycle: 2,
1396
+ },
1397
+ {
1398
+ full_name: :ISB_INDY,
1399
+ name: :ISB,
1400
+ addressing_mode: :post_indexed_indirect,
1401
+ cycle: 8,
1402
+ },
1403
+ {
1404
+ full_name: :NOPD,
1405
+ name: :NOPD,
1406
+ addressing_mode: :implied,
1407
+ cycle: 4,
1408
+ },
1409
+ {
1410
+ full_name: :SBC_ZEROX,
1411
+ name: :SBC,
1412
+ addressing_mode: :zero_page_x,
1413
+ cycle: 4,
1414
+ },
1415
+ {
1416
+ full_name: :INC_ZEROX,
1417
+ name: :INC,
1418
+ addressing_mode: :zero_page_x,
1419
+ cycle: 6,
1420
+ },
1421
+ {
1422
+ full_name: :ISB_ZEROX,
1423
+ name: :ISB,
1424
+ addressing_mode: :zero_page_x,
1425
+ cycle: 6,
1426
+ },
1427
+ {
1428
+ full_name: :SED,
1429
+ name: :SED,
1430
+ addressing_mode: :implied,
1431
+ cycle: 2,
1432
+ },
1433
+ {
1434
+ full_name: :SBC_ABSY,
1435
+ name: :SBC,
1436
+ addressing_mode: :absolute_y,
1437
+ cycle: 4,
1438
+ },
1439
+ {
1440
+ full_name: :NOP,
1441
+ name: :NOP,
1442
+ addressing_mode: :implied,
1443
+ cycle: 2,
1444
+ },
1445
+ {
1446
+ full_name: :ISB_ABSY,
1447
+ name: :ISB,
1448
+ addressing_mode: :absolute_y,
1449
+ cycle: 2,
1450
+ },
1451
+ {
1452
+ full_name: :NOPI,
1453
+ name: :NOPI,
1454
+ addressing_mode: :implied,
1455
+ cycle: 4,
1456
+ },
1457
+ {
1458
+ full_name: :SBC_ABSX,
1459
+ name: :SBC,
1460
+ addressing_mode: :absolute_x,
1461
+ cycle: 4,
1462
+ },
1463
+ {
1464
+ full_name: :INC_ABSX,
1465
+ name: :INC,
1466
+ addressing_mode: :absolute_x,
1467
+ cycle: 7,
1468
+ },
1469
+ {
1470
+ full_name: :ISB_ABSX,
1471
+ name: :ISB,
1472
+ addressing_mode: :absolute_x,
1473
+ cycle: 7,
1474
+ },
1475
+ ].freeze
1476
+ end
1477
+ end