protected int readHWReg(Size size, int addr) {
		int reg = addr - 0x2000;
		if (mmap[reg] == null) {
			//Log.err(String.format("Read Memory Mapped register 0x%04x not implemented.", addr));
			if (Settings.get(Settings.MEM_THROW_INVALID_ADDR).equals("true"))
				throw new RuntimeException(String.format("Read Memory Mapped register 0x%04x not implemented.", addr));
			return 0;
		}
		if (size == Size.SHORT) {
			if (mmap[reg+1] == null) {
				//mmap[addr-0x2000] = new UnimplementedHardwareRegister();
				//Log.err(String.format("Read Memory Mapped register 0x%04x not implemented.", addr+1));
				if (Settings.get(Settings.MEM_THROW_INVALID_ADDR).equals("true"))
					throw new RuntimeException(String.format("Read Memory Mapped register 0x%04x not implemented.", addr+1));
				return 0;
			}
			
			// LOW ALWAYS GOES FIRST
			int val = mmap[reg].getValue();
			val |= mmap[reg+1].getValue() << 8;
			return val;
		} else {
			return mmap[reg].getValue();
		}
	}