C -CHIP -8 SDL渲染问题



我已经编码了一个芯片8仿真器。无论我做什么,看来我都无法在屏幕上显示任何像素。很奇怪的是,我已经检查了代码,toptom已经有2天了,似乎没有任何问题。

这是源代码:

                SDL_SetRenderDrawColor( renderer, 0, 0, 0, SDL_ALPHA_OPAQUE );
                SDL_RenderClear(renderer);
                uint32_t pixels[(WINDOW_WIDTH / 10) * (WINDOW_HEIGHT / 10)];
                uint16_t i;
                for(i = 0; i < 64*32; i++){
                    pixels[i] = (0x00FFFFFF * display[i]) | 0xFF000000;
                }
                //upload the pixels to the texture
                SDL_UpdateTexture(tex,NULL,pixels, 64 * sizeof(uint32_t));
                //Now get the texture to the screen
                SDL_RenderCopy(renderer,tex,NULL,NULL);
                SDL_RenderPresent(renderer); // Update screen
                ch8.drawF = false;
uint16_t x = ch8->V[((ch8->opcode & 0x0F00) >> 8)];
                uint16_t y = ch8->V[((ch8->opcode & 0x00F0) >> 4)];
                uint8_t n = (ch8->opcode & 0x000F);
                for(i = 0; i < n; i++) {
                    uint8_t pixel= memory[ch8->I.word + i];
                    for(j = 0; j < 8; j++) {
                        if((pixel & (0x80 >> j)) != 0){
                            if(display[x + j  + ((y + i) * 64)] == 1) {
                                ch8->V[0xF] = 1;
                            }
                            display[x + j  + ((y + i) * 64)] ^= 1;
                        }
                    }
                }

基本上,问题是在init()function.i最初使用的,sdl_createwindow和sdl_creatererer,但现在我正在使用,SDL_CREATEATEWEDOWANDOWANDRENDER,它将指针用于SDL_WINDOW和SDL_WINDOW和SDL_WINDOW和SDL_WINDOW和SDL_WINDOW和SDL_RENDERERERERERERER而不是指向字符和窗口的指针。

我还解决了3个问题。1.我在nnn opcodes中添加 0x200,因为起初我以为rom中的nnn相对于0,所以我从每个xnnn opcode.code.lo emot 0x200中删除了 0x200。sdl_texture ** tex,我只是在更改当地指针也在pre贴的地址...2. at opcode 2nnn,而不是(ch8-> sp)= ch8-> opcode&amp;0x0fff;它的(ch8-> sp)= ch8-> pc.word;3. AT OPCODE FX65 ITS I&lt; =((CH8-> opcode&amp; 0x0f00)>> 8)

基本上,sdl_creatwewindowandrenderer和sdl_createwindow&amp; sdl_creatererer让我感到困惑,我应该先检查文档。

现在,我只需要使模拟器仅重新绘制更改的像素,然后使模拟器播放声音。

最新更新