Advertisement
12Me21

GB emulator notes

Feb 20th, 2017
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. # is literal byte
  2. (n) is memory location n
  3. f._ is flag
  4. 7=z. zero flag. set if the result of an operation is 0
  5. 6=n. subtract flag. set if a subtraction was performed.
  6. 5=h. half carry flag. set if a carry occured from bytes 3 to 4
  7. 4=c. carry flag. set if a carry occurred, or if A is smaller in a compare.
  8.  
  9. rotate right|right. the bit that gets shifted off is put in the new position and into F.c
  10. rotate through F.c: same as rotate but F.c is treated as the 9th bit.
  11. shift: the new postition is set to 0 or unchanged. F.c is set to the value of the lost bit.
  12.  
  13. 00 nothing
  14. 01 BC=##
  15. 02 (BC)=A
  16. 03 BC++
  17. 04 B++
  18. 05 B--
  19. 06 B=n
  20. 07 A<< ‘rotate left
  21. 08 (##)=SP
  22. 09 HL+=BC
  23. 0A A=(BC)
  24. 0B BC--
  25. 0C C++
  26. 0D C--
  27. 0E C=n
  28. 0F A>> ‘rotate right
  29. 10 wait until keypress ‘put 00 after since it skips next instruction
  30. 11 DE=##
  31. 12 (DE)=A
  32. 13 DE++
  33. 14 D++
  34. 15 D--
  35. 16 D=n
  36. 17 A<< ‘rotate left through F.c
  37. 18 PC+=#
  38. 19 HL+=DE
  39. 1A A=(DE)
  40. 1B DE--
  41. 1C E++
  42. 1D E--
  43. 1E E=n
  44. 1F A>> ‘rotate right through F.c
  45. 20 if !F.z PC+=#
  46. 21 HL=##
  47. 22 (HL+)=A
  48. 23 HL++
  49. 24 H++
  50. 25 H--
  51. 26 H=#
  52. 27 DAA ‘bcd related thing
  53. 28 if F.z PC+=#
  54. 29 HL+=HL
  55. 2A A=(HL+)
  56. 2B HL--
  57. 2C L++
  58. 2D L--
  59. 2E L=n
  60. 2F A=~A
  61. 30 if !F.c PC+=#
  62. 31 SP=##
  63. 32 (HL-)=A
  64. 33 SP++
  65. 34 (HL)++
  66. 35 (HL)--
  67. 36 (HL)=n
  68. 37 F.c=1
  69. 38 if F.c PC+=#
  70. 39 HL+=SP
  71. 3A A=(HL--)
  72. 3B SP--
  73. 3C A++
  74. 3D A--
  75. 3E A=#
  76. 3F F.c=!F.c
  77. 40-7F [01|rrr|sss] rrr=sss
  78. 76 wait until interrupt
  79. 80-87 [10|000|rrr] A+=rrr
  80. 88-8F [10|001|rrr] A+=rrr+F.c
  81. 90-97 [10|010|rrr] A-=rrr
  82. 98-9F [10|011|rrr] A-=rrr+F.c
  83. A0-A7 [10|100|rrr] A&=rrr
  84. A8-AF [10|101|rrr] A^=rrr
  85. B0-B7 [10|110|rrr] A|=rrr
  86. B8-BF [10|111|rrr] F.z = A-rrr==0
  87. C0 if !F.z pop PC
  88. C1 pop BC
  89. C2 if !F.z PC=##
  90. C3 PC=##
  91. C4 if !F.z push PC PC=##
  92. C5 push BC
  93. C6 A+=#
  94. C7 push PC PC=00
  95. C8 if F.z pop PC
  96. C9 pop PC
  97. CA if F.z PC=##
  98. CB start of 2 byte opcode
  99. CC if F.z push PC PC=##
  100. CD push PC PC=##
  101. CE A+=#+F.c
  102. CF push PC PC=08
  103. D0 if !F.c pop PC
  104. D1 pop DE
  105. D2 if !F.c PC=##
  106. unused
  107. D4 if !F.c push PC PC=##
  108. D5 push DE
  109. D6 A-=#
  110. D7 PC=10
  111. D8 if F.c pop PC
  112. D9 pop PC enable interrupts
  113. DA if F.c PC=##
  114. unused
  115. DC if F.c push PC PC=##
  116. unused
  117. DE A-=#+F.c
  118. DF push PC PC=18
  119. E0 (#+FF00)=A
  120. E1 pop HL
  121. E2 (C+FF00)=A
  122. unused
  123. unused
  124. E5 push HL
  125. E6 A&=#
  126. E7 push PC PC=20
  127. E8 SP+=#
  128. E9 PC=HL
  129. EA (nn)=A
  130. unused
  131. unused
  132. unused
  133. EE A^=#
  134. EF push PC PC=28
  135. F0 A=(FF00+##)
  136. F1 pop AF
  137. F2 A=(FF00+C) unused?
  138. F3 disable interrupts
  139. unused
  140. F5 push AF
  141. F6 A|=#
  142. F7 push PC PC=30
  143. F8 HL=(SP+##)
  144. F9 SP=HL
  145. FA A=(##)
  146. FB enable interrupts
  147. unused
  148. unused
  149. FE A-#
  150. FF push PC PC=38
  151.  
  152. 2 byte opcodes:
  153.  
  154. 00-07 [00|000|rrr] rotate left
  155. 08-0F [00|001|rrr] rotate right
  156. 10-17 [00|010|rrr] rotate left through F.c
  157. 18-1F [00|011|rrr] rotate right through F.c
  158. 20-27 [00|100|rrr] shift left, fill with 0
  159. 28-2F [00|101|rrr] shift right, don’t change
  160. 30-37 [00|110|rrr] swap nibbles
  161. 38-3F [00|111|rrr] shift right, fill with 0
  162. 40-7F [01|bbb|rrr] F.z=rrr{bbb}==0
  163. 80-BF [10|bbb|rrr] rrr{bbb}=0
  164. C0-FF [11|bbb|rrr] rrr{bbb}=1
  165.  
  166. http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement