2.4 KiB
2.4 KiB
Todos
-
How to capture arguments passed to a C program
```c // argc is the number of args passed // argc is always 1 or more // argc always has name/path of program as first arg int main(int argc, char *argv[]) { // do stuff with the args } ``` -
How to print argument value
``` printf("%s", argv[1]); ``` -
Read a file
```c // open file in read mode. returns NULL if doesn't exist FILE *file_ptr = fread(file_path, "r"); // seeking to end of file. // useful telling number of bytes fseek(file_ptr, 0, SEEK_END); // get number of bytes int num_of_bytes = ftell(file_ptr); // seek to begin of file fseek(file_ptr, 0, SEEK_SET); ``` -
Store contents of file in memory
-
Print file contents
-
Print instructions
-
Make sure program occupies correct space in chip memory
-
Parse individual instructions from binary CHIP-8 file
-
Print all instructions from CHIP-8 file
-
Write all CHIP-8 IBM logo opcodes to CSV file
-
Implement opcodes present in the IMB logo CHIP-8 file
x Opcode Type Description x 00E000E0 Clear display x 1nnn1nnn Jump to address x 3xkk3xkk Skip next if Vx == kk x 6xkk6xkk Load register with immediate x 7xkk7xkk Add immediate to Vx x ANNNANNN Set index register x BnnnBnnn Jump to V0 + addr x DxynDxyn Draw sprite -
Refactor main
-
Migrate drawing to raylib window
-
Handle keyboard input
-
Implement remaining instructions
x Opcode Type Description x 00EE00EE Return from subroutine x 2nnn2nnn Call subroutine at nnn x 4xkk4xkk Skip next if Vx != kk x 5xy05xy0 Skip next if Vx == Vy x 8xy08xy0 Stores Vy in Vx x 8xy18xy1 x 8xy28xy2 x 8xy38xy3 x 8xy48xy4 x 8xy58xy5 x 8xy68xy6 x 8xy78xy7 x 8xy88xy8 x CxkkCxkk