Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # is literal byte
- (n) is memory location n
- f._ is flag
- 7=z. zero flag. set if the result of an operation is 0
- 6=n. subtract flag. set if a subtraction was performed.
- 5=h. half carry flag. set if a carry occured from bytes 3 to 4
- 4=c. carry flag. set if a carry occurred, or if A is smaller in a compare.
- rotate right|right. the bit that gets shifted off is put in the new position and into F.c
- rotate through F.c: same as rotate but F.c is treated as the 9th bit.
- shift: the new postition is set to 0 or unchanged. F.c is set to the value of the lost bit.
- 00 nothing
- 01 BC=##
- 02 (BC)=A
- 03 BC++
- 04 B++
- 05 B--
- 06 B=n
- 07 A<< ‘rotate left
- 08 (##)=SP
- 09 HL+=BC
- 0A A=(BC)
- 0B BC--
- 0C C++
- 0D C--
- 0E C=n
- 0F A>> ‘rotate right
- 10 wait until keypress ‘put 00 after since it skips next instruction
- 11 DE=##
- 12 (DE)=A
- 13 DE++
- 14 D++
- 15 D--
- 16 D=n
- 17 A<< ‘rotate left through F.c
- 18 PC+=#
- 19 HL+=DE
- 1A A=(DE)
- 1B DE--
- 1C E++
- 1D E--
- 1E E=n
- 1F A>> ‘rotate right through F.c
- 20 if !F.z PC+=#
- 21 HL=##
- 22 (HL+)=A
- 23 HL++
- 24 H++
- 25 H--
- 26 H=#
- 27 DAA ‘bcd related thing
- 28 if F.z PC+=#
- 29 HL+=HL
- 2A A=(HL+)
- 2B HL--
- 2C L++
- 2D L--
- 2E L=n
- 2F A=~A
- 30 if !F.c PC+=#
- 31 SP=##
- 32 (HL-)=A
- 33 SP++
- 34 (HL)++
- 35 (HL)--
- 36 (HL)=n
- 37 F.c=1
- 38 if F.c PC+=#
- 39 HL+=SP
- 3A A=(HL--)
- 3B SP--
- 3C A++
- 3D A--
- 3E A=#
- 3F F.c=!F.c
- 40-7F [01|rrr|sss] rrr=sss
- 76 wait until interrupt
- 80-87 [10|000|rrr] A+=rrr
- 88-8F [10|001|rrr] A+=rrr+F.c
- 90-97 [10|010|rrr] A-=rrr
- 98-9F [10|011|rrr] A-=rrr+F.c
- A0-A7 [10|100|rrr] A&=rrr
- A8-AF [10|101|rrr] A^=rrr
- B0-B7 [10|110|rrr] A|=rrr
- B8-BF [10|111|rrr] F.z = A-rrr==0
- C0 if !F.z pop PC
- C1 pop BC
- C2 if !F.z PC=##
- C3 PC=##
- C4 if !F.z push PC PC=##
- C5 push BC
- C6 A+=#
- C7 push PC PC=00
- C8 if F.z pop PC
- C9 pop PC
- CA if F.z PC=##
- CB start of 2 byte opcode
- CC if F.z push PC PC=##
- CD push PC PC=##
- CE A+=#+F.c
- CF push PC PC=08
- D0 if !F.c pop PC
- D1 pop DE
- D2 if !F.c PC=##
- unused
- D4 if !F.c push PC PC=##
- D5 push DE
- D6 A-=#
- D7 PC=10
- D8 if F.c pop PC
- D9 pop PC enable interrupts
- DA if F.c PC=##
- unused
- DC if F.c push PC PC=##
- unused
- DE A-=#+F.c
- DF push PC PC=18
- E0 (#+FF00)=A
- E1 pop HL
- E2 (C+FF00)=A
- unused
- unused
- E5 push HL
- E6 A&=#
- E7 push PC PC=20
- E8 SP+=#
- E9 PC=HL
- EA (nn)=A
- unused
- unused
- unused
- EE A^=#
- EF push PC PC=28
- F0 A=(FF00+##)
- F1 pop AF
- F2 A=(FF00+C) unused?
- F3 disable interrupts
- unused
- F5 push AF
- F6 A|=#
- F7 push PC PC=30
- F8 HL=(SP+##)
- F9 SP=HL
- FA A=(##)
- FB enable interrupts
- unused
- unused
- FE A-#
- FF push PC PC=38
- 2 byte opcodes:
- 00-07 [00|000|rrr] rotate left
- 08-0F [00|001|rrr] rotate right
- 10-17 [00|010|rrr] rotate left through F.c
- 18-1F [00|011|rrr] rotate right through F.c
- 20-27 [00|100|rrr] shift left, fill with 0
- 28-2F [00|101|rrr] shift right, don’t change
- 30-37 [00|110|rrr] swap nibbles
- 38-3F [00|111|rrr] shift right, fill with 0
- 40-7F [01|bbb|rrr] F.z=rrr{bbb}==0
- 80-BF [10|bbb|rrr] rrr{bbb}=0
- C0-FF [11|bbb|rrr] rrr{bbb}=1
- http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement