|
|
Line 95: |
Line 95: |
| |ld a,(c) || 11110010 || 2 || a := (FF00h + c) | | |ld a,(c) || 11110010 || 2 || a := (FF00h + c) |
| |- | | |- |
− | | ld pp,nn || 00pp0001 lolololo hihihihi || 3 || rowspan=3|- || rowspan=3|- || rowspan=3|- || rowspan=3|- || pp := nn ||rowspan=4|16-bit Load | + | | ld pp,nn || 00pp0001 lolololo hihihihi || 3 || rowspan=3|- || rowspan=3|- || rowspan=3|- || rowspan=3|- || pp := nn ||rowspan=3|16-bit Load |
| |- | | |- |
| | ld (nn),sp || 00001000 lolololo hihihihi || 5 || (nn) := sp | | | ld (nn),sp || 00001000 lolololo hihihihi || 5 || (nn) := sp |
The GBZ80 lacks the alternate register set, the dedicated I/O bus, the R register, the index registers (thus no DD and FD prefixed opcodes), the ED prefixed opcodes (including block transfer), the sign and parity/overflow flags (and all conditional instructions that used them), the undocumented flags (thus no leaking of WZ and Q internal registers). GBZ80 opcodes
The GBZ80 also lacks the NMI pin (thus no IFF2 and no RETN), the IM instructions and the I register. It has a different interrupt system than the Z80. Source
The Nintendo documentation does not mention M-cycles or T-states at all. They only mention CPU cycles, which are always equal to 4 T-states (like NOPs in the CPC world). Also, the GBZ80 has different timings than the Z80. For example:
Fun fact: Way more GBZ80 cores were produced for Gameboy hardware (118 million Gameboys and 81 million GBA) than all the Z80 chips produced for home computers and game consoles. Learn GBZ80 Assembly Programming with ChibiAkumas
Instruction |
Opcode |
Cycles |
Z |
N |
H |
C |
Effect |
Description
|
rlca |
00000111 |
1 |
0 |
0 |
0 |
X |
cf := a.7, a := [a << 1] + cf |
Fast Rotate
|
rrca |
00001111 |
1 |
cf := a.0, a := [a >> 1] + [cf << 7]
|
rla |
00010111 |
1 |
ocf := cf, cf := a.7, a := [a << 1] + ocf
|
rra |
00011111 |
1 |
ocf := cf, cf := a.0, a := [a >> 1] + [ocf << 7]
|
rl r |
CB 00010rrr |
2 |
+ |
0 |
0 |
X |
ocf := cf, cf := r.7, r := [r << 1] + ocf |
Rotate Left
|
rl (hl) |
CB 00010110 |
4 |
ocf := cf, cf := (hl).7, (hl) := [(hl) << 1] + ocf
|
rlc r |
CB 00000rrr |
2 |
+ |
0 |
0 |
X |
cf := r.7, r := [r << 1] + cf |
Rotate Left Carry
|
rlc (hl) |
CB 00000110 |
4 |
cf := (hl).7, (hl) := [(hl) << 1] + cf
|
rr r |
CB 00011rrr |
2 |
+ |
0 |
0 |
X |
ocf := cf, cf := r.0, r := [r >> 1] + [ocf << 7] |
Rotate Right
|
rr (hl) |
CB 00011110 |
4 |
ocf := cf, cf := (hl).0, (hl) := [(hl) >> 1] + [ocf << 7]
|
rrc r |
CB 00001rrr |
2 |
+ |
0 |
0 |
X |
cf := r.0, r := [r >> 1] + [cf << 7] |
Rotate Right Carry
|
rrc (hl) |
CB 00001110 |
4 |
cf := (hl).0, (hl) := [(hl) >> 1] + [cf << 7]
|
sla r |
CB 00100rrr |
2 |
+ |
0 |
0 |
X |
cf := r.7, r := r << 1 |
Shift Left Arithmetic
|
sla (hl) |
CB 00100110 |
4 |
cf := (hl).7, (hl) := (hl) << 1
|
sra r |
CB 00101rrr |
2 |
+ |
0 |
0 |
X |
cf := r.0, r := r >> 1, r.7 := r.6 |
Shift Right Arithmetic
|
sra (hl) |
CB 00101110 |
4 |
cf := (hl).0, (hl) := (hl) >> 1, (hl).7 := (hl).6
|
srl r |
CB 00111rrr |
2 |
+ |
0 |
0 |
X |
cf := r.0, r := r >> 1 |
Shift Right Logical
|
srl (hl) |
CB 00111110 |
4 |
cf := (hl).0, (hl) := (hl) >> 1
|
swap r |
CB 00110rrr |
2 |
+ |
0 |
0 |
0 |
r := (r << 4) + (r >> 4) |
Swap nibbles
|
swap (hl) |
CB 00110110 |
4 |
(hl) := ((hl) << 4) + ((hl) >> 4)
|
Opcode |
Mnemonic
|
40 |
LD B,B
|
41 |
LD B,C
|
42 |
LD B,D
|
43 |
LD B,E
|
44 |
LD B,H
|
45 |
LD B,L
|
46 |
LD B,(HL)
|
47 |
LD B,A
|
|
Opcode |
Mnemonic
|
48 |
LD C,B
|
49 |
LD C,C
|
4A |
LD C,D
|
4B |
LD C,E
|
4C |
LD C,H
|
4D |
LD C,L
|
4E |
LD C,(HL)
|
4F |
LD C,A
|
|
Opcode |
Mnemonic
|
50 |
LD D,B
|
51 |
LD D,C
|
52 |
LD D,D
|
53 |
LD D,E
|
54 |
LD D,H
|
55 |
LD D,L
|
56 |
LD D,(HL)
|
57 |
LD D,A
|
|
Opcode |
Mnemonic
|
58 |
LD E,B
|
59 |
LD E,C
|
5A |
LD E,D
|
5B |
LD E,E
|
5C |
LD E,H
|
5D |
LD E,L
|
5E |
LD E,(HL)
|
5F |
LD E,A
|
|
Opcode |
Mnemonic
|
60 |
LD H,B
|
61 |
LD H,C
|
62 |
LD H,D
|
63 |
LD H,E
|
64 |
LD H,H
|
65 |
LD H,L
|
66 |
LD H,(HL)
|
67 |
LD H,A
|
|
Opcode |
Mnemonic
|
68 |
LD L,B
|
69 |
LD L,C
|
6A |
LD L,D
|
6B |
LD L,E
|
6C |
LD L,H
|
6D |
LD L,L
|
6E |
LD L,(HL)
|
6F |
LD L,A
|
|
Opcode |
Mnemonic
|
70 |
LD (HL),B
|
71 |
LD (HL),C
|
72 |
LD (HL),D
|
73 |
LD (HL),E
|
74 |
LD (HL),H
|
75 |
LD (HL),L
|
76 |
HALT
|
77 |
LD (HL),A
|
|
Opcode |
Mnemonic
|
78 |
LD A,B
|
79 |
LD A,C
|
7A |
LD A,D
|
7B |
LD A,E
|
7C |
LD A,H
|
7D |
LD A,L
|
7E |
LD A,(HL)
|
7F |
LD A,A
|
|
Opcode |
Mnemonic
|
00 |
RLC B
|
01 |
RLC C
|
02 |
RLC D
|
03 |
RLC E
|
04 |
RLC H
|
05 |
RLC L
|
06 |
RLC (HL)
|
07 |
RLC A
|
|
Opcode |
Mnemonic
|
08 |
RRC B
|
09 |
RRC C
|
0A |
RRC D
|
0B |
RRC E
|
0C |
RRC H
|
0D |
RRC L
|
0E |
RRC (HL)
|
0F |
RRC A
|
|
Opcode |
Mnemonic
|
10 |
RL B
|
11 |
RL C
|
12 |
RL D
|
13 |
RL E
|
14 |
RL H
|
15 |
RL L
|
16 |
RL (HL)
|
17 |
RL A
|
|
Opcode |
Mnemonic
|
18 |
RR B
|
19 |
RR C
|
1A |
RR D
|
1B |
RR E
|
1C |
RR H
|
1D |
RR L
|
1E |
RR (HL)
|
1F |
RR A
|
|
Opcode |
Mnemonic
|
20 |
SLA B
|
21 |
SLA C
|
22 |
SLA D
|
23 |
SLA E
|
24 |
SLA H
|
25 |
SLA L
|
26 |
SLA (HL)
|
27 |
SLA A
|
|
Opcode |
Mnemonic
|
28 |
SRA B
|
29 |
SRA C
|
2A |
SRA D
|
2B |
SRA E
|
2C |
SRA H
|
2D |
SRA L
|
2E |
SRA (HL)
|
2F |
SRA A
|
|
Opcode |
Mnemonic
|
30 |
SWAP B
|
31 |
SWAP C
|
32 |
SWAP D
|
33 |
SWAP E
|
34 |
SWAP H
|
35 |
SWAP L
|
36 |
SWAP (HL)
|
37 |
SWAP A
|
|
Opcode |
Mnemonic
|
38 |
SRL B
|
39 |
SRL C
|
3A |
SRL D
|
3B |
SRL E
|
3C |
SRL H
|
3D |
SRL L
|
3E |
SRL (HL)
|
3F |
SRL A
|
|
Opcode |
Mnemonic
|
40 |
BIT 0,B
|
41 |
BIT 0,C
|
42 |
BIT 0,D
|
43 |
BIT 0,E
|
44 |
BIT 0,H
|
45 |
BIT 0,L
|
46 |
BIT 0,(HL)
|
47 |
BIT 0,A
|
|
Opcode |
Mnemonic
|
48 |
BIT 1,B
|
49 |
BIT 1,C
|
4A |
BIT 1,D
|
4B |
BIT 1,E
|
4C |
BIT 1,H
|
4D |
BIT 1,L
|
4E |
BIT 1,(HL)
|
4F |
BIT 1,A
|
|
Opcode |
Mnemonic
|
50 |
BIT 2,B
|
51 |
BIT 2,C
|
52 |
BIT 2,D
|
53 |
BIT 2,E
|
54 |
BIT 2,H
|
55 |
BIT 2,L
|
56 |
BIT 2,(HL)
|
57 |
BIT 2,A
|
|
Opcode |
Mnemonic
|
58 |
BIT 3,B
|
59 |
BIT 3,C
|
5A |
BIT 3,D
|
5B |
BIT 3,E
|
5C |
BIT 3,H
|
5D |
BIT 3,L
|
5E |
BIT 3,(HL)
|
5F |
BIT 3,A
|
|
Opcode |
Mnemonic
|
60 |
BIT 4,B
|
61 |
BIT 4,C
|
62 |
BIT 4,D
|
63 |
BIT 4,E
|
64 |
BIT 4,H
|
65 |
BIT 4,L
|
66 |
BIT 4,(HL)
|
67 |
BIT 4,A
|
|
Opcode |
Mnemonic
|
68 |
BIT 5,B
|
69 |
BIT 5,C
|
6A |
BIT 5,D
|
6B |
BIT 5,E
|
6C |
BIT 5,H
|
6D |
BIT 5,L
|
6E |
BIT 5,(HL)
|
6F |
BIT 5,A
|
|
Opcode |
Mnemonic
|
70 |
BIT 6,B
|
71 |
BIT 6,C
|
72 |
BIT 6,D
|
73 |
BIT 6,E
|
74 |
BIT 6,H
|
75 |
BIT 6,L
|
76 |
BIT 6,(HL)
|
77 |
BIT 6,A
|
|
Opcode |
Mnemonic
|
78 |
BIT 7,B
|
79 |
BIT 7,C
|
7A |
BIT 7,D
|
7B |
BIT 7,E
|
7C |
BIT 7,H
|
7D |
BIT 7,L
|
7E |
BIT 7,(HL)
|
7F |
BIT 7,A
|
|
Opcode |
Mnemonic
|
80 |
RES 0,B
|
81 |
RES 0,C
|
82 |
RES 0,D
|
83 |
RES 0,E
|
84 |
RES 0,H
|
85 |
RES 0,L
|
86 |
RES 0,(HL)
|
87 |
RES 0,A
|
|
Opcode |
Mnemonic
|
88 |
RES 1,B
|
89 |
RES 1,C
|
8A |
RES 1,D
|
8B |
RES 1,E
|
8C |
RES 1,H
|
8D |
RES 1,L
|
8E |
RES 1,(HL)
|
8F |
RES 1,A
|
|
Opcode |
Mnemonic
|
90 |
RES 2,B
|
91 |
RES 2,C
|
92 |
RES 2,D
|
93 |
RES 2,E
|
94 |
RES 2,H
|
95 |
RES 2,L
|
96 |
RES 2,(HL)
|
97 |
RES 2,A
|
|
Opcode |
Mnemonic
|
98 |
RES 3,B
|
99 |
RES 3,C
|
9A |
RES 3,D
|
9B |
RES 3,E
|
9C |
RES 3,H
|
9D |
RES 3,L
|
9E |
RES 3,(HL)
|
9F |
RES 3,A
|
|
Opcode |
Mnemonic
|
A0 |
RES 4,B
|
A1 |
RES 4,C
|
A2 |
RES 4,D
|
A3 |
RES 4,E
|
A4 |
RES 4,H
|
A5 |
RES 4,L
|
A6 |
RES 4,(HL)
|
A7 |
RES 4,A
|
|
Opcode |
Mnemonic
|
A8 |
RES 5,B
|
A9 |
RES 5,C
|
AA |
RES 5,D
|
AB |
RES 5,E
|
AC |
RES 5,H
|
AD |
RES 5,L
|
AE |
RES 5,(HL)
|
AF |
RES 5,A
|
|
Opcode |
Mnemonic
|
B0 |
RES 6,B
|
B1 |
RES 6,C
|
B2 |
RES 6,D
|
B3 |
RES 6,E
|
B4 |
RES 6,H
|
B5 |
RES 6,L
|
B6 |
RES 6,(HL)
|
B7 |
RES 6,A
|
|
Opcode |
Mnemonic
|
B8 |
RES 7,B
|
B9 |
RES 7,C
|
BA |
RES 7,D
|
BB |
RES 7,E
|
BC |
RES 7,H
|
BD |
RES 7,L
|
BE |
RES 7,(HL)
|
BF |
RES 7,A
|
|
Opcode |
Mnemonic
|
C0 |
SET 0,B
|
C1 |
SET 0,C
|
C2 |
SET 0,D
|
C3 |
SET 0,E
|
C4 |
SET 0,H
|
C5 |
SET 0,L
|
C6 |
SET 0,(HL)
|
C7 |
SET 0,A
|
|
Opcode |
Mnemonic
|
C8 |
SET 1,B
|
C9 |
SET 1,C
|
CA |
SET 1,D
|
CB |
SET 1,E
|
CC |
SET 1,H
|
CD |
SET 1,L
|
CE |
SET 1,(HL)
|
CF |
SET 1,A
|
|
Opcode |
Mnemonic
|
D0 |
SET 2,B
|
D1 |
SET 2,C
|
D2 |
SET 2,D
|
D3 |
SET 2,E
|
D4 |
SET 2,H
|
D5 |
SET 2,L
|
D6 |
SET 2,(HL)
|
D7 |
SET 2,A
|
|
Opcode |
Mnemonic
|
D8 |
SET 3,B
|
D9 |
SET 3,C
|
DA |
SET 3,D
|
DB |
SET 3,E
|
DC |
SET 3,H
|
DD |
SET 3,L
|
DE |
SET 3,(HL)
|
DF |
SET 3,A
|
|
Opcode |
Mnemonic
|
E0 |
SET 4,B
|
E1 |
SET 4,C
|
E2 |
SET 4,D
|
E3 |
SET 4,E
|
E4 |
SET 4,H
|
E5 |
SET 4,L
|
E6 |
SET 4,(HL)
|
E7 |
SET 4,A
|
|
Opcode |
Mnemonic
|
E8 |
SET 5,B
|
E9 |
SET 5,C
|
EA |
SET 5,D
|
EB |
SET 5,E
|
EC |
SET 5,H
|
ED |
SET 5,L
|
EE |
SET 5,(HL)
|
EF |
SET 5,A
|
|
Opcode |
Mnemonic
|
F0 |
SET 6,B
|
F1 |
SET 6,C
|
F2 |
SET 6,D
|
F3 |
SET 6,E
|
F4 |
SET 6,H
|
F5 |
SET 6,L
|
F6 |
SET 6,(HL)
|
F7 |
SET 6,A
|
|
Opcode |
Mnemonic
|
F8 |
SET 7,B
|
F9 |
SET 7,C
|
FA |
SET 7,D
|
FB |
SET 7,E
|
FC |
SET 7,H
|
FD |
SET 7,L
|
FE |
SET 7,(HL)
|
FF |
SET 7,A
|
|