⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgbcpu.java

📁 一个用java写成的gb模拟器的源代码。
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
							bit(6, DE.getH());
							cv = 8; 
							break;
						case 0x73: // BIT  6,E
							bit(6, DE.getL());
							cv = 8; 
							break;
						case 0x74: // BIT  6,H
							bit(6, HL.getH());
							cv = 8; 
							break;
						case 0x75: // BIT  6,L
							bit(6, HL.getL());
							cv = 8; 
							break;
						case 0x76: // BIT  6,(HL)
							bit(6, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x77: // BIT  6,A
							bit(6, AF.getH());
							cv = 8; 
							break;
						case 0x78: // BIT  7,B
							bit(7, BC.getH());
							cv = 8; 
							break;
						case 0x79: // BIT  7,C
							bit(7, BC.getL());
							cv = 8; 
							break;
						case 0x7A: // BIT  7,D
							bit(7, DE.getH());
							cv = 8; 
							break;
						case 0x7B: // BIT  7,E
							bit(7, DE.getL());
							cv = 8; 
							break;
						case 0x7C: // BIT  7,H
							bit(7, HL.getH());
							cv = 8; 
							break;
						case 0x7D: // BIT  7,L
							bit(7, HL.getL());
							cv = 8; 
							break;
						case 0x7E: // BIT  7,(HL)
							bit(7, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x7F: // BIT  7,A
							bit(7, AF.getH());
							cv = 8; 
							break;
						case 0x80: // RES  0,B
							resH(0, BC);
							cv = 8; 
							break;
						case 0x81: // RES  0,C
							resL(0, BC);
							cv = 8; 
							break;
						case 0x82: // RES  0,D
							resH(0, DE);
							cv = 8; 
							break;
						case 0x83: // RES  0,E
							resL(0, DE);
							cv = 8; 
							break;
						case 0x84: // RES  0,H
							resH(0, HL);
							cv = 8; 
							break;
						case 0x85: // RES  0,L
							resL(0, HL);
							cv = 8; 
							break;
						case 0x86: // RES  0,(HL)
							resI(0, HL.getR()); 
							cv = 16; 
							break;
						case 0x87: // RES  0,A
							resH(0, AF);
							cv = 8; 
							break;
						case 0x88: // RES  1,B
							resH(1, BC);
							cv = 8; 
							break;
						case 0x89: // RES  1,C
							resL(1, BC);
							cv = 8; 
							break;
						case 0x8A: // RES  1,D
							resH(1, DE);
							cv = 8; 
							break;
						case 0x8B: // RES  1,E
							resL(1, DE);
							cv = 8; 
							break;
						case 0x8C: // RES  1,H
							resH(1, HL);
							cv = 8; 
							break;
						case 0x8D: // RES  1,L
							resL(1, HL);
							cv = 8; 
							break;
						case 0x8E: // RES  1,(HL)
							resI(1, HL.getR()); 
							cv = 16; 
							break;
						case 0x8F: // RES  1,A
							resH(1, AF);
							cv = 8; 
							break;
						case 0x90: // RES  2,B
							resH(2, BC);
							cv = 8; 
							break;
						case 0x91: // RES  2,C
							resL(2, BC);
							cv = 8; 
							break;
						case 0x92: // RES  2,D
							resH(2, DE);
							cv = 8; 
							break;
						case 0x93: // RES  2,E
							resL(2, DE);
							cv = 8; 
							break;
						case 0x94: // RES  2,H
							resH(2, HL);
							cv = 8; 
							break;
						case 0x95: // RES  2,L
							resL(2, HL);
							cv = 8; 
							break;
						case 0x96: // RES  2,(HL)
							resI(2, HL.getR()); 
							cv = 16; 
							break;
						case 0x97: // RES  2,A
							resH(2, AF);
							cv = 8; 
							break;
						case 0x98: // RES  3,B
							resH(3, BC);
							cv = 8; 
							break;
						case 0x99: // RES  3,C
							resL(3, BC);
							cv = 8; 
							break;
						case 0x9A: // RES  3,D
							resH(3, DE);
							cv = 8; 
							break;
						case 0x9B: // RES  3,E
							resL(3, DE);
							cv = 8; 
							break;
						case 0x9C: // RES  3,H
							resH(3, HL);
							cv = 8; 
							break;
						case 0x9D: // RES  3,L
							resL(3, HL);
							cv = 8; 
							break;
						case 0x9E: // RES  3,(HL)
							resI(3, HL.getR()); 
							cv = 16; 
							break;
						case 0x9F: // RES  3,A
							resH(3, AF);
							cv = 8; 
							break;
						case 0xA0: // RES  4,B
							resH(4, BC);
							cv = 8; 
							break;
						case 0xA1: // RES  4,C
							resL(4, BC);
							cv = 8; 
							break;
						case 0xA2: // RES  4,D
							resH(4, DE);
							cv = 8; 
							break;
						case 0xA3: // RES  4,E
							resL(4, DE);
							cv = 8; 
							break;
						case 0xA4: // RES  4,H
							resH(4, HL);
							cv = 8; 
							break;
						case 0xA5: // RES  4,L
							resL(4, HL);
							cv = 8; 
							break;
						case 0xA6: // RES  4,(HL)
							resI(4, HL.getR()); 
							cv = 16; 
							break;
						case 0xA7: // RES  4,A
							resH(4, AF);
							cv = 8; 
							break;
						case 0xA8: // RES  5,B
							resH(5, BC);
							cv = 8; 
							break;
						case 0xA9: // RES  5,C
							resL(5, BC);
							cv = 8; 
							break;
						case 0xAA: // RES  5,D
							resH(5, DE);
							cv = 8; 
							break;
						case 0xAB: // RES  5,E
							resL(5, DE);
							cv = 8; 
							break;
						case 0xAC: // RES  5,H
							resH(5, HL);
							cv = 8; 
							break;
						case 0xAD: // RES  5,L
							resL(5, HL);
							cv = 8; 
							break;
						case 0xAE: // RES  5,(HL)
							resI(5, HL.getR()); 
							cv = 16; 
							break;
						case 0xAF: // RES  5,A
							resH(5, AF);
							cv = 8; 
							break;
						case 0xB0: // RES  6,B
							resH(6, BC);
							cv = 8; 
							break;
						case 0xB1: // RES  6,C
							resL(6, BC);
							cv = 8; 
							break;
						case 0xB2: // RES  6,D
							resH(6, DE);
							cv = 8; 
							break;
						case 0xB3: // RES  6,E
							resL(6, DE);
							cv = 8; 
							break;
						case 0xB4: // RES  6,H
							resH(6, HL);
							cv = 8; 
							break;
						case 0xB5: // RES  6,L
							resL(6, HL);
							cv = 8; 
							break;
						case 0xB6: // RES  6,(HL)
							resI(6, HL.getR()); 
							cv = 16; 
							break;
						case 0xB7: // RES  6,A
							resH(6, AF);
							cv = 8; 
							break;
						case 0xB8: // RES  7,B
							resH(7, BC);
							cv = 8; 
							break;
						case 0xB9: // RES  7,C
							resL(7, BC);
							cv = 8; 
							break;
						case 0xBA: // RES  7,D
							resH(7, DE);
							cv = 8; 
							break;
						case 0xBB: // RES  7,E
							resL(7, DE);
							cv = 8; 
							break;
						case 0xBC: // RES  7,H
							resH(7, HL);
							cv = 8; 
							break;
						case 0xBD: // RES  7,L
							resL(7, HL);
							cv = 8; 
							break;
						case 0xBE: // RES  7,(HL)
							resI(7, HL.getR()); 
							cv = 16; 
							break;
						case 0xBF: // RES  7,A
							resH(7, AF);
							cv = 8; 
							break;
						case 0xC0: // SET  0,B
							setH(0, BC);
							cv = 8; 
							break;
						case 0xC1: // SET  0,C
							setL(0, BC);
							cv = 8; 
							break;
						case 0xC2: // SET  0,D
							setH(0, DE);
							cv = 8; 
							break;
						case 0xC3: // SET  0,E
							setL(0, DE);
							cv = 8; 
							break;
						case 0xC4: // SET  0,H
							setH(0, HL);
							cv = 8; 
							break;
						case 0xC5: // SET  0,L
							setL(0, HL);
							cv = 8; 
							break;
						case 0xC6: // SET  0,(HL)
							setI(0, HL.getR()); 
							cv = 16; 
							break;
						case 0xC7: // SET  0,A
							setH(0, AF);
							cv = 8; 
							break;
						case 0xC8: // SET  1,B
							setH(1, BC);
							cv = 8; 
							break;
						case 0xC9: // SET  1,C
							setL(1, BC);
							cv = 8; 
							break;
						case 0xCA: // SET  1,D
							setH(1, DE);
							cv = 8; 
							break;
						case 0xCB: // SET  1,E
							setL(1, DE);
							cv = 8; 
							break;
						case 0xCC: // SET  1,H
							setH(1, HL);
							cv = 8; 
							break;
						case 0xCD: // SET  1,L
							setL(1, HL);
							cv = 8; 
							break;
						case 0xCE: // SET  1,(HL)
							setI(1, HL.getR()); 
							cv = 8; 
							break;
						case 0xCF: // SET  1,A
							setH(1, AF);
							cv = 8; 
							break;
						case 0xD0: // SET  2,B
							setH(2, BC);
							cv = 8; 
							break;
						case 0xD1: // SET  2,C
							setL(2, BC);
							cv = 8; 
							break;
						case 0xD2: // SET  2,D
							setH(2, DE);
							cv = 8; 
							break;
						case 0xD3: // SET  2,E
							setL(2, DE);
							cv = 8; 
							break;
						case 0xD4: // SET  2,H
							setH(2, HL);
							cv = 8; 
							break;
						case 0xD5: // SET  2,L
							setL(2, HL);
							cv = 8; 
							break;
						case 0xD6: // SET  2,(HL)
							setI(2, HL.getR()); 
							cv = 16; 
							break;
						case 0xD7: // SET  2,A
							setH(2, AF);
							cv = 8; 
							break;
						case 0xD8: // SET  3,B
							setH(3, BC);
							cv = 8; 
							break;
						case 0xD9: // SET  3,C
							setL(3, BC);
							cv = 8; 
							break;
						case 0xDA: // SET  3,D
							setH(3, DE);
							cv = 8; 
							break;
						case 0xDB: // SET  3,E
							setL(3, DE);
							cv = 8; 
							break;
						case 0xDC: // SET  3,H
							setH(3, HL);
							cv = 8; 
							break;
						case 0xDD: // SET  3,L
							setL(3, HL);
							cv = 8; 
							break;
						case 0xDE: // SET  3,(HL)
							setI(3, HL.getR()); 
							cv = 16; 
							break;
						case 0xDF: // SET  3,A
							setH(3, AF);
							cv = 8; 
							break;
						case 0xE0: // SET  4,B
							setH(4, BC);
							cv = 8; 
							break;
						case 0xE1: // SET  4,C
							setL(4, BC);
							cv = 8; 
							break;
						case 0xE2: // SET  4,D
							setH(4, DE);
							cv = 8; 
							break;
						case 0xE3: // SET  4,E
							setL(4, DE);
							cv = 8; 
							break;
						case 0xE4: // SET  4,H
							setH(4, HL);
							cv = 8; 
							break;
						case 0xE5: // SET  4,L
							setL(4, HL);
							cv = 8; 
							break;
						case 0xE6: // SET  4,(HL)
							setI(4, HL.getR()); 
							cv = 16; 
							break;
						case 0xE7: // SET  4,A
							setH(4, AF);
							cv = 8; 
							break;
						case 0xE8: // SET  5,B
							setH(5, BC);
							cv = 8; 
							break;
						case 0xE9: // SET  5,C
							setL(5, BC);
							cv = 8; 
							break;
						case 0xEA: // SET  5,D
							setH(5, DE);
							cv = 8; 
							break;
						case 0xEB: // SET  5,E
							setL(5, DE);
							cv = 8; 
							break;
						case 0xEC: // SET  5,H
							setH(5, HL);
							cv = 8; 
							break;
						case 0xED: // SET  5,L
							setL(5, HL);
							cv = 8; 
							break;
						case 0xEE: // SET  5,(HL)
							setI(5, HL.getR()); 
							cv = 16; 
							break;
						case 0xEF: // SET  5,A
							setH(5, AF);
							cv = 8; 
							break;
						case 0xF0: // SET  6,B
							setH(6, BC);
							cv = 8; 
							break;
						case 0xF1: // SET  6,C
							setL(6, BC);
							cv = 8; 
							break;
						case 0xF2: // SET  6,D
							setH(6, DE);
							cv = 8; 
							break;
						case 0xF3: // SET  6,E
							setL(6, DE);
							cv = 8; 
							break;
						case 0xF4: // SET  6,H
							setH(6, HL);
							cv = 8; 
							break;
						case 0xF5: // SET  6,L
							setL(6, HL);
							cv = 8; 
							break;
						case 0xF6: // SET  6,(HL)
							setI(6, HL.getR()); 
							cv = 16; 
							break;
						case 0xF7: // SET  6,A
							setH(6, AF);
							cv = 8; 
							break;
						case 0xF8: // SET  7,B
							setH(7, BC);
							cv = 8; 
							break;
						case 0xF9: // SET  7,C
							setL(7, BC);
							cv = 8; 
							break;
						case 0xFA: // SET  7,D
							setH(7, DE);
							cv = 8; 
							break;
						case 0xFB: // SET  7,E
							setL(7, DE);
							cv = 8; 
							break;
						case 0xFC: // SET  7,H
							setH(7, HL);
							cv = 8; 
							break;
						case 0xFD: // SET  7,L
							setL(7, HL);
							cv = 8; 
							break;
						case 0xFE: // SET  7,(HL)
							setI(7, HL.getR()); 
							cv = 16; 
							break;
						case 0xFF: // SET  7,A
							setH(7, AF);
							cv = 8; 
							break;
						default:
							//cv = cbcodes[b].exec();
							unsupportedCB(b);
							cv = 4;
					}
					break;
				case 0xCC: // CALL Z,nnnn
					if(getZ()) {
						call(readWord());
						cv = 24;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xCD: // CALL nnnn
					call(readWord());
					cv = 24;
					break;
				case 0xCE: // ADC  A,nn
					adc(readByte());
					cv = 8;
					break;
				case 0xCF: // RST  8H
					rst(0x8);
					cv = 16;
					break;
				case 0xD0: // RET  NC
					if(!getC()) {
						ret();
						cv = 20;
					} else {
						cv = 8;
					}
					break;
				case 0xD1: // POP  DE
					pop(DE);
					cv = 10;
					break;
				case 0xD2: // JP   NC,nnnn
					if(!getC()) {
						jp(readWord());
						cv = 20;
					} else {
						readWord();
						cv = 8;
					}
					break;
				case 0xD3: // -
					unsupported(0xD3);
					cv = 4;
					break;
				case 0xD4: // CALL NC,nnnn
					if(!getC()) {
						call(readWord());
						cv = 24;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xD5: // PUSH DE
					push(DE);
					cv = 16;
					break;
				case 0xD6: // SUB  nn
					sub(readByte());
					cv = 8;
					break;
				case 0xD7: // RST  10h
					rst(0x10);
					cv = 16;
					break;
				case 0xD8: // RET  C
					if(getC()) {
						ret();
						cv = 20;
					} else {
						cv = 8;
					}
					break;
				case 0xD9: // RETI
					ret();
					ei();
					cv = 16;
					break;
				case 0xDA: // JP   C,nnnn
					if(getC()) {
						jp(readWord());
						cv = 16;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xDB: // -
					unsupported(0xDB);
					cv = 4;
					break;
				case 0xDC: // CALL C,nnnn
					if(getC()) {
						call(readWord());
						cv = 24;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xDD: // -
					unsupported(0xDD);
					cv = 4;
					break;
				case 0xDE: // SBC  A,nn
					sbc(readByte());
					cv = 8;
					break;
				case 0xDF: // RST  18h
					rst(0x18);
					cv = 16;
					break;
				case 0xE0: // LD   ($FF00+nn),A
					mem.write(0xFF00 + readByte(), AF.getH());
					cv = 12;
					break;
				case 0xE1: // POP  HL
					pop(HL);
					cv = 12;
					break;
				case 0xE2: // LD   ($FF00+C),A
					mem.write(0xFF00 + BC.getL(), AF.getH());
					cv = 8;
					break;
				case 0xE3: // -
					unsupported(0xE3);
					cv = 4;
					break;
				case 0xE4: // -
					unsupported(0xE4);
					cv = 4;
					break;
				case 0xE5: // PUSH HL
					push(HL);
					cv = 16;
					break;
				case 0xE6: // AND  nn
					and(readByte());
					cv = 8;
					break;
				case 0xE7: // RST  20h
					rst(0x20);
					cv = 16;
					break;
				case 0xE8: // ADD  SP,dd
					SP.setR(SP.getR() + (byte)readByte());
					setZ(false);
					cv = 16;
					break;
				case 0xE9: // JP   (HL)
					jp(HL.getR());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -