summaryrefslogtreecommitdiff
path: root/src/chip8.rs
diff options
context:
space:
mode:
authorSamuel Perrouault <samuel.perrouault@gmail.com>2025-03-26 14:18:11 +0100
committerSamuel Perrouault <samuel.perrouault@gmail.com>2025-03-26 14:18:11 +0100
commit1a6f76c6cb14493a6f8c76ec26a5694e43c87fea (patch)
treecf3a9edb91754842a5879e77468bc0e174b2ad06 /src/chip8.rs
parent208df3ff9d7dea52fa58759b787c68a5117b196d (diff)
implement subroutine call and return
Diffstat (limited to 'src/chip8.rs')
-rw-r--r--src/chip8.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/chip8.rs b/src/chip8.rs
index 83139f4..988dc6e 100644
--- a/src/chip8.rs
+++ b/src/chip8.rs
@@ -64,6 +64,8 @@ impl Chip8 {
}
0x000E => {
eprintln!("RET");
+ self.sp -= 1;
+ self.pc = self.stack[self.sp as usize];
}
_ => unknown_opcode(opcode),
},
@@ -71,6 +73,12 @@ impl Chip8 {
eprintln!("JP {}", nnn);
self.pc = nnn;
}
+ 0x2000 => {
+ eprintln!("CALL {}", nnn);
+ self.stack[self.sp as usize] = self.pc;
+ self.sp += 1;
+ self.pc = nnn;
+ }
0x3000 => {
eprintln!("SE V{}, {}", x, nn);
if self.v[x] == nn {