Search code examples
emulationmachine-codegameboy

GameBoy 16-bit load into 8-bit memory


I have begun programming an emulator for the Gameboy classic, my next project after a successful Chip 8 Emulator.

As a reference I use the GameBoy CPU Manual.

Now on page 66 it says:

LD  A,(HL)  7E  8

Basically, load the value HL into register A.

However, as I understand this, this would load the 16-bit value HL into the 8-bit register A. Which of course doesnt fit.

Do you have any idea how this is meant? All other references are just simple tables without explaination, but say the same thing.

Thanks for your answers!


Solution

  • With this instruction the value pointed to by (HL) is loaded into A not the value of HL itself. For example if HL has the value 0xABCD and the value of the memory at address 0xABCD is 0x50 then 0x50 is loaded into register A.

    Pseudo implementation

    register.A = memory.ReadByte(register.HL);