Just for documenting Sake:
We already solved the issue

The problem was that he was updating the program counter after the switch, this effectively ruined the program counter for Jump instructions as it was moving the program counter more than once per JUMP


Dont do this
switch (opcode) {
case : 0x0
.case n

pc += 2; // this will mess your jump instructions and possibly others

//instead update the counter in their own body