GameBoy Emulator 1
Game Boy emulator core and tooling
Loading...
Searching...
No Matches
opcodes.hpp
1#pragma once
2
3#include "common.hpp"
4
6class MMU;
7
8int op_nop(ProcessingUnit &cpu, MMU &mmu); // 0x00
9int op_ld_bc_d16(ProcessingUnit &cpu, MMU &mmu); // 0x01
10int op_ld_bc_a(ProcessingUnit &cpu, MMU &mmu); // 0x02
11int op_inc_bc(ProcessingUnit &cpu, MMU &mmu); // 0x03
12int op_inc_b(ProcessingUnit &cpu, MMU &mmu); // 0x04
13int op_dec_b(ProcessingUnit &cpu, MMU &mmu); // 0x05
14int op_ld_b_d8(ProcessingUnit &cpu, MMU &mmu); // 0x06
15int op_rlca(ProcessingUnit &cpu, MMU &mmu); // 0x07
16int op_ld_a16_sp(ProcessingUnit &cpu, MMU &mmu); // 0x08
17int op_add_hl_bc(ProcessingUnit &cpu, MMU &mmu); // 0x09
18int op_ld_a_bc(ProcessingUnit &cpu, MMU &mmu); // 0x0A
19int op_dec_bc(ProcessingUnit &cpu, MMU &mmu); // 0x0B
20int op_inc_c(ProcessingUnit &cpu, MMU &mmu); // 0x0C
21int op_dec_c(ProcessingUnit &cpu, MMU &mmu); // 0x0D
22int op_ld_c_d8(ProcessingUnit &cpu, MMU &mmu); // 0x0E
23int op_rrca(ProcessingUnit &cpu, MMU &mmu); // 0x0F
24int op_stop(ProcessingUnit &cpu, MMU &mmu); // 0x10
25int op_ld_de_d16(ProcessingUnit &cpu, MMU &mmu); // 0x11
26int op_ld_de_a(ProcessingUnit &cpu, MMU &mmu); // 0x12
27int op_inc_de(ProcessingUnit &cpu, MMU &mmu); // 0x13
28int op_inc_d(ProcessingUnit &cpu, MMU &mmu); // 0x14
29int op_dec_d(ProcessingUnit &cpu, MMU &mmu); // 0x15
30int op_ld_d_d8(ProcessingUnit &cpu, MMU &mmu); // 0x16
31int op_rla(ProcessingUnit &cpu, MMU &mmu); // 0x17
32int op_jr_r8(ProcessingUnit &cpu, MMU &mmu); // 0x18
33int op_add_hl_de(ProcessingUnit &cpu, MMU &mmu); // 0x19
34int op_ld_a_de(ProcessingUnit &cpu, MMU &mmu); // 0x1A
35int op_dec_de(ProcessingUnit &cpu, MMU &mmu); // 0x1B
36int op_inc_e(ProcessingUnit &cpu, MMU &mmu); // 0x1C
37int op_dec_e(ProcessingUnit &cpu, MMU &mmu); // 0x1D
38int op_ld_e_d8(ProcessingUnit &cpu, MMU &mmu); // 0x1E
39int op_rra(ProcessingUnit &cpu, MMU &mmu); // 0x1F
40int op_jr_nz(ProcessingUnit &cpu, MMU &mmu); // 0x20
41int op_ld_hl_d16(ProcessingUnit &cpu, MMU &mmu); // 0x21
42int op_ld_hli_a(ProcessingUnit &cpu, MMU &mmu); // 0x22
43int op_inc_hl(ProcessingUnit &cpu, MMU &mmu); // 0x23
44int op_inc_h(ProcessingUnit &cpu, MMU &mmu); // 0x24
45int op_dec_h(ProcessingUnit &cpu, MMU &mmu); // 0x25
46int op_ld_h_d8(ProcessingUnit &cpu, MMU &mmu); // 0x26
47int op_daa(ProcessingUnit &cpu, MMU &mmu); // 0x27
48int op_jr_z(ProcessingUnit &cpu, MMU &mmu); // 0x28
49int op_add_hl_hl(ProcessingUnit &cpu, MMU &mmu); // 0x29
50int op_ld_a_hli(ProcessingUnit &cpu, MMU &mmu); // 0x2A
51int op_dec_hl(ProcessingUnit &cpu, MMU &mmu); // 0x2B
52int op_inc_l(ProcessingUnit &cpu, MMU &mmu); // 0x2C
53int op_dec_l(ProcessingUnit &cpu, MMU &mmu); // 0x2D
54int op_ld_l_d8(ProcessingUnit &cpu, MMU &mmu); // 0x2E
55int op_cpl(ProcessingUnit &cpu, MMU &mmu); // 0x2F
56int op_jr_nc(ProcessingUnit &cpu, MMU &mmu); // 0x30
57int op_ld_sp_d16(ProcessingUnit &cpu, MMU &mmu); // 0x31
58int op_ld_hld_a(ProcessingUnit &cpu, MMU &mmu); // 0x32
59int op_inc_sp(ProcessingUnit &cpu, MMU &mmu); // 0x33
60int op_inc_hl_ptr(ProcessingUnit &cpu, MMU &mmu); // 0x34
61int op_dec_hl_ptr(ProcessingUnit &cpu, MMU &mmu); // 0x35
62int op_ld_hl_d8(ProcessingUnit &cpu, MMU &mmu); // 0x36
63int op_scf(ProcessingUnit &cpu, MMU &mmu); // 0x37
64int op_jr_c(ProcessingUnit &cpu, MMU &mmu); // 0x38
65int op_add_hl_sp(ProcessingUnit &cpu, MMU &mmu); // 0x39
66int op_ld_a_hld(ProcessingUnit &cpu, MMU &mmu); // 0x3A
67int op_dec_sp(ProcessingUnit &cpu, MMU &mmu); // 0x3B
68int op_inc_a(ProcessingUnit &cpu, MMU &mmu); // 0x3C
69int op_dec_a(ProcessingUnit &cpu, MMU &mmu); // 0x3D
70int op_ld_a_d8(ProcessingUnit &cpu, MMU &mmu); // 0x3E
71int op_ccf(ProcessingUnit &cpu, MMU &mmu); // 0x3F
72int op_ld_b_b(ProcessingUnit &cpu, MMU &mmu); // 0x40
73int op_ld_b_c(ProcessingUnit &cpu, MMU &mmu); // 0x41
74int op_ld_b_d(ProcessingUnit &cpu, MMU &mmu); // 0x42
75int op_ld_b_e(ProcessingUnit &cpu, MMU &mmu); // 0x43
76int op_ld_b_h(ProcessingUnit &cpu, MMU &mmu); // 0x44
77int op_ld_b_l(ProcessingUnit &cpu, MMU &mmu); // 0x45
78int op_ld_b_hl(ProcessingUnit &cpu, MMU &mmu); // 0x46
79int op_ld_b_a(ProcessingUnit &cpu, MMU &mmu); // 0x47
80int op_ld_c_b(ProcessingUnit &cpu, MMU &mmu); // 0x48
81int op_ld_c_c(ProcessingUnit &cpu, MMU &mmu); // 0x49
82int op_ld_c_d(ProcessingUnit &cpu, MMU &mmu); // 0x4A
83int op_ld_c_e(ProcessingUnit &cpu, MMU &mmu); // 0x4B
84int op_ld_c_h(ProcessingUnit &cpu, MMU &mmu); // 0x4C
85int op_ld_c_l(ProcessingUnit &cpu, MMU &mmu); // 0x4D
86int op_ld_c_hl(ProcessingUnit &cpu, MMU &mmu); // 0x4E
87int op_ld_c_a_4f(ProcessingUnit &cpu, MMU &mmu); // 0x4F
88int op_ld_d_b(ProcessingUnit &cpu, MMU &mmu); // 0x50
89int op_ld_d_c(ProcessingUnit &cpu, MMU &mmu); // 0x51
90int op_ld_d_d(ProcessingUnit &cpu, MMU &mmu); // 0x52
91int op_ld_d_e(ProcessingUnit &cpu, MMU &mmu); // 0x53
92int op_ld_d_h(ProcessingUnit &cpu, MMU &mmu); // 0x54
93int op_ld_d_l(ProcessingUnit &cpu, MMU &mmu); // 0x55
94int op_ld_d_hl(ProcessingUnit &cpu, MMU &mmu); // 0x56
95int op_ld_d_a(ProcessingUnit &cpu, MMU &mmu); // 0x57
96int op_ld_e_b(ProcessingUnit &cpu, MMU &mmu); // 0x58
97int op_ld_e_c(ProcessingUnit &cpu, MMU &mmu); // 0x59
98int op_ld_e_d(ProcessingUnit &cpu, MMU &mmu); // 0x5A
99int op_ld_e_e(ProcessingUnit &cpu, MMU &mmu); // 0x5B
100int op_ld_e_h(ProcessingUnit &cpu, MMU &mmu); // 0x5C
101int op_ld_e_l(ProcessingUnit &cpu, MMU &mmu); // 0x5D
102int op_ld_e_hl(ProcessingUnit &cpu, MMU &mmu); // 0x5E
103int op_ld_e_a(ProcessingUnit &cpu, MMU &mmu); // 0x5F
104int op_ld_h_b(ProcessingUnit &cpu, MMU &mmu); // 0x60
105int op_ld_h_c(ProcessingUnit &cpu, MMU &mmu); // 0x61
106int op_ld_h_d(ProcessingUnit &cpu, MMU &mmu); // 0x62
107int op_ld_h_e(ProcessingUnit &cpu, MMU &mmu); // 0x63
108int op_ld_h_h(ProcessingUnit &cpu, MMU &mmu); // 0x64
109int op_ld_h_l(ProcessingUnit &cpu, MMU &mmu); // 0x65
110int op_ld_h_hl(ProcessingUnit &cpu, MMU &mmu); // 0x66
111int op_ld_h_a(ProcessingUnit &cpu, MMU &mmu); // 0x67
112int op_ld_l_b(ProcessingUnit &cpu, MMU &mmu); // 0x68
113int op_ld_l_c(ProcessingUnit &cpu, MMU &mmu); // 0x69
114int op_ld_l_d(ProcessingUnit &cpu, MMU &mmu); // 0x6A
115int op_ld_l_e(ProcessingUnit &cpu, MMU &mmu); // 0x6B
116int op_ld_l_h(ProcessingUnit &cpu, MMU &mmu); // 0x6C
117int op_ld_l_l(ProcessingUnit &cpu, MMU &mmu); // 0x6D
118int op_ld_l_hl(ProcessingUnit &cpu, MMU &mmu); // 0x6E
119int op_ld_l_a(ProcessingUnit &cpu, MMU &mmu); // 0x6F
120int op_ld_hl_b(ProcessingUnit &cpu, MMU &mmu); // 0x70
121int op_ld_hl_c(ProcessingUnit &cpu, MMU &mmu); // 0x71
122int op_ld_hl_d(ProcessingUnit &cpu, MMU &mmu); // 0x72
123int op_ld_hl_e(ProcessingUnit &cpu, MMU &mmu); // 0x73
124int op_ld_hl_h(ProcessingUnit &cpu, MMU &mmu); // 0x74
125int op_ld_hl_l(ProcessingUnit &cpu, MMU &mmu); // 0x75
126int op_halt(ProcessingUnit &cpu, MMU &mmu); // 0x76
127int op_ld_hl_a(ProcessingUnit &cpu, MMU &mmu); // 0x77
128int op_ld_a_b(ProcessingUnit &cpu, MMU &mmu); // 0x78
129int op_ld_a_c_79(ProcessingUnit &cpu, MMU &mmu); // 0x79
130int op_ld_a_d(ProcessingUnit &cpu, MMU &mmu); // 0x7A
131int op_ld_a_e(ProcessingUnit &cpu, MMU &mmu); // 0x7B
132int op_ld_a_h(ProcessingUnit &cpu, MMU &mmu); // 0x7C
133int op_ld_a_l(ProcessingUnit &cpu, MMU &mmu); // 0x7D
134int op_ld_a_hl(ProcessingUnit &cpu, MMU &mmu); // 0x7E
135int op_ld_a_a(ProcessingUnit &cpu, MMU &mmu); // 0x7F
136int op_add_a_b(ProcessingUnit &cpu, MMU &mmu); // 0x80
137int op_add_a_c(ProcessingUnit &cpu, MMU &mmu); // 0x81
138int op_add_a_d(ProcessingUnit &cpu, MMU &mmu); // 0x82
139int op_add_a_e(ProcessingUnit &cpu, MMU &mmu); // 0x83
140int op_add_a_h(ProcessingUnit &cpu, MMU &mmu); // 0x84
141int op_add_a_l(ProcessingUnit &cpu, MMU &mmu); // 0x85
142int op_add_a_hl(ProcessingUnit &cpu, MMU &mmu); // 0x86
143int op_add_a_a(ProcessingUnit &cpu, MMU &mmu); // 0x87
144int op_adc_a_b(ProcessingUnit &cpu, MMU &mmu); // 0x88
145int op_adc_a_c(ProcessingUnit &cpu, MMU &mmu); // 0x89
146int op_adc_a_d(ProcessingUnit &cpu, MMU &mmu); // 0x8A
147int op_adc_a_e(ProcessingUnit &cpu, MMU &mmu); // 0x8B
148int op_adc_a_h(ProcessingUnit &cpu, MMU &mmu); // 0x8C
149int op_adc_a_l(ProcessingUnit &cpu, MMU &mmu); // 0x8D
150int op_adc_a_hl(ProcessingUnit &cpu, MMU &mmu); // 0x8E
151int op_adc_a_a(ProcessingUnit &cpu, MMU &mmu); // 0x8F
152int op_sub_b(ProcessingUnit &cpu, MMU &mmu); // 0x90
153int op_sub_c(ProcessingUnit &cpu, MMU &mmu); // 0x91
154int op_sub_d(ProcessingUnit &cpu, MMU &mmu); // 0x92
155int op_sub_e(ProcessingUnit &cpu, MMU &mmu); // 0x93
156int op_sub_h(ProcessingUnit &cpu, MMU &mmu); // 0x94
157int op_sub_l(ProcessingUnit &cpu, MMU &mmu); // 0x95
158int op_sub_hl(ProcessingUnit &cpu, MMU &mmu); // 0x96
159int op_sub_a(ProcessingUnit &cpu, MMU &mmu); // 0x97
160int op_sbc_a_b(ProcessingUnit &cpu, MMU &mmu); // 0x98
161int op_sbc_a_c(ProcessingUnit &cpu, MMU &mmu); // 0x99
162int op_sbc_a_d(ProcessingUnit &cpu, MMU &mmu); // 0x9A
163int op_sbc_a_e(ProcessingUnit &cpu, MMU &mmu); // 0x9B
164int op_sbc_a_h(ProcessingUnit &cpu, MMU &mmu); // 0x9C
165int op_sbc_a_l(ProcessingUnit &cpu, MMU &mmu); // 0x9D
166int op_sbc_a_hl(ProcessingUnit &cpu, MMU &mmu); // 0x9E
167int op_sbc_a_a(ProcessingUnit &cpu, MMU &mmu); // 0x9F
168int op_and_b(ProcessingUnit &cpu, MMU &mmu); // 0xA0
169int op_and_c(ProcessingUnit &cpu, MMU &mmu); // 0xA1
170int op_and_d(ProcessingUnit &cpu, MMU &mmu); // 0xA2
171int op_and_e(ProcessingUnit &cpu, MMU &mmu); // 0xA3
172int op_and_h(ProcessingUnit &cpu, MMU &mmu); // 0xA4
173int op_and_l(ProcessingUnit &cpu, MMU &mmu); // 0xA5
174int op_and_hl(ProcessingUnit &cpu, MMU &mmu); // 0xA6
175int op_and_a(ProcessingUnit &cpu, MMU &mmu); // 0xA7
176int op_xor_b(ProcessingUnit &cpu, MMU &mmu); // 0xA8
177int op_xor_c(ProcessingUnit &cpu, MMU &mmu); // 0xA9
178int op_xor_d(ProcessingUnit &cpu, MMU &mmu); // 0xAA
179int op_xor_e(ProcessingUnit &cpu, MMU &mmu); // 0xAB
180int op_xor_h(ProcessingUnit &cpu, MMU &mmu); // 0xAC
181int op_xor_l(ProcessingUnit &cpu, MMU &mmu); // 0xAD
182int op_xor_hl(ProcessingUnit &cpu, MMU &mmu); // 0xAE
183int op_xor_a(ProcessingUnit &cpu, MMU &mmu); // 0xAF
184int op_or_b(ProcessingUnit &cpu, MMU &mmu); // 0xB0
185int op_or_c(ProcessingUnit &cpu, MMU &mmu); // 0xB1
186int op_or_d(ProcessingUnit &cpu, MMU &mmu); // 0xB2
187int op_or_e(ProcessingUnit &cpu, MMU &mmu); // 0xB3
188int op_or_h(ProcessingUnit &cpu, MMU &mmu); // 0xB4
189int op_or_l(ProcessingUnit &cpu, MMU &mmu); // 0xB5
190int op_or_hl(ProcessingUnit &cpu, MMU &mmu); // 0xB6
191int op_or_a(ProcessingUnit &cpu, MMU &mmu); // 0xB7
192int op_cp_b(ProcessingUnit &cpu, MMU &mmu); // 0xB8
193int op_cp_c(ProcessingUnit &cpu, MMU &mmu); // 0xB9
194int op_cp_d(ProcessingUnit &cpu, MMU &mmu); // 0xBA
195int op_cp_e(ProcessingUnit &cpu, MMU &mmu); // 0xBB
196int op_cp_h(ProcessingUnit &cpu, MMU &mmu); // 0xBC
197int op_cp_l(ProcessingUnit &cpu, MMU &mmu); // 0xBD
198int op_cp_hl(ProcessingUnit &cpu, MMU &mmu); // 0xBE
199int op_cp_a(ProcessingUnit &cpu, MMU &mmu); // 0xBF
200int op_ret_nz(ProcessingUnit &cpu, MMU &mmu); // 0xC0
201int op_pop_bc(ProcessingUnit &cpu, MMU &mmu); // 0xC1
202int op_jp_nz(ProcessingUnit &cpu, MMU &mmu); // 0xC2
203int op_jp(ProcessingUnit &cpu, MMU &mmu); // 0xC3
204int op_call_nz(ProcessingUnit &cpu, MMU &mmu); // 0xC4
205int op_push_bc(ProcessingUnit &cpu, MMU &mmu); // 0xC5
206int op_add_a_d8(ProcessingUnit &cpu, MMU &mmu); // 0xC6
207int op_rst_00(ProcessingUnit &cpu, MMU &mmu); // 0xC7
208int op_ret_z(ProcessingUnit &cpu, MMU &mmu); // 0xC8
209int op_ret(ProcessingUnit &cpu, MMU &mmu); // 0xC9
210int op_jp_z(ProcessingUnit &cpu, MMU &mmu); // 0xCA
211int op_cb_prefix(ProcessingUnit &cpu, MMU &mmu); // 0xCB
212int op_call_z(ProcessingUnit &cpu, MMU &mmu); // 0xCC
213int op_call(ProcessingUnit &cpu, MMU &mmu); // 0xCD
214int op_adc_a_d8(ProcessingUnit &cpu, MMU &mmu); // 0xCE
215int op_rst_08(ProcessingUnit &cpu, MMU &mmu); // 0xCF
216int op_ret_nc(ProcessingUnit &cpu, MMU &mmu); // 0xD0
217int op_pop_de(ProcessingUnit &cpu, MMU &mmu); // 0xD1
218int op_jp_nc(ProcessingUnit &cpu, MMU &mmu); // 0xD2
219int op_illegal_d3(ProcessingUnit &cpu, MMU &mmu); // 0xD3
220int op_call_nc(ProcessingUnit &cpu, MMU &mmu); // 0xD4
221int op_push_de(ProcessingUnit &cpu, MMU &mmu); // 0xD5
222int op_sub_d8(ProcessingUnit &cpu, MMU &mmu); // 0xD6
223int op_rst_10(ProcessingUnit &cpu, MMU &mmu); // 0xD7
224int op_ret_c(ProcessingUnit &cpu, MMU &mmu); // 0xD8
225int op_reti(ProcessingUnit &cpu, MMU &mmu); // 0xD9
226int op_jp_c(ProcessingUnit &cpu, MMU &mmu); // 0xDA
227int op_illegal_db(ProcessingUnit &cpu, MMU &mmu); // 0xDB
228int op_call_c(ProcessingUnit &cpu, MMU &mmu); // 0xDC
229int op_illegal_dd(ProcessingUnit &cpu, MMU &mmu); // 0xDD
230int op_sbc_a_d8(ProcessingUnit &cpu, MMU &mmu); // 0xDE
231int op_rst_18(ProcessingUnit &cpu, MMU &mmu); // 0xDF
232int op_ldh_a8_a(ProcessingUnit &cpu, MMU &mmu); // 0xE0
233int op_pop_hl(ProcessingUnit &cpu, MMU &mmu); // 0xE1
234int op_ld_c_a_e2(ProcessingUnit &cpu, MMU &mmu); // 0xE2
235int op_illegal_e3(ProcessingUnit &cpu, MMU &mmu); // 0xE3
236int op_illegal_e4(ProcessingUnit &cpu, MMU &mmu); // 0xE4
237int op_push_hl(ProcessingUnit &cpu, MMU &mmu); // 0xE5
238int op_and_d8(ProcessingUnit &cpu, MMU &mmu); // 0xE6
239int op_rst_20(ProcessingUnit &cpu, MMU &mmu); // 0xE7
240int op_add_sp_e8(ProcessingUnit &cpu, MMU &mmu); // 0xE8
241int op_jp_hl(ProcessingUnit &cpu, MMU &mmu); // 0xE9
242int op_ld_a16_a(ProcessingUnit &cpu, MMU &mmu); // 0xEA
243int op_illegal_eb(ProcessingUnit &cpu, MMU &mmu); // 0xEB
244int op_illegal_ec(ProcessingUnit &cpu, MMU &mmu); // 0xEC
245int op_illegal_ed(ProcessingUnit &cpu, MMU &mmu); // 0xED
246int op_xor_d8(ProcessingUnit &cpu, MMU &mmu); // 0xEE
247int op_rst_28(ProcessingUnit &cpu, MMU &mmu); // 0xEF
248int op_ldh_a_a8(ProcessingUnit &cpu, MMU &mmu); // 0xF0
249int op_pop_af(ProcessingUnit &cpu, MMU &mmu); // 0xF1
250int op_ld_a_c_f2(ProcessingUnit &cpu, MMU &mmu); // 0xF2
251int op_di(ProcessingUnit &cpu, MMU &mmu); // 0xF3
252int op_illegal_f4(ProcessingUnit &cpu, MMU &mmu); // 0xF4
253int op_push_af(ProcessingUnit &cpu, MMU &mmu); // 0xF5
254int op_or_d8(ProcessingUnit &cpu, MMU &mmu); // 0xF6
255int op_rst_30(ProcessingUnit &cpu, MMU &mmu); // 0xF7
256int op_ld_hl_sp_e8(ProcessingUnit &cpu, MMU &mmu); // 0xF8
257int op_ld_sp_hl(ProcessingUnit &cpu, MMU &mmu); // 0xF9
258int op_ld_a_a16(ProcessingUnit &cpu, MMU &mmu); // 0xFA
259int op_ei(ProcessingUnit &cpu, MMU &mmu); // 0xFB
260int op_illegal_fc(ProcessingUnit &cpu, MMU &mmu); // 0xFC
261int op_illegal_fd(ProcessingUnit &cpu, MMU &mmu); // 0xFD
262int op_cp_d8(ProcessingUnit &cpu, MMU &mmu); // 0xFE
263int op_rst_38(ProcessingUnit &cpu, MMU &mmu); // 0xFF
Definition mmu.hpp:12