uint8 FMALU::do_alucmds(uint32 addr)
{
- printf("ALU: ADDR=%04x, cmd = %02x", addr, command_reg);
+ // printf("ALU: ADDR=%04x, cmd = %02x\n", addr, command_reg);
if(addr >= 0x8000) {
mask_reg = 0xff;
return 0xff;
uint32 FMALU::read_data8(uint32 id)
{
- //if((command_reg & 0x80) == 0) return 0xff;
switch(id) {
case ALU_CMDREG:
if((multimode_accessmask & (1 << color)) != 0) {
return 0xff;
} else {
+ if(use_alu) {
+ return alu->read_data8((((addr + offset) & mask) | (pagemod << 13)) + page_offset + ALU_WRITE_PROXY);
+ }
retval = gvram[(((addr + offset) & mask) | (pagemod << 13)) + page_offset];
return retval;
}
if((multimode_accessmask & (1 << pagemod)) != 0) {
return 0xff;
} else {
+ if(use_alu) {
+ return alu->read_data8((((addr + offset) & mask) | (pagemod << 14)) + page_offset + ALU_WRITE_PROXY);
+ }
retval = gvram[(((addr + offset) & mask) | (pagemod << 14)) + page_offset];
return retval;
}
pagemod = (addr & 0xe000) >> 13;
if((multimode_accessmask & (1 << color)) == 0) {
if(use_alu) {
- dummy = alu->read_data8(((addr + offset) & mask) + ALU_WRITE_PROXY + page_offset);
+ dummy = alu->read_data8((((addr + offset) & mask) | (pagemod << 13)) + page_offset + ALU_WRITE_PROXY);
+ //dummy = alu->read_data8(((addr + offset) & mask) + ALU_WRITE_PROXY + page_offset);
return;
}
//gvram[(((addr + offset) & mask) | (pagemod << 13)) + page_offset] = val8;
pagemod = (addr & 0xc000) >> 14;
if((multimode_accessmask & (1 << pagemod)) == 0) {
if(use_alu) {
- dummy = alu->read_data8(((addr + offset) & mask) + ALU_WRITE_PROXY + page_offset);
+ dummy = alu->read_data8((((addr + offset) & mask) | (pagemod << 14)) + page_offset + ALU_WRITE_PROXY);
+ // dummy = alu->read_data8(((addr + offset) & mask) + ALU_WRITE_PROXY + page_offset);
return;
}
gvram[(((addr + offset) & mask) | (pagemod << 14)) + page_offset] = val8;