Example #1
0
_u32 loadL(_u32 address)
{
    address &= 0xFFFFFF;
    _u32* ptr = translate_address_read(address);
    if (ptr == NULL)
        return 0;
    else
        return *ptr;
}
Example #2
0
/* Treat all 32-bit operations as two 16-bit operations */
uint8 loadB(uint32 address)
{
        address &= 0xFFFFFF;

        if(FastReadMap[address >> 16])
         return(FastReadMap[address >> 16][address]);


        uint8* ptr = (uint8*)translate_address_read(address);

        if (ptr)
                return *ptr;

	if(address >= 0x8000 && address <= 0xbfff)
	 return(NGPGfx->read8(address));
	if(address >= 0x4000 && address <= 0x7fff)
	{
	 return(*(uint8 *)(CPUExRAM + address - 0x4000));
	}

	if(address >= 0x70 && address <= 0x7F)
	{
	 return(int_read8(address));
	}

        if(address >= 0x90 && address <= 0x97)
        {
         return(rtc_read8(address));
        }

	if(address >= 0x20 && address <= 0x29)
	{
	 return(timer_read8(address));
	}

	if(address == 0x50)
	 return(SC0BUF);

        if(address == 0xBC)
         return Z80_ReadComm();

	//printf("UNK B R: %08x\n", address);

	return(0);
}
Example #3
0
uint16 loadW(uint32 address)
{
        address &= 0xFFFFFF;

	if(address & 1)
	{
	 uint16 ret;

	 ret = loadB(address);
	 ret |= loadB(address + 1) << 8;

	 return(ret);
	}

	if(FastReadMap[address >> 16])
	 return(MDFN_de16lsb<true>(&FastReadMap[address >> 16][address]));

        uint16* ptr = (uint16*)translate_address_read(address);
	if(ptr)
                return MDFN_de16lsb<true>(ptr);

        if(address >= 0x8000 && address <= 0xbfff)
         return(NGPGfx->read16(address));

        if(address >= 0x4000 && address <= 0x7fff)
	{
         return(MDFN_de16lsb<true>(CPUExRAM + address - 0x4000));
	}
	if(address == 0x50)
	 return(SC0BUF);

        if(address >= 0x70 && address <= 0x7F)
	{
	 uint16 ret;

	 ret = int_read8(address);
	 ret |= int_read8(address + 1) << 8;

	 return(ret);
	}

	if(address >= 0x90 && address <= 0x97)
	{
	 uint16 ret;

	 ret = rtc_read8(address);
	 ret |= rtc_read8(address + 1) << 8;

	 return(ret);
	}

        if(address >= 0x20 && address <= 0x29)
	{
	 uint16 ret;

	 ret = timer_read8(address);
	 ret |= timer_read8(address + 1) << 8;

	 return(ret);
	}

	if(address == 0xBC)
	 return Z80_ReadComm();

	//printf("UNK W R: %08x\n", address);

	return(0);
}