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

📄 pgbcpu.java

📁 一个用java写成的gb模拟器的源代码。
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
				case 0x8F: // ADC A,A
					adc(AF.getH());
					cv = 4;
					break;
				case 0x90: // SUB  B
					sub(BC.getH());
					cv = 4;
					break;
				case 0x91: // SUB  C
					sub(BC.getL());
					cv = 4;
					break;
				case 0x92: // SUB  D
					sub(DE.getH());
					cv = 4;
					break;
				case 0x93: // SUB  E
					sub(DE.getL());
					cv = 4;
					break;
				case 0x94: // SUB  H
					sub(HL.getH());
					cv = 4;
					break;
				case 0x95: // SUB  L
					sub(HL.getL());
					cv = 4;
					break;
				case 0x96: // SUB  (HL)
					sub(HL.getI(mem));
					cv = 8;
					break;
				case 0x97: // SUB  A
					sub(AF.getH());
					cv = 4;
					break;
				case 0x98: // SBC  A,B
					sbc(BC.getH());
					cv = 4;
					break;
				case 0x99: // SBC  A,C
					sbc(BC.getL());
					cv = 4;
					break;
				case 0x9A: // SBC  A,D
					sbc(DE.getH());
					cv = 4;
					break;
				case 0x9B: // SBC  A,E
					sbc(DE.getL());
					cv = 4;
					break;
				case 0x9C: // SBC  A,H
					sbc(HL.getH());
					cv = 4;
					break;
				case 0x9D: // SBC  A,L
					sbc(HL.getL());
					cv = 4;
					break;
				case 0x9E: // SBC  A,(HL)
					sbc(HL.getI(mem));
					cv = 8;
					break;
				case 0x9F: // SBC  A,A
					sbc(AF.getH());
					cv = 4;
					break;
				case 0xA0: // AND  B
					and(BC.getH());
					cv = 4;
					break;
				case 0xA1: // AND  C
					and(BC.getL());
					cv = 4;
					break;
				case 0xA2: // AND  D
					and(DE.getH());
					cv = 4;
					break;
				case 0xA3: // AND  E
					and(DE.getL());
					cv = 4;
					break;
				case 0xA4: // AND  H
					and(HL.getH());
					cv = 4;
					break;
				case 0xA5: // AND  L
					and(HL.getL());
					cv = 4;
					break;
				case 0xA6: // AND  (HL)
					and(HL.getI(mem));
					cv = 8;
					break;
				case 0xA7: // AND  A
					and(AF.getH());
					cv = 4;
					break;
				case 0xA8: // XOR  B
					xor(BC.getH());
					cv = 4;
					break;
				case 0xA9: // XOR  C
					xor(BC.getL());
					cv = 4;
					break;
				case 0xAA: // XOR  D
					xor(DE.getH());
					cv = 4;
					break;
				case 0xAB: // XOR  E
					xor(DE.getL());
					cv = 4;
					break;
				case 0xAC: // XOR  H
					xor(HL.getH());
					cv = 4;
					break;
				case 0xAD: // XOR  L
					xor(HL.getL());
					cv = 4;
					break;
				case 0xAE: // XOR  (HL)
					xor(HL.getI(mem));
					cv = 8;
					break;
				case 0xAF: // XOR  A
					xor(AF.getH());
					cv = 4;
					break;
				case 0xB0: // OR   B
					or(BC.getH());
					cv = 4;
					break;
				case 0xB1: // OR   C
					or(BC.getL());
					cv = 4;
					break;
				case 0xB2: // OR   D
					or(DE.getH());
					cv = 4;
					break;
				case 0xB3: // OR   E
					or(DE.getL());
					cv = 4;
					break;
				case 0xB4: // OR   H
					or(HL.getH());
					cv = 4;
					break;
				case 0xB5: // OR   L
					or(HL.getL());
					cv = 4;
					break;
				case 0xB6: // OR   (HL)
					or(HL.getI(mem));
					cv = 8;
					break;
				case 0xB7: // OR   A
					or(AF.getH());
					cv = 4;
					break;
				case 0xB8: // CP   B
					cp(BC.getH());
					cv = 4;
					break;
				case 0xB9: // CP   C
					cp(BC.getL());
					cv = 4;
					break;
				case 0xBA: // CP   D
					cp(DE.getH());
					cv = 4;
					break;
				case 0xBB: // CP   E
					cp(DE.getL());
					cv = 4;
					break;
				case 0xBC: // CP   H
					cp(HL.getH());
					cv = 4;
					break;
				case 0xBD: // CP   L
					cp(HL.getL());
					cv = 4;
					break;
				case 0xBE: // CP   (HL)
					cp(HL.getI(mem));
					cv = 8;
					break;
				case 0xBF: // CP   A
					cp(AF.getH());
					cv = 4;
					break;
				case 0xC0: // RET  NZ
					if(!getZ()) {
						ret();
						cv = 20;
					} else {
						cv = 8;
					}
					break;
				case 0xC1: // POP  BC
					pop(BC);
					cv = 12;
					break;
				case 0xC2: // JP   NZ,nnnn
					if(!getZ()) {
						jp(readWord());
						cv = 16;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xC3: // JP nnnn
					jp(readWord());
					cv = 16;
					break;
				case 0xC4: // CALL NZ,nnnn
					if(!getZ()) {
						call(readWord());
						cv = 24;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xC5: // PUSH BC
					push(BC);
					cv = 16;
					break;
				case 0xC6: // ADD  A,nn
					add(readByte());
					cv = 8;
					break;
				case 0xC7: // RST  0H
					rst(0x0);
					cv = 16;
					break;
				case 0xC8: // RET  Z
					if(getZ()) {
						ret();
						cv = 20;
					} else {
						cv = 8;
					}
					break;
				case 0xC9: // RET
					ret();
					cv = 16;
					break;
				case 0xCA: // JP   Z,nnnn
					if(getZ()) {
						jp(readWord());
						cv = 16;
					} else {
						readWord();
						cv = 12;
					}
					break;
				case 0xCB: // -- special --
					int b = readByte();
					if (PgbSettings.DEBUG)
						System.out.println("0xCB, executing SubOpCode 0x" + Integer.toHexString(b));
					//cv = cbcodes[b].exec();
					switch(b) {
						case 0x00: // RLC  B
							rlcH(BC);
							cv = 8; 
							break;
						case 0x01: // RLC  C
							rlcL(BC);
							cv = 8;
							break;
						case 0x02: // RLC  D
							rlcH(DE);
							cv = 8;
							break;
						case 0x03: // RLC  E
							rlcL(DE);
							cv = 8;
							break;
						case 0x04: // RLC  H
							rlcH(HL);
							cv = 8;
							break;
						case 0x05: // RLC  L
							rlcL(HL);
							cv = 8; 
							break;
						case 0x06: // RLC  (HL)
							rlcI(HL.getR()); 
							cv = 16; 
							break;
						case 0x07: // RLC  A
							rlcH(AF);
							cv = 8; 
							break;
						case 0x08: // RRC  B
							rrcH(BC);
							cv = 8; 
							break;
						case 0x09: // RRC  C
							rrcL(BC);
							cv = 8; 
							break;
						case 0x0A: // RRC  D
							rrcH(DE);
							cv = 8; 
							break;
						case 0x0B: // RRC  E
							rrcL(DE);
							cv = 8; 
							break;
						case 0x0C: // RRC  H
							rrcH(HL);
							cv = 8; 
							break;
						case 0x0D: // RRC  L
							rrcL(HL);
							cv = 8; 
							break;
						case 0x0E: // RRC  (HL)
							rrcI(HL.getR()); 
							cv = 16; 
							break;
						case 0x0F: // RRC  A
							rrcH(AF);
							cv = 8; 
							break;
						case 0x10: // RL   B
							rlH(BC);
							cv = 8; 
							break;
						case 0x11: // RL   C
							rlL(BC);
							cv = 8; 
							break;
						case 0x12: // RL   D
							rlH(DE);
							cv = 8; 
							break;
						case 0x13: // RL   E
							rlL(DE);
							cv = 8; 
							break;
						case 0x14: // RL   H
							rlH(HL);
							cv = 8; 
							break;
						case 0x15: // RL   L
							rlL(HL);
							cv = 8; 
							break;
						case 0x16: // RL   (HL)
							rlI(HL.getR()); 
							cv = 16; 
							break;
						case 0x17: // RL   A
							rlH(AF);
							cv = 8; 
							break;
						case 0x18: // RR   B
							rrH(BC);
							cv = 8; 
							break;
						case 0x19: // RR   C
							rrL(BC);
							cv = 8; 
							break;
						case 0x1A: // RR   D
							rrH(DE);
							cv = 8; 
							break;
						case 0x1B: // RR   E
							rrL(DE);
							cv = 8; 
							break;
						case 0x1C: // RR   H
							rrH(HL);
							cv = 8; 
							break;
						case 0x1D: // RR   L
							rrL(HL);
							cv = 8; 
							break;
						case 0x1E: // RR   (HL)
							rrI(HL.getR()); 
							cv = 16; 
							break;
						case 0x1F: // RR   A
							rrH(AF);
							cv = 8; 
							break;
						case 0x20: // SLA  B
							slaH(BC);
							cv = 8; 
							break;
						case 0x21: // SLA  C
							slaL(BC);
							cv = 8; 
							break;
						case 0x22: // SLA  D
							slaH(DE);
							cv = 8; 
							break;
						case 0x23: // SLA  E
							slaL(DE);
							cv = 8; 
							break;
						case 0x24: // SLA  H
							slaH(HL);
							cv = 8; 
							break;
						case 0x25: // SLA  L
							slaL(HL);
							cv = 8; 
							break;
						case 0x26: // SLA  (HL)
							slaI(HL.getR()); 
							cv = 16; 
							break;
						case 0x27: // SLA  A
							slaH(AF);
							cv = 8; 
							break;
						case 0x28: // SRA  B
							sraH(BC);
							cv = 8; 
							break;
						case 0x29: // SRA  C
							sraL(BC);
							cv = 8; 
							break;
						case 0x2A: // SRA  D
							sraH(DE);
							cv = 8; 
							break;
						case 0x2B: // SRA  E
							sraL(DE);
							cv = 8; 
							break;
						case 0x2C: // SRA  H
							sraH(HL);
							cv = 8; 
							break;
						case 0x2D: // SRA  L
							sraL(HL);
							cv = 8; 
							break;
						case 0x2E: // SRA  (HL)
							sraI(HL.getR()); 
							cv = 16; 
							break;
						case 0x2F: // SRA  A
							sraH(AF);
							cv = 8; 
							break;
						case 0x30: // SWAP B
							swapH(BC);
							cv = 8; 
							break;
						case 0x31: // SWAP C
							swapL(BC);
							cv = 8; 
							break;
						case 0x32: // SWAP D
							swapH(DE);
							cv = 8; 
							break;
						case 0x33: // SWAP E
							swapL(DE);
							cv = 8; 
							break;
						case 0x34: // SWAP H
							swapH(HL);
							cv = 8; 
							break;
						case 0x35: // SWAP L
							swapL(HL);
							cv = 8; 
							break;
						case 0x36: // SWAP (HL)
							swapI(HL.getR()); 
							cv = 16; 
							break;
						case 0x37: // SWAP A
							swapH(AF);
							cv = 8; 
							break;
						case 0x38: // SRL  B
							srlH(BC);
							cv = 8; 
							break;
						case 0x39: // SRL  C
							srlL(BC);
							cv = 8; 
							break;
						case 0x3A: // SRL  D
							srlH(DE);
							cv = 8; 
							break;
						case 0x3B: // SRL  E
							srlL(DE);
							cv = 8; 
							break;
						case 0x3C: // SRL  H
							srlH(HL);
							cv = 8; 
							break;
						case 0x3D: // SRL  L
							srlL(HL);
							cv = 8; 
							break;
						case 0x3E: // SRL  (HL)
							srlI(HL.getR()); 
							cv = 16; 
							break;
						case 0x3F: // SRL  A
							srlH(AF);
							cv = 8; 
							break;
						case 0x40: // BIT  0,B
							bit(0, BC.getH());
							cv = 8; 
							break;
						case 0x41: // BIT  0,C
							bit(0, BC.getL());
							cv = 8; 
							break;
						case 0x42: // BIT  0,D
							bit(0, DE.getH());
							cv = 8; 
							break;
						case 0x43: // BIT  0,E
							bit(0, DE.getL());
							cv = 8; 
							break;
						case 0x44: // BIT  0,H
							bit(0, HL.getH());
							cv = 8; 
							break;
						case 0x45: // BIT  0,L
							bit(0, HL.getL());
							cv = 8; 
							break;
						case 0x46: // BIT  0,(HL)
							bit(0, HL.getI(mem));
							cv = 16; 
							break;
						case 0x47: // BIT  0,A
							bit(0, AF.getH());
							cv = 8; 
							break;
						case 0x48: // BIT  1,B
							bit(1, BC.getH());
							cv = 8; 
							break;
						case 0x49: // BIT  1,C
							bit(1, BC.getL());
							cv = 8; 
							break;
						case 0x4A: // BIT  1,D
							bit(1, DE.getH());
							cv = 8; 
							break;
						case 0x4B: // BIT  1,E
							bit(1, DE.getL());
							cv = 8; 
							break;
						case 0x4C: // BIT  1,H
							bit(1, HL.getH());
							cv = 8; 
							break;
						case 0x4D: // BIT  1,L
							bit(1, HL.getL());
							cv = 8; 
							break;
						case 0x4E: // BIT  1,(HL)
							bit(1, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x4F: // BIT  1,A
							bit(1, AF.getH());
							cv = 8; 
							break;
						case 0x50: // BIT  2,B
							bit(2, BC.getH());
							cv = 8; 
							break;
						case 0x51: // BIT  2,C
							bit(2, BC.getL());
							cv = 8; 
							break;
						case 0x52: // BIT  2,D
							bit(2, DE.getH());
							cv = 8; 
							break;
						case 0x53: // BIT  2,E
							bit(2, DE.getL());
							cv = 8; 
							break;
						case 0x54: // BIT  2,H
							bit(2, HL.getH());
							cv = 8; 
							break;
						case 0x55: // BIT  2,L
							bit(2, HL.getL());
							cv = 8; 
							break;
						case 0x56: // BIT  2,(HL)
							bit(2, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x57: // BIT  2,A
							bit(2, AF.getH());
							cv = 8; 
							break;
						case 0x58: // BIT  3,B
							bit(3, BC.getH());
							cv = 8; 
							break;
						case 0x59: // BIT  3,C
							bit(3, BC.getL());
							cv = 8; 
							break;
						case 0x5A: // BIT  3,D
							bit(3, DE.getH());
							cv = 8; 
							break;
						case 0x5B: // BIT  3,E
							bit(3, DE.getL());
							cv = 8; 
							break;
						case 0x5C: // BIT  3,H
							bit(3, HL.getH());
							cv = 8; 
							break;
						case 0x5D: // BIT  3,L
							bit(3, HL.getL());
							cv = 8; 
							break;
						case 0x5E: // BIT  3,(HL)
							bit(3, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x5F: // BIT  3,A
							bit(3, AF.getH());
							cv = 8; 
							break;
						case 0x60: // BIT  4,B
							bit(4, BC.getH());
							cv = 8; 
							break;
						case 0x61: // BIT  4,C
							bit(4, BC.getL());
							cv = 8; 
							break;
						case 0x62: // BIT  4,D
							bit(4, DE.getH());
							cv = 8; 
							break;
						case 0x63: // BIT  4,E
							bit(4, DE.getL());
							cv = 8; 
							break;
						case 0x64: // BIT  4,H
							bit(4, HL.getH());
							cv = 8; 
							break;
						case 0x65: // BIT  4,L
							bit(4, HL.getL());
							cv = 8; 
							break;
						case 0x66: // BIT  4,(HL)
							bit(4, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x67: // BIT  4,A
							bit(4, AF.getH());
							cv = 8; 
							break;
						case 0x68: // BIT  5,B
							bit(5, BC.getH());
							cv = 8; 
							break;
						case 0x69: // BIT  5,C
							bit(5, BC.getL());
							cv = 8; 
							break;
						case 0x6A: // BIT  5,D
							bit(5, DE.getH());
							cv = 8; 
							break;
						case 0x6B: // BIT  5,E
							bit(5, DE.getL());
							cv = 8; 
							break;
						case 0x6C: // BIT  5,H
							bit(5, HL.getH());
							cv = 8; 
							break;
						case 0x6D: // BIT  5,L
							bit(5, HL.getL());
							cv = 8; 
							break;
						case 0x6E: // BIT  5,(HL)
							bit(5, HL.getI(mem)); 
							cv = 16; 
							break;
						case 0x6F: // BIT  5,A
							bit(5, AF.getH());
							cv = 8; 
							break;
						case 0x70: // BIT  6,B
							bit(6, BC.getH());
							cv = 8; 
							break;
						case 0x71: // BIT  6,C
							bit(6, BC.getL());
							cv = 8; 
							break;
						case 0x72: // BIT  6,D

⌨️ 快捷键说明

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