chip8-benchmark/src/main.c

65 lines
1.4 KiB
C

#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/bfile.h>
#include "Chip8.h"
#include "opcode.h"
// libprof tests
#include <libprof.h>
#include <gint/std/stdio.h>
struct Chip8 chip8 = {
.PC = 0x200,
.memory= { //bitmap for the fonts
0xF0, 0x90, 0x90, 0x90, 0xF0, //0
0x20, 0x60, 0x20, 0x20, 0x70, //1
0xF0, 0x10, 0xF0, 0x80, 0xF0, //2
0xF0, 0x10, 0xF0, 0x10, 0xF0, //3
0x90, 0x90, 0xF0, 0x10, 0x10, //4
0xF0, 0x80, 0xF0, 0x10, 0xF0, //5
0xF0, 0x80, 0xF0, 0x90, 0xF0, //6
0xF0, 0x10, 0x20, 0x40, 0x40, //7
0xF0, 0x90, 0xF0, 0x90, 0xF0, //8
0xF0, 0x90, 0xF0, 0x10, 0xF0, //9
0xF0, 0x90, 0xF0, 0x90, 0x90, //A
0xE0, 0x90, 0xE0, 0x90, 0xE0, //B
0xF0, 0x80, 0x80, 0x80, 0xF0, //C
0xE0, 0x90, 0x90, 0x90, 0xE0, //D
0xF0, 0x80, 0xF0, 0x80, 0xF0, //E
0xF0, 0x80, 0xF0, 0x80, 0x80 //F
}
};
int main(void)
{
int file_handler;
uint16_t const * pathname = u"\\\\fls0\\PONG.ch8";
dclear(C_BLACK);
dupdate();
file_handler = BFile_Open(pathname, BFile_ReadOnly);
BFile_Read(file_handler, &chip8.memory[0x200], 264,-1);
// prof init
char time[7];
prof_init(1, 0);
prof_clear(0);
int i=0;
while(1)
{
prof_enter(0);
execute();
prof_leave(0);
i++;
if (!(i%=256))
{ // test sur 256 actions -> moyenne
snprintf(time, sizeof(time), "%d", (prof_time(0) >> 8));
prof_clear(0);
}
dprint(1, 50, C_WHITE, C_BLACK, "%s", time);
}
return 1;
}