From be61d2cedf55a41bab6261b60729f988ab5507ba Mon Sep 17 00:00:00 2001 From: Vinicius Silva Date: Tue, 20 Feb 2024 19:03:48 -0300 Subject: [PATCH] Basic CHIP-8 full implemented --- Display.pdf | Bin 26022 -> 0 bytes .../references/CHIP8_GUIDE.pdf | Bin .../references/CHIP8_WIKI.pdf | Bin chip8ref.pdf => docs/references/chip8ref.pdf | Bin roms/Chip8 Picture.ch8 | Bin 0 -> 164 bytes roms/test_opcode.8o | 205 ------------------ src/chip8.v | 22 +- src/main.v | 27 +-- 8 files changed, 21 insertions(+), 233 deletions(-) delete mode 100644 Display.pdf rename CHIP8_GUIDE.pdf => docs/references/CHIP8_GUIDE.pdf (100%) rename CHIP8_WIKI.pdf => docs/references/CHIP8_WIKI.pdf (100%) rename chip8ref.pdf => docs/references/chip8ref.pdf (100%) create mode 100644 roms/Chip8 Picture.ch8 delete mode 100644 roms/test_opcode.8o diff --git a/Display.pdf b/Display.pdf deleted file mode 100644 index f2a848fb8a41fef080126deb392ac4c353b57cad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26022 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 diff --git a/CHIP8_GUIDE.pdf b/docs/references/CHIP8_GUIDE.pdf similarity index 100% rename from CHIP8_GUIDE.pdf rename to docs/references/CHIP8_GUIDE.pdf diff --git a/CHIP8_WIKI.pdf b/docs/references/CHIP8_WIKI.pdf similarity index 100% rename from CHIP8_WIKI.pdf rename to docs/references/CHIP8_WIKI.pdf diff --git a/chip8ref.pdf b/docs/references/chip8ref.pdf similarity index 100% rename from chip8ref.pdf rename to docs/references/chip8ref.pdf diff --git a/roms/Chip8 Picture.ch8 b/roms/Chip8 Picture.ch8 new file mode 100644 index 0000000000000000000000000000000000000000..74ab4bf9169a6022ca29ba20d515cf0d34dd1409 GIT binary patch literal 164 zcmZR0u*f5UAyF=g;S$p&p&||=2O%yX-!6%1k=F&ii+V+TAaYSe0(T>= v6 -if v6 == 7 then i := imageok -sprite x2 y 4 -#test Fx55,Fx65 -y := 16 -drawop imF im5 -i := 1000 -v0 := 0 -v1 := 48 -save v1 -i := 1001 -load v0 -i := imagefalse -if v0 == 48 then i := imageok -sprite x2 y 4 -#test Fx33 -y := 21 -drawop imF im3 -i := 1000 -v6 := 137 -bcd v6 -load v2 -i := imageok -if v0 != 1 then i := imagefalse -if v1 != 3 then i := imagefalse -if v2 != 7 then i := imagefalse -sprite x2 y 4 -#test 1x -y := 26 -drawop im1 imX -jump test1x -: endtest -loop -again diff --git a/src/chip8.v b/src/chip8.v index 3a0a2af..0733e5a 100644 --- a/src/chip8.v +++ b/src/chip8.v @@ -95,17 +95,18 @@ fn (mut chip Chip8) decode_and_run(instruction u16) { mut is_jump := false chip.is_draw = false + //println(opcode_lsb) match opcode_msb{ 0x0000 { - match opcode_msb { - 0x00EE { + match opcode_lsb { + 0xEE { chip.pc = chip.stack.pop() or { panic(err) } // Returns from a subroutine } - 0x00E0 { + 0xE0 { chip.is_draw = true for i := 0; i < chip.screen.display_height; i++{ for j := 0; j < chip.screen.display_width; j++ { @@ -114,9 +115,13 @@ fn (mut chip Chip8) decode_and_run(instruction u16) { } } - else { - nnn = instruction & 0x0FFF + //0NNN { + // nnn = instruction & 0x0FFF // Calls machine code routine + //} + + else{ + panic('Invalid instruction! 0x${instruction.hex()}') } } } @@ -260,7 +265,7 @@ fn (mut chip Chip8) decode_and_run(instruction u16) { } else{ - panic('Invalid instruction!') + panic('Invalid instruction! 0x${instruction.hex()}') } } @@ -313,10 +318,9 @@ fn (mut chip Chip8) decode_and_run(instruction u16) { for x_coord := 0; x_coord < 8; x_coord++ { - if pixel & (0x80 >> x_coord) == 1 { + if (pixel & (0x80 >> x_coord)) != 0 { if chip.screen.display[regvy + y_coord][regvx + x_coord] == 1 { chip.v[f] = 1 - //chip.screen.display[regvy + y_coord][regvx + x_coord] = 0 } chip.screen.display[regvy + y_coord][regvx + x_coord] ^= 1 @@ -385,7 +389,7 @@ fn (mut chip Chip8) decode_and_run(instruction u16) { //}, else { - panic('Invalid instruction!') + panic('Invalid instruction! 0x${instruction.hex()}') } } if !is_jump { chip.pc += 2 } diff --git a/src/main.v b/src/main.v index 8846bb9..d1890f1 100644 --- a/src/main.v +++ b/src/main.v @@ -39,8 +39,12 @@ fn (mut emulator Emulator) load_rom() !{ } } -fn draw_screen(mut emulator Emulator){ +fn frame(mut emulator Emulator){ + emulator.graphic.begin() + + emulator.chip8.run() + display_height := emulator.chip8.screen.display_height display_width := emulator.chip8.screen.display_width @@ -54,6 +58,7 @@ fn draw_screen(mut emulator Emulator){ } } } + emulator.graphic.end() } fn (mut emulator Emulator) show_display(){ @@ -138,10 +143,6 @@ fn is_graphic() bool{ return os.environ()['DISPLAY'] != '' } -fn frame(){ - print('oi') -} - fn main() { mut emulator := &Emulator{ @@ -158,23 +159,11 @@ fn main() { width: 1280 height: 640 window_title: 'V CHIP-8 Emulator' - frame_fn : draw_screen + frame_fn : frame user_data: emulator ) - - - for{ - emulator.chip8.run() - - emulator.graphic.quit() - if emulator.chip8.is_draw { - emulator.graphic.begin() - emulator.show_display() - emulator.graphic.end() - - } - } + emulator.show_display() }else{ panic('System is not graphic!')