public static int get(int addr) {
		if (Util.inRange(addr, 0, 0x00EF)) {	// Zero page
			return mem[addr];
		} else if (Util.inRange(addr, 0x00F0, 0x00FF)) {	// Function registers
			return readReg(addr);
		} else if (Util.inRange(addr, 0x0100, 0x7FFF)) {	// Sound RAM
			return mem[addr];
		} else if (Util.inRange(addr, 0xFFC0, 0xFFFF)) {	// IPL-ROM
			if (iplRomEnable) {
				return iplRom[addr - 0xFFC0];
			} else {
				return iplRam[addr - 0xFFC0];
			}
		}
		
		if (Settings.isTrue(Settings.MEM_THROW_INVALID_ADDR))
			throw new RuntimeException(String.format("APU: Read invalid memory address: 0x%04x",addr));
		
		return 0;
	}