load method

void load(
  1. List<int>? storyBytes
)

Loads the given Z-Machine story file storyBytes into the interpreter memory.

Implementation

void load(List<int>? storyBytes) {
  if (storyBytes == null) return;

  rawBytes.clear();
  rawBytes.addAll(storyBytes);
  // print("First 10 Story Bytes");
  // print(rawBytes.getRange(0,10));

  ver = ZMachine.intToVer(rawBytes[Header.version]);

  var result =
      _supportedEngines.where(((Engine m) => m.version == ver)).toList();

  if (result.length != 1) {
    throw Exception('Z-Machine version $ver not supported.');
  } else {
    engine = result[0];
  }

  log.info('Zart: Using Z-Machine ${engine.version}.');

  engine.mem = MemoryMap(rawBytes);

  engine.visitHeader();

  isLoaded = true;
}