- [NEW] Sprites funcionant
- [NEW] OAM DMA copy funcionant
This commit is contained in:
26
mem.cpp
26
mem.cpp
@@ -12,9 +12,14 @@ namespace mem
|
||||
void (*setTag)(uint16_t, uint8_t);
|
||||
void (*saveState)(FILE*);
|
||||
void (*loadState)(FILE*);
|
||||
|
||||
uint8_t*(*rawPtr)(uint16_t);
|
||||
|
||||
char *title = nullptr;
|
||||
|
||||
uint16_t dma_address = 0;
|
||||
uint8_t dma_pos = 160;
|
||||
uint16_t dma_dots = 0;
|
||||
|
||||
void init(uint8_t* rom, const int size)
|
||||
{
|
||||
//if (memory) free(memory);
|
||||
@@ -33,4 +38,23 @@ namespace mem
|
||||
};
|
||||
}
|
||||
|
||||
void init_dma_transfer(uint8_t source)
|
||||
{
|
||||
dma_address = source << 8;
|
||||
dma_pos = 0;
|
||||
dma_dots = 0;
|
||||
}
|
||||
|
||||
void update_mapped(const uint32_t dt)
|
||||
{
|
||||
if (dma_pos<160) {
|
||||
dma_dots += dt;
|
||||
while (dma_dots >= 4 && dma_pos<160) {
|
||||
dma_dots -= 4;
|
||||
mem::writeMem(0xfe00|dma_pos, mem::readMem(dma_address|dma_pos));
|
||||
dma_pos++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user