@Override
	public int getMetricInternal() {
		EflUtil.runToAddressNoLimit(0, 0, curGb.pokemon.afterDVGenerationAddress, curGb.pokemon.afterWildDVGenerationAddress);
		int a = curGb.getRegister(Register.AF) >> 8;
		int b = curGb.getRegister(Register.BC) >> 8;
		int ab = ((a & 0xFF) << 8) | (b & 0xFF);

		int atk = (a >> 4) & 0xF;
		int def = (a >> 0) & 0xF;
		int spd = (b >> 4) & 0xF;
		int spc = (b >> 0) & 0xF;
		int hp = ((atk&1)<<3) + ((def&1)<<2) + ((spd&1)<<1) + (spc&1);

//		System.out.println("DVs: atk "+atk+", def "+def+", spd "+spd+", spc "+spc);

		if(atk < minAtkDV) return 0;
		if(def < minDefDV) return 0;
		if(spd < minSpdDV) return 0;
		if(spc < minSpcDV) return 0;
		if(hp > maxHPDV) return 0;

		if(whitelist.length > 0 && !Arrays.asList(whitelist).contains(ab)) return 0;

		System.out.println("DVs: " + Util.toHex(ab, 4));

		return 1;
	}