예제 #1
0
int main(int argc, char** argv)
{
    /*
    if (argc < 2)
    {
        cerr << "Usage: " << argv[0] << " rom" << endl;
        return 1;
    }
    */

    //string romName(argv[1]);
    string romName("C:\\Users\\Gauthier\\Desktop\\Pokemon_red.gb");
    ifstream romFile(romName, ios::binary);
    if (!romFile.is_open())
    {
        cerr << "Couldn't open rom " << romName << endl;
        return 1;
    }

    string romContent;
    romFile.seekg(0, std::ios::end);
    romContent.reserve((size_t) romFile.tellg());
    romContent.resize((size_t) romFile.tellg());
    romFile.seekg(0, std::ios::beg);

    romFile.read(&romContent[0], romContent.length());

    CartridgeInfo_t cartridgeInfo;
    ReadRomInformation((unsigned char*)&romContent[0x0134], cartridgeInfo);

    Memory memory;
    memory.Initialize(romContent, cartridgeInfo);

    InterruptsHandler interruptsHandler;
    interruptsHandler.Initialize(memory);

    CPU cpu(memory, interruptsHandler);
    cpu.Initialize(cartridgeInfo);

    while (true)
    {
        cpu.Step(true);
    }

    return 0;
}