Skip to content

Trying to write a gb emulator to prepare me for nds emulation

Notifications You must be signed in to change notification settings

hxhelm/gb-emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GEDSE

A Gameboy Emulator that (hopefully) prepares me for NDS Emulation.

This is a WIP without a concrete idea in mind, just learning as I go.

TODOs

CPU Opcodes Implementation Checklist

Core Instructions (0x00-0xFF)
  • 0x00, NOP: 1B, 4C, Flags: - - - -
  • 0x01, LD BC,n16: 3B, 12C, Flags: - - - -
  • 0x02, LD (BC),A: 1B, 8C, Flags: - - - -
  • 0x03, INC BC: 1B, 8C, Flags: - - - -
  • 0x04, INC B: 1B, 4C, Flags: Z 0 H -
  • 0x05, DEC B: 1B, 4C, Flags: Z 1 H -
  • 0x06, LD B,n8: 2B, 8C, Flags: - - - -
  • 0x07, RLCA: 1B, 4C, Flags: 0 0 0 C
  • 0x08, LD (a16),SP: 3B, 20C, Flags: - - - -
  • 0x09, ADD HL,BC: 1B, 8C, Flags: - 0 H C
  • 0x0A, LD A,(BC): 1B, 8C, Flags: - - - -
  • 0x0B, DEC BC: 1B, 8C, Flags: - - - -
  • 0x0C, INC C: 1B, 4C, Flags: Z 0 H -
  • 0x0D, DEC C: 1B, 4C, Flags: Z 1 H -
  • 0x0E, LD C,n8: 2B, 8C, Flags: - - - -
  • 0x0F, RRCA: 1B, 4C, Flags: 0 0 0 C
  • 0x10, STOP n8: 2B, 4C, Flags: - - - -
  • 0x11, LD DE,n16: 3B, 12C, Flags: - - - -
  • 0x12, LD (DE),A: 1B, 8C, Flags: - - - -
  • 0x13, INC DE: 1B, 8C, Flags: - - - -
  • 0x14, INC D: 1B, 4C, Flags: Z 0 H -
  • 0x15, DEC D: 1B, 4C, Flags: Z 1 H -
  • 0x16, LD D,n8: 2B, 8C, Flags: - - - -
  • 0x17, RLA: 1B, 4C, Flags: 0 0 0 C
  • 0x18, JR e8: 2B, 12C, Flags: - - - -
  • 0x19, ADD HL,DE: 1B, 8C, Flags: - 0 H C
  • 0x1A, LD A,(DE): 1B, 8C, Flags: - - - -
  • 0x1B, DEC DE: 1B, 8C, Flags: - - - -
  • 0x1C, INC E: 1B, 4C, Flags: Z 0 H -
  • 0x1D, DEC E: 1B, 4C, Flags: Z 1 H -
  • 0x1E, LD E,n8: 2B, 8C, Flags: - - - -
  • 0x1F, RRA: 1B, 4C, Flags: 0 0 0 C
  • 0x20, JR NZ,e8: 2B, 12/8C, Flags: - - - -
  • 0x21, LD HL,n16: 3B, 12C, Flags: - - - -
  • 0x22, LD (HL+),A: 1B, 8C, Flags: - - - -
  • 0x23, INC HL: 1B, 8C, Flags: - - - -
  • 0x24, INC H: 1B, 4C, Flags: Z 0 H -
  • 0x25, DEC H: 1B, 4C, Flags: Z 1 H -
  • 0x26, LD H,n8: 2B, 8C, Flags: - - - -
  • 0x27, DAA: 1B, 4C, Flags: Z - 0 C
  • 0x28, JR Z,e8: 2B, 12/8C, Flags: - - - -
  • 0x29, ADD HL,HL: 1B, 8C, Flags: - 0 H C
  • 0x2A, LD A,(HL+): 1B, 8C, Flags: - - - -
  • 0x2B, DEC HL: 1B, 8C, Flags: - - - -
  • 0x2C, INC L: 1B, 4C, Flags: Z 0 H -
  • 0x2D, DEC L: 1B, 4C, Flags: Z 1 H -
  • 0x2E, LD L,n8: 2B, 8C, Flags: - - - -
  • 0x2F, CPL: 1B, 4C, Flags: - 1 1 -
  • 0x30, JR NC,e8: 2B, 12/8C, Flags: - - - -
  • 0x31, LD SP,n16: 3B, 12C, Flags: - - - -
  • 0x32, LD (HL-),A: 1B, 8C, Flags: - - - -
  • 0x33, INC SP: 1B, 8C, Flags: - - - -
  • 0x34, INC (HL): 1B, 12C, Flags: Z 0 H -
  • 0x35, DEC (HL): 1B, 12C, Flags: Z 1 H -
  • 0x36, LD (HL),n8: 2B, 12C, Flags: - - - -
  • 0x37, SCF: 1B, 4C, Flags: - 0 0 1
  • 0x38, JR C,e8: 2B, 12/8C, Flags: - - - -
  • 0x39, ADD HL,SP: 1B, 8C, Flags: - 0 H C
  • 0x3A, LD A,(HL-): 1B, 8C, Flags: - - - -
  • 0x3B, DEC SP: 1B, 8C, Flags: - - - -
  • 0x3C, INC A: 1B, 4C, Flags: Z 0 H -
  • 0x3D, DEC A: 1B, 4C, Flags: Z 1 H -
  • 0x3E, LD A,n8: 2B, 8C, Flags: - - - -
  • 0x3F, CCF: 1B, 4C, Flags: - 0 0 C
  • 0x40, LD B,B: 1B, 4C, Flags: - - - -
  • 0x41, LD B,C: 1B, 4C, Flags: - - - -
  • 0x42, LD B,D: 1B, 4C, Flags: - - - -
  • 0x43, LD B,E: 1B, 4C, Flags: - - - -
  • 0x44, LD B,H: 1B, 4C, Flags: - - - -
  • 0x45, LD B,L: 1B, 4C, Flags: - - - -
  • 0x46, LD B,(HL): 1B, 8C, Flags: - - - -
  • 0x47, LD B,A: 1B, 4C, Flags: - - - -
  • 0x48, LD C,B: 1B, 4C, Flags: - - - -
  • 0x49, LD C,C: 1B, 4C, Flags: - - - -
  • 0x4A, LD C,D: 1B, 4C, Flags: - - - -
  • 0x4B, LD C,E: 1B, 4C, Flags: - - - -
  • 0x4C, LD C,H: 1B, 4C, Flags: - - - -
  • 0x4D, LD C,L: 1B, 4C, Flags: - - - -
  • 0x4E, LD C,(HL): 1B, 8C, Flags: - - - -
  • 0x4F, LD C,A: 1B, 4C, Flags: - - - -
  • 0x50, LD D,B: 1B, 4C, Flags: - - - -
  • 0x51, LD D,C: 1B, 4C, Flags: - - - -
  • 0x52, LD D,D: 1B, 4C, Flags: - - - -
  • 0x53, LD D,E: 1B, 4C, Flags: - - - -
  • 0x54, LD D,H: 1B, 4C, Flags: - - - -
  • 0x55, LD D,L: 1B, 4C, Flags: - - - -
  • 0x56, LD D,(HL): 1B, 8C, Flags: - - - -
  • 0x57, LD D,A: 1B, 4C, Flags: - - - -
  • 0x58, LD E,B: 1B, 4C, Flags: - - - -
  • 0x59, LD E,C: 1B, 4C, Flags: - - - -
  • 0x5A, LD E,D: 1B, 4C, Flags: - - - -
  • 0x5B, LD E,E: 1B, 4C, Flags: - - - -
  • 0x5C, LD E,H: 1B, 4C, Flags: - - - -
  • 0x5D, LD E,L: 1B, 4C, Flags: - - - -
  • 0x5E, LD E,(HL): 1B, 8C, Flags: - - - -
  • 0x5F, LD E,A: 1B, 4C, Flags: - - - -
  • 0x60, LD H,B: 1B, 4C, Flags: - - - -
  • 0x61, LD H,C: 1B, 4C, Flags: - - - -
  • 0x62, LD H,D: 1B, 4C, Flags: - - - -
  • 0x63, LD H,E: 1B, 4C, Flags: - - - -
  • 0x64, LD H,H: 1B, 4C, Flags: - - - -
  • 0x65, LD H,L: 1B, 4C, Flags: - - - -
  • 0x66, LD H,(HL): 1B, 8C, Flags: - - - -
  • 0x67, LD H,A: 1B, 4C, Flags: - - - -
  • 0x68, LD L,B: 1B, 4C, Flags: - - - -
  • 0x69, LD L,C: 1B, 4C, Flags: - - - -
  • 0x6A, LD L,D: 1B, 4C, Flags: - - - -
  • 0x6B, LD L,E: 1B, 4C, Flags: - - - -
  • 0x6C, LD L,H: 1B, 4C, Flags: - - - -
  • 0x6D, LD L,L: 1B, 4C, Flags: - - - -
  • 0x6E, LD L,(HL): 1B, 8C, Flags: - - - -
  • 0x6F, LD L,A: 1B, 4C, Flags: - - - -
  • 0x70, LD (HL),B: 1B, 8C, Flags: - - - -
  • 0x71, LD (HL),C: 1B, 8C, Flags: - - - -
  • 0x72, LD (HL),D: 1B, 8C, Flags: - - - -
  • 0x73, LD (HL),E: 1B, 8C, Flags: - - - -
  • 0x74, LD (HL),H: 1B, 8C, Flags: - - - -
  • 0x75, LD (HL),L: 1B, 8C, Flags: - - - -
  • 0x76, HALT: 1B, 4C, Flags: - - - -
  • 0x77, LD (HL),A: 1B, 8C, Flags: - - - -
  • 0x78, LD A,B: 1B, 4C, Flags: - - - -
  • 0x79, LD A,C: 1B, 4C, Flags: - - - -
  • 0x7A, LD A,D: 1B, 4C, Flags: - - - -
  • 0x7B, LD A,E: 1B, 4C, Flags: - - - -
  • 0x7C, LD A,H: 1B, 4C, Flags: - - - -
  • 0x7D, LD A,L: 1B, 4C, Flags: - - - -
  • 0x7E, LD A,(HL): 1B, 8C, Flags: - - - -
  • 0x7F, LD A,A: 1B, 4C, Flags: - - - -
  • 0x80, ADD A,B: 1B, 4C, Flags: Z 0 H C
  • 0x81, ADD A,C: 1B, 4C, Flags: Z 0 H C
  • 0x82, ADD A,D: 1B, 4C, Flags: Z 0 H C
  • 0x83, ADD A,E: 1B, 4C, Flags: Z 0 H C
  • 0x84, ADD A,H: 1B, 4C, Flags: Z 0 H C
  • 0x85, ADD A,L: 1B, 4C, Flags: Z 0 H C
  • 0x86, ADD A,(HL): 1B, 8C, Flags: Z 0 H C
  • 0x87, ADD A,A: 1B, 4C, Flags: Z 0 H C
  • 0x88, ADC A,B: 1B, 4C, Flags: Z 0 H C
  • 0x89, ADC A,C: 1B, 4C, Flags: Z 0 H C
  • 0x8A, ADC A,D: 1B, 4C, Flags: Z 0 H C
  • 0x8B, ADC A,E: 1B, 4C, Flags: Z 0 H C
  • 0x8C, ADC A,H: 1B, 4C, Flags: Z 0 H C
  • 0x8D, ADC A,L: 1B, 4C, Flags: Z 0 H C
  • 0x8E, ADC A,(HL): 1B, 8C, Flags: Z 0 H C
  • 0x8F, ADC A,A: 1B, 4C, Flags: Z 0 H C
  • 0x90, SUB A,B: 1B, 4C, Flags: Z 1 H C
  • 0x91, SUB A,C: 1B, 4C, Flags: Z 1 H C
  • 0x92, SUB A,D: 1B, 4C, Flags: Z 1 H C
  • 0x93, SUB A,E: 1B, 4C, Flags: Z 1 H C
  • 0x94, SUB A,H: 1B, 4C, Flags: Z 1 H C
  • 0x95, SUB A,L: 1B, 4C, Flags: Z 1 H C
  • 0x96, SUB A,(HL): 1B, 8C, Flags: Z 1 H C
  • 0x97, SUB A,A: 1B, 4C, Flags: 1 1 0 0
  • 0x98, SBC A,B: 1B, 4C, Flags: Z 1 H C
  • 0x99, SBC A,C: 1B, 4C, Flags: Z 1 H C
  • 0x9A, SBC A,D: 1B, 4C, Flags: Z 1 H C
  • 0x9B, SBC A,E: 1B, 4C, Flags: Z 1 H C
  • 0x9C, SBC A,H: 1B, 4C, Flags: Z 1 H C
  • 0x9D, SBC A,L: 1B, 4C, Flags: Z 1 H C
  • 0x9E, SBC A,(HL): 1B, 8C, Flags: Z 1 H C
  • 0x9F, SBC A,A: 1B, 4C, Flags: Z 1 H -
  • 0xA0, AND A,B: 1B, 4C, Flags: Z 0 1 0
  • 0xA1, AND A,C: 1B, 4C, Flags: Z 0 1 0
  • 0xA2, AND A,D: 1B, 4C, Flags: Z 0 1 0
  • 0xA3, AND A,E: 1B, 4C, Flags: Z 0 1 0
  • 0xA4, AND A,H: 1B, 4C, Flags: Z 0 1 0
  • 0xA5, AND A,L: 1B, 4C, Flags: Z 0 1 0
  • 0xA6, AND A,(HL): 1B, 8C, Flags: Z 0 1 0
  • 0xA7, AND A,A: 1B, 4C, Flags: Z 0 1 0
  • 0xA8, XOR A,B: 1B, 4C, Flags: Z 0 0 0
  • 0xA9, XOR A,C: 1B, 4C, Flags: Z 0 0 0
  • 0xAA, XOR A,D: 1B, 4C, Flags: Z 0 0 0
  • 0xAB, XOR A,E: 1B, 4C, Flags: Z 0 0 0
  • 0xAC, XOR A,H: 1B, 4C, Flags: Z 0 0 0
  • 0xAD, XOR A,L: 1B, 4C, Flags: Z 0 0 0
  • 0xAE, XOR A,(HL): 1B, 8C, Flags: Z 0 0 0
  • 0xAF, XOR A,A: 1B, 4C, Flags: 1 0 0 0
  • 0xB0, OR A,B: 1B, 4C, Flags: Z 0 0 0
  • 0xB1, OR A,C: 1B, 4C, Flags: Z 0 0 0
  • 0xB2, OR A,D: 1B, 4C, Flags: Z 0 0 0
  • 0xB3, OR A,E: 1B, 4C, Flags: Z 0 0 0
  • 0xB4, OR A,H: 1B, 4C, Flags: Z 0 0 0
  • 0xB5, OR A,L: 1B, 4C, Flags: Z 0 0 0
  • 0xB6, OR A,(HL): 1B, 8C, Flags: Z 0 0 0
  • 0xB7, OR A,A: 1B, 4C, Flags: Z 0 0 0
  • 0xB8, CP A,B: 1B, 4C, Flags: Z 1 H C
  • 0xB9, CP A,C: 1B, 4C, Flags: Z 1 H C
  • 0xBA, CP A,D: 1B, 4C, Flags: Z 1 H C
  • 0xBB, CP A,E: 1B, 4C, Flags: Z 1 H C
  • 0xBC, CP A,H: 1B, 4C, Flags: Z 1 H C
  • 0xBD, CP A,L: 1B, 4C, Flags: Z 1 H C
  • 0xBE, CP A,(HL): 1B, 8C, Flags: Z 1 H C
  • 0xBF, CP A,A: 1B, 4C, Flags: 1 1 0 0
  • 0xC0, RET NZ: 1B, 20/8C, Flags: - - - -
  • 0xC1, POP BC: 1B, 12C, Flags: - - - -
  • 0xC2, JP NZ,a16: 3B, 16/12C, Flags: - - - -
  • 0xC3, JP a16: 3B, 16C, Flags: - - - -
  • 0xC4, CALL NZ,a16: 3B, 24/12C, Flags: - - - -
  • 0xC5, PUSH BC: 1B, 16C, Flags: - - - -
  • 0xC6, ADD A,n8: 2B, 8C, Flags: Z 0 H C
  • 0xC7, RST $00: 1B, 16C, Flags: - - - -
  • 0xC8, RET Z: 1B, 20/8C, Flags: - - - -
  • 0xC9, RET: 1B, 16C, Flags: - - - -
  • 0xCA, JP Z,a16: 3B, 16/12C, Flags: - - - -
  • 0xCB, PREFIX CB: 1B, 4C, Flags: - - - -
  • 0xCC, CALL Z,a16: 3B, 24/12C, Flags: - - - -
  • 0xCD, CALL a16: 3B, 24C, Flags: - - - -
  • 0xCE, ADC A,n8: 2B, 8C, Flags: Z 0 H C
  • 0xCF, RST $08: 1B, 16C, Flags: - - - -
  • 0xD0, RET NC: 1B, 20/8C, Flags: - - - -
  • 0xD1, POP DE: 1B, 12C, Flags: - - - -
  • 0xD2, JP NC,a16: 3B, 16/12C, Flags: - - - -
  • 0xD4, CALL NC,a16: 3B, 24/12C, Flags: - - - -
  • 0xD5, PUSH DE: 1B, 16C, Flags: - - - -
  • 0xD6, SUB A,n8: 2B, 8C, Flags: Z 1 H C
  • 0xD7, RST $10: 1B, 16C, Flags: - - - -
  • 0xD8, RET C: 1B, 20/8C, Flags: - - - -
  • 0xD9, RETI: 1B, 16C, Flags: - - - -
  • 0xDA, JP C,a16: 3B, 16/12C, Flags: - - - -
  • 0xDC, CALL C,a16: 3B, 24/12C, Flags: - - - -
  • 0xDE, SBC A,n8: 2B, 8C, Flags: Z 1 H C
  • 0xDF, RST $18: 1B, 16C, Flags: - - - -
  • 0xE0, LDH (a8),A: 2B, 12C, Flags: - - - -
  • 0xE1, POP HL: 1B, 12C, Flags: - - - -
  • 0xE2, LD (C),A: 1B, 8C, Flags: - - - -
  • 0xE5, PUSH HL: 1B, 16C, Flags: - - - -
  • 0xE6, AND A,n8: 2B, 8C, Flags: Z 0 1 0
  • 0xE7, RST $20: 1B, 16C, Flags: - - - -
  • 0xE8, ADD SP,e8: 2B, 16C, Flags: 0 0 H C
  • 0xE9, JP HL: 1B, 4C, Flags: - - - -
  • 0xEA, LD (a16),A: 3B, 16C, Flags: - - - -
  • 0xEE, XOR A,n8: 2B, 8C, Flags: Z 0 0 0
  • 0xEF, RST $28: 1B, 16C, Flags: - - - -
  • 0xF0, LDH A,(a8): 2B, 12C, Flags: - - - -
  • 0xF1, POP AF: 1B, 12C, Flags: Z N H C
  • 0xF2, LD A,(C): 1B, 8C, Flags: - - - -
  • 0xF3, DI: 1B, 4C, Flags: - - - -
  • 0xF5, PUSH AF: 1B, 16C, Flags: - - - -
  • 0xF6, OR A,n8: 2B, 8C, Flags: Z 0 0 0
  • 0xF7, RST $30: 1B, 16C, Flags: - - - -
  • 0xF8, LD HL,SP+e8: 2B, 12C, Flags: 0 0 H C
  • 0xF9, LD SP,HL: 1B, 8C, Flags: - - - -
  • 0xFA, LD A,(a16): 3B, 16C, Flags: - - - -
  • 0xFB, EI: 1B, 4C, Flags: - - - -
  • 0xFE, CP A,n8: 2B, 8C, Flags: Z 1 H C
  • 0xEF, RST $38: 1B, 16C, Flags: - - - -

About

Trying to write a gb emulator to prepare me for nds emulation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages