Я пытаюсь использовать fseek
и fread
для копирования байтов 0x0100-0x3FFF двоичного файла (Boy Boy ROM) в байты 0x0100-0x3FFF моего эмулируемого addressSpace; однако я не знаю, как использовать fread
, чтобы начать писать на определенный байт в addressSpace. Это затронутый код; он начинает читать на 0x0100 ПЗУ, как и ожидалось, но он пишет в 0x0000-0x3EFF адресного пространства, и мой вопрос в том, как я могу получить fread, чтобы начать писать с 0x0100 вместо этого?Как установить начальную точку для fread?
#include <stdio.h>
#include <stdint.h>
uint8_t addressSpace[0x10000];
int main()
{
FILE* gameROM = fopen("rom.gb", "rb");
if (gameROM == NULL || sizeof(addressSpace[0]) != 1)
{
printf("Error");
getchar();
fclose(gameROM);
return 1;
}
fseek(gameROM, 0x100, SEEK_SET);
fread(addressSpace, sizeof(addressSpace[0]), 0x3EFF, gameROM);
printf("\n%X\n", addressSpace[0x100]);
getchar();
return 0;
}
Спасибо большое, оба ответа были размещены именно то, что мне было нужно. – Xerxes