mirror of
https://github.com/macocianradu/goboy.git
synced 2026-03-18 13:00:07 +00:00
added second row of the optable
This commit is contained in:
@@ -19,8 +19,8 @@ func LDBCd16(context op_context) {
|
|||||||
context.cpu.SetBC(context.immediate)
|
context.cpu.SetBC(context.immediate)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x02 LDBCa Store the contents of register A in the memory location specified by register pair BC.
|
// 0x02 LDBCA Store the contents of register A in the memory location specified by register pair BC.
|
||||||
func LDBCa(context op_context) {
|
func LDBCA(context op_context) {
|
||||||
operations.LDInMemory8(context.cpu.BC(), context.cpu.A)
|
operations.LDInMemory8(context.cpu.BC(), context.cpu.A)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -105,5 +105,4 @@ func RRRCA(context op_context) {
|
|||||||
context.cpu.SetNF(false)
|
context.cpu.SetNF(false)
|
||||||
context.cpu.SetHF(false)
|
context.cpu.SetHF(false)
|
||||||
context.cpu.SetCF(a0 == 1)
|
context.cpu.SetCF(a0 == 1)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,3 +18,103 @@ func STOP(context op_context) {
|
|||||||
//TODO
|
//TODO
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0x11 LDDEd16 Load the 2 bytes of immediate data into register pair DE.
|
||||||
|
func LDDEd16(context op_context) {
|
||||||
|
context.cpu.SetDE(context.immediate)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x12 LDDEA Store the contents of register A in the memory speicifed by the register pair DE.
|
||||||
|
func LDDEA(context op_context) {
|
||||||
|
operations.LDInMemory8(context.cpu.DE(), context.cpu.A)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x13 INCDE Increment the contents of register pair DE by 1.
|
||||||
|
func INCDE(context op_context) {
|
||||||
|
operations.INC16(&context.cpu.D, &context.cpu.E)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x14 INCD Increment the contents of register D by 1.
|
||||||
|
func INCD(context op_context) {
|
||||||
|
IncAndSetFlags(context, &context.cpu.D)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x15 DECD Decrement the contents of register D by 1.
|
||||||
|
func DECD(context op_context) {
|
||||||
|
DecAndSetFlags(context, &context.cpu.D)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x16 LDDd8 Load the 8-bit immediate operand d8 into register D.
|
||||||
|
func LDDd8(context op_context) {
|
||||||
|
operations.LD(&context.cpu.D, byte(context.immediate))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x17 RLA Rotate the contents of register A to the left, through the carry (CY) flag.
|
||||||
|
func RLA(context op_context) {
|
||||||
|
a7 := context.cpu.A >> 7
|
||||||
|
operations.ShiftLeft(&context.cpu.A)
|
||||||
|
carry := 0
|
||||||
|
if context.cpu.CF() {
|
||||||
|
carry = 1
|
||||||
|
}
|
||||||
|
context.cpu.A = context.cpu.A | byte(carry)
|
||||||
|
|
||||||
|
context.cpu.SetZF(false)
|
||||||
|
context.cpu.SetNF(false)
|
||||||
|
context.cpu.SetHF(false)
|
||||||
|
context.cpu.SetCF(a7 == 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x18 JRs8 Jump s8 steps from the current address in the program counter (PC). (Jump relative.)
|
||||||
|
func JRs8(context op_context) {
|
||||||
|
signedValue := int8(context.immediate & 0x00FF)
|
||||||
|
context.cpu.PC += uint16(int16(signedValue))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x19 ADDHLDE Add the contents of register pair DE to the contents of register pair HL, and store the results in register pair HL.
|
||||||
|
func ADDHLDE(context op_context) {
|
||||||
|
result := Add16BitsAndSetFlags(context, context.cpu.DE(), context.cpu.HL())
|
||||||
|
context.cpu.SetHL(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x1A LDADE Load the 8-bit contents of memory specified by register pair DE into register A.
|
||||||
|
func LDADE(context op_context) {
|
||||||
|
operations.LDFromMem(&context.cpu.A, uint(context.cpu.DE()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x1B DECDE Decrement the contents of register pair DE by 1.
|
||||||
|
func DECDE(context op_context) {
|
||||||
|
operations.DEC16(&context.cpu.D, &context.cpu.E)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x1C INCE Increment the contents of register E by 1.
|
||||||
|
func INCE(context op_context) {
|
||||||
|
IncAndSetFlags(context, &context.cpu.E)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x1D DECE Decrement the contents of register E by 1.
|
||||||
|
func DECE(context op_context) {
|
||||||
|
DecAndSetFlags(context, &context.cpu.E)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x1E LDEd8 Load the 8-bit immediate operand d8 into register E.
|
||||||
|
func LDEd8(context op_context) {
|
||||||
|
context.cpu.E = byte(context.immediate)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x1F RRA Rotate the contents of register A to the right, through the carry (CY) flag.
|
||||||
|
func RRA(context op_context) {
|
||||||
|
a0 := context.cpu.A & 0x01
|
||||||
|
operations.ShiftRight(&context.cpu.A)
|
||||||
|
carry := 0
|
||||||
|
if context.cpu.CF() {
|
||||||
|
carry = 1
|
||||||
|
}
|
||||||
|
context.cpu.A = context.cpu.A | byte(carry)<<7
|
||||||
|
|
||||||
|
context.cpu.SetZF(false)
|
||||||
|
context.cpu.SetNF(false)
|
||||||
|
context.cpu.SetHF(false)
|
||||||
|
context.cpu.SetCF(a0 == 1)
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package cpu
|
|||||||
var OpTable = [256]func(context op_context){
|
var OpTable = [256]func(context op_context){
|
||||||
NOOP, //0x00
|
NOOP, //0x00
|
||||||
LDBCd16, //0x01
|
LDBCd16, //0x01
|
||||||
LDBCa, //0x02
|
LDBCA, //0x02
|
||||||
INCBC, //0x03
|
INCBC, //0x03
|
||||||
INCB, //0x04
|
INCB, //0x04
|
||||||
DECB, //0x05
|
DECB, //0x05
|
||||||
@@ -18,5 +18,20 @@ var OpTable = [256]func(context op_context){
|
|||||||
LDCd8, //0x0E
|
LDCd8, //0x0E
|
||||||
RRRCA, //0x0F
|
RRRCA, //0x0F
|
||||||
|
|
||||||
STOP, //0x10
|
STOP, //0x10
|
||||||
|
LDDEd16, //0x11
|
||||||
|
LDDEA, //0x12
|
||||||
|
INCDE, //0x13
|
||||||
|
INCD, //0x14
|
||||||
|
DECD, //0x15
|
||||||
|
LDDd8, //0x16
|
||||||
|
RLA, //0x17
|
||||||
|
JRs8, //0x18
|
||||||
|
ADDHLDE, //0x19
|
||||||
|
LDADE, //0x1A
|
||||||
|
DECDE, //0x1B
|
||||||
|
INCE, //0x1C
|
||||||
|
DECE, //0x1D
|
||||||
|
LDEd8, //0x1E
|
||||||
|
RRA, //0x1F
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user