66
77
88// Get sdl poll event and check game controlls are press;
9- void setkeys ();
9+ void setkeys (SDL_Event );
1010// draw chip8 on screen
1111void drawChip8 ();
1212
@@ -28,9 +28,9 @@ int main(int argc, char **argv){
2828 emu.initialize ();
2929
3030 // load game
31- emu.loadGame (" Fishie " );
31+ emu.loadGame (" Pong " );
3232 // initialize SDL
33- SDL_Init (SDL_INIT_VIDEO);
33+ SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER );
3434 SDL_CreateWindowAndRenderer (640 , 320 , SDL_WINDOW_RESIZABLE, &window, &renderer);
3535 // texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 8, 8);
3636 SDL_SetRenderDrawColor (renderer, 0 , 0 , 0 , 0 );
@@ -53,15 +53,124 @@ int main(int argc, char **argv){
5353 }
5454
5555 // Store key press state (Press and Release)
56- // setkeys(/*pass in event */);
56+ setkeys (e);
57+
58+ SDL_Delay (2 );
5759 }
5860}
5961
60- void setkeys (){
62+ void setkeys (SDL_Event key_event ){
6163 // check sdl poll event for key up or key down
6264 // if key up set the corresponding key in the chip8 to 0
63-
64- // if key down set the corresponding in the chip8 to 1
65+ if (key_event.type == SDL_KEYDOWN){
66+ switch (key_event.key .keysym .sym ){
67+ case SDLK_0:
68+ emu.key [0 ] = 1 ;
69+ break ;
70+ case SDLK_1:
71+ emu.key [1 ] = 1 ;
72+ break ;
73+ case SDLK_2:
74+ emu.key [2 ] = 1 ;
75+ break ;
76+ case SDLK_3:
77+ emu.key [3 ] = 1 ;
78+ break ;
79+ case SDLK_4:
80+ emu.key [4 ] = 1 ;
81+ break ;
82+ case SDLK_q:
83+ emu.key [5 ] = 1 ;
84+ break ;
85+ case SDLK_w:
86+ emu.key [6 ] = 1 ;
87+ break ;
88+ case SDLK_e:
89+ emu.key [7 ] = 1 ;
90+ break ;
91+ case SDLK_r:
92+ emu.key [8 ] = 1 ;
93+ break ;
94+ case SDLK_a:
95+ emu.key [9 ] = 1 ;
96+ break ;
97+ case SDLK_s:
98+ emu.key [10 ] = 1 ;
99+ break ;
100+ case SDLK_d:
101+ emu.key [11 ] = 1 ;
102+ break ;
103+ case SDLK_f:
104+ emu.key [12 ] = 1 ;
105+ break ;
106+ case SDLK_j:
107+ emu.key [13 ] = 1 ;
108+ break ;
109+ case SDLK_k:
110+ emu.key [14 ] = 1 ;
111+ break ;
112+ case SDLK_l:
113+ emu.key [15 ] = 1 ;
114+ break ;
115+ default :
116+ break ;
117+ }
118+ }
119+ // if key up set the corresponding in the chip8 to 1
120+ if (key_event.type == SDL_KEYUP){
121+ switch (key_event.key .keysym .sym ){
122+ case SDLK_0:
123+ emu.key [0 ] = 0 ;
124+ break ;
125+ case SDLK_1:
126+ emu.key [1 ] = 0 ;
127+ break ;
128+ case SDLK_2:
129+ emu.key [2 ] = 0 ;
130+ break ;
131+ case SDLK_3:
132+ emu.key [3 ] = 0 ;
133+ break ;
134+ case SDLK_4:
135+ emu.key [4 ] = 0 ;
136+ break ;
137+ case SDLK_q:
138+ emu.key [5 ] = 0 ;
139+ break ;
140+ case SDLK_w:
141+ emu.key [6 ] = 0 ;
142+ break ;
143+ case SDLK_e:
144+ emu.key [7 ] = 0 ;
145+ break ;
146+ case SDLK_r:
147+ emu.key [8 ] = 0 ;
148+ break ;
149+ case SDLK_a:
150+ emu.key [9 ] = 0 ;
151+ break ;
152+ case SDLK_s:
153+ emu.key [10 ] = 0 ;
154+ break ;
155+ case SDLK_d:
156+ emu.key [11 ] = 0 ;
157+ break ;
158+ case SDLK_f:
159+ emu.key [12 ] = 0 ;
160+ break ;
161+ case SDLK_j:
162+ emu.key [13 ] = 0 ;
163+ break ;
164+ case SDLK_k:
165+ emu.key [14 ] = 0 ;
166+ break ;
167+ case SDLK_l:
168+ emu.key [15 ] = 0 ;
169+ break ;
170+ default :
171+ break ;
172+ }
173+ }
65174}
66175void drawChip8 (){
67176 // go through the chip8s graphics array and draw to the screen if
0 commit comments