public void doHDMA() {
		if (frameDisabled || !hdmaEnabled) return;
		
		if (doTransfer) {
			if (direction == false) hdmaWritePPU();
			else                    hdmaReadPPU();
		}
		rlc = Util.limit(Size.BYTE, rlc-1);
		doTransfer = isRepeat();
		if (getLineCounter() == 0) {
			rlc = Core.mem.get(Size.BYTE, srcBank, tableAddr);
			tableAddr++;
			if (addressMode == true) { // Indirect
				transferSize = Core.mem.get(Size.SHORT, srcBank, tableAddr);
				tableAddr += 2;
			}
			// Handle special case if rlc == 0(rlc is $43xA)
			// SEE: http://wiki.superfamicom.org/snes/show/DMA+%26+HDMA
			if (rlc == 0) {
				frameDisabled = true;
			}
			doTransfer = true;
		}
	}