rlm@1: #ifndef VBA_GB_MEMORY_H rlm@1: #define VBA_GB_MEMORY_H rlm@1: rlm@1: #if _MSC_VER > 1000 rlm@1: #pragma once rlm@1: #endif // _MSC_VER > 1000 rlm@1: rlm@1: #include "../Port.h" rlm@1: rlm@1: struct mapperMBC1 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: int32 mapperRAMBank; rlm@1: int32 mapperMemoryModel; rlm@1: int32 mapperROMHighAddress; rlm@1: int32 mapperRAMAddress; rlm@1: }; rlm@1: rlm@1: struct mapperMBC2 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: }; rlm@1: rlm@1: struct mapperMBC3 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: int32 mapperRAMBank; rlm@1: int32 mapperRAMAddress; rlm@1: int32 mapperClockLatch; rlm@1: int32 mapperClockRegister; rlm@1: int32 mapperSeconds; rlm@1: int32 mapperMinutes; rlm@1: int32 mapperHours; rlm@1: int32 mapperDays; rlm@1: int32 mapperControl; rlm@1: int32 mapperLSeconds; rlm@1: int32 mapperLMinutes; rlm@1: int32 mapperLHours; rlm@1: int32 mapperLDays; rlm@1: int32 mapperLControl; rlm@1: //time_t mapperLastTime; rlm@1: u32 mapperLastTime; rlm@1: }; rlm@1: rlm@1: struct mapperMBC5 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: int32 mapperRAMBank; rlm@1: int32 mapperROMHighAddress; rlm@1: int32 mapperRAMAddress; rlm@1: int32 isRumbleCartridge; rlm@1: }; rlm@1: rlm@1: struct mapperMBC7 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: int32 mapperRAMBank; rlm@1: int32 mapperRAMAddress; rlm@1: int32 cs; rlm@1: int32 sk; rlm@1: int32 state; rlm@1: int32 buffer; rlm@1: int32 idle; rlm@1: int32 count; rlm@1: int32 code; rlm@1: int32 address; rlm@1: int32 writeEnable; rlm@1: int32 value; rlm@1: }; rlm@1: rlm@1: struct mapperHuC1 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: int32 mapperRAMBank; rlm@1: int32 mapperMemoryModel; rlm@1: int32 mapperROMHighAddress; rlm@1: int32 mapperRAMAddress; rlm@1: }; rlm@1: rlm@1: struct mapperHuC3 rlm@1: { rlm@1: int32 mapperRAMEnable; rlm@1: int32 mapperROMBank; rlm@1: int32 mapperRAMBank; rlm@1: int32 mapperRAMAddress; rlm@1: int32 mapperAddress; rlm@1: int32 mapperRAMFlag; rlm@1: int32 mapperRAMValue; rlm@1: int32 mapperRegister1; rlm@1: int32 mapperRegister2; rlm@1: int32 mapperRegister3; rlm@1: int32 mapperRegister4; rlm@1: int32 mapperRegister5; rlm@1: int32 mapperRegister6; rlm@1: int32 mapperRegister7; rlm@1: int32 mapperRegister8; rlm@1: }; rlm@1: rlm@1: extern mapperMBC1 gbDataMBC1; rlm@1: extern mapperMBC2 gbDataMBC2; rlm@1: extern mapperMBC3 gbDataMBC3; rlm@1: extern mapperMBC5 gbDataMBC5; rlm@1: extern mapperHuC1 gbDataHuC1; rlm@1: extern mapperHuC3 gbDataHuC3; rlm@1: rlm@1: void mapperMBC1ROM(u16, u8); rlm@1: void mapperMBC1RAM(u16, u8); rlm@1: void mapperMBC2ROM(u16, u8); rlm@1: void mapperMBC2RAM(u16, u8); rlm@1: void mapperMBC3ROM(u16, u8); rlm@1: void mapperMBC3RAM(u16, u8); rlm@1: u8 mapperMBC3ReadRAM(u16); rlm@1: void mapperMBC5ROM(u16, u8); rlm@1: void mapperMBC5RAM(u16, u8); rlm@1: void mapperMBC7ROM(u16, u8); rlm@1: void mapperMBC7RAM(u16, u8); rlm@1: u8 mapperMBC7ReadRAM(u16); rlm@1: void mapperHuC1ROM(u16, u8); rlm@1: void mapperHuC1RAM(u16, u8); rlm@1: void mapperHuC3ROM(u16, u8); rlm@1: void mapperHuC3RAM(u16, u8); rlm@1: u8 mapperHuC3ReadRAM(u16); rlm@1: rlm@1: //extern void (*mapper)(u16,u8); rlm@1: //extern void (*mapperRAM)(u16,u8); rlm@1: //extern u8 (*mapperReadRAM)(u16); rlm@1: rlm@1: extern void memoryUpdateMapMBC1(); rlm@1: extern void memoryUpdateMapMBC2(); rlm@1: extern void memoryUpdateMapMBC3(); rlm@1: extern void memoryUpdateMapMBC5(); rlm@1: extern void memoryUpdateMapMBC7(); rlm@1: extern void memoryUpdateMapHuC1(); rlm@1: extern void memoryUpdateMapHuC3(); rlm@1: rlm@1: #endif // VBA_GB_MEMORY