3
3
#include < time.h> /* time */
4
4
#include " chip8.h"
5
5
6
+ unsigned char chip8_fontset[80 ] =
7
+ {
8
+ 0xF0 , 0x90 , 0x90 , 0x90 , 0xF0 , // 0
9
+ 0x20 , 0x60 , 0x20 , 0x20 , 0x70 , // 1
10
+ 0xF0 , 0x10 , 0xF0 , 0x80 , 0xF0 , // 2
11
+ 0xF0 , 0x10 , 0xF0 , 0x10 , 0xF0 , // 3
12
+ 0x90 , 0x90 , 0xF0 , 0x10 , 0x10 , // 4
13
+ 0xF0 , 0x80 , 0xF0 , 0x10 , 0xF0 , // 5
14
+ 0xF0 , 0x80 , 0xF0 , 0x90 , 0xF0 , // 6
15
+ 0xF0 , 0x10 , 0x20 , 0x40 , 0x40 , // 7
16
+ 0xF0 , 0x90 , 0xF0 , 0x90 , 0xF0 , // 8
17
+ 0xF0 , 0x90 , 0xF0 , 0x10 , 0xF0 , // 9
18
+ 0xF0 , 0x90 , 0xF0 , 0x90 , 0x90 , // A
19
+ 0xE0 , 0x90 , 0xE0 , 0x90 , 0xE0 , // B
20
+ 0xF0 , 0x80 , 0x80 , 0x80 , 0xF0 , // C
21
+ 0xE0 , 0x90 , 0x90 , 0x90 , 0xE0 , // D
22
+ 0xF0 , 0x80 , 0xF0 , 0x80 , 0xF0 , // E
23
+ 0xF0 , 0x80 , 0xF0 , 0x80 , 0x80 // F
24
+ };
6
25
7
26
chip8::chip8 ()
8
- {
9
- unsigned char chip8_fontset[80 ] =
10
- {
11
- 0xF0 , 0x90 , 0x90 , 0x90 , 0xF0 , // 0
12
- 0x20 , 0x60 , 0x20 , 0x20 , 0x70 , // 1
13
- 0xF0 , 0x10 , 0xF0 , 0x80 , 0xF0 , // 2
14
- 0xF0 , 0x10 , 0xF0 , 0x10 , 0xF0 , // 3
15
- 0x90 , 0x90 , 0xF0 , 0x10 , 0x10 , // 4
16
- 0xF0 , 0x80 , 0xF0 , 0x10 , 0xF0 , // 5
17
- 0xF0 , 0x80 , 0xF0 , 0x90 , 0xF0 , // 6
18
- 0xF0 , 0x10 , 0x20 , 0x40 , 0x40 , // 7
19
- 0xF0 , 0x90 , 0xF0 , 0x90 , 0xF0 , // 8
20
- 0xF0 , 0x90 , 0xF0 , 0x10 , 0xF0 , // 9
21
- 0xF0 , 0x90 , 0xF0 , 0x90 , 0x90 , // A
22
- 0xE0 , 0x90 , 0xE0 , 0x90 , 0xE0 , // B
23
- 0xF0 , 0x80 , 0x80 , 0x80 , 0xF0 , // C
24
- 0xE0 , 0x90 , 0x90 , 0x90 , 0xE0 , // D
25
- 0xF0 , 0x80 , 0xF0 , 0x80 , 0xF0 , // E
26
- 0xF0 , 0x80 , 0xF0 , 0x80 , 0x80 // F
27
- };
27
+ {
28
28
}
29
29
30
30
@@ -78,7 +78,7 @@ void chip8::initialize()
78
78
void chip8::emulateCycle ()
79
79
{
80
80
// Fetch opcode
81
- this -> opcode = this -> memory [this -> pc ] << 8 | this -> memory [this -> pc + 1 ];
81
+ opcode = memory[pc] << 8 | memory[pc + 1 ];
82
82
83
83
// Decode opcode
84
84
switch (opcode & 0xF000 )
@@ -474,8 +474,10 @@ void chip8::emulateCycle()
474
474
if (sound_timer > 0 )
475
475
{
476
476
if (sound_timer == 1 )
477
+ {
477
478
printf (" BEEP!\n " );
478
479
printf (" \7 " );
480
+ }
479
481
--sound_timer;
480
482
}
481
483
}
@@ -498,7 +500,19 @@ void chip8::loadGame(std::string new_filename)
498
500
std::memcpy (memory + 0x200 , buffer, 4096 - 0x200 ); // Rom data starts at 0x200
499
501
}
500
502
501
- void chip8::setKeys ()
503
+ void chip8::debugDraw ()
502
504
{
503
- // throw std::exception("not implemented");
505
+ // Draw
506
+ for (int y = 0 ; y < 32 ; ++y)
507
+ {
508
+ for (int x = 0 ; x < 64 ; ++x)
509
+ {
510
+ if (gfx[(y * 64 ) + x] == 0 )
511
+ printf (" O" );
512
+ else
513
+ printf (" " );
514
+ }
515
+ printf (" \n " );
516
+ }
517
+ printf (" \n " );
504
518
}
0 commit comments