// Copyright 2011-2012 Paulo Augusto Peccin. See licence.txt distributed with this file.
package org.javatari.atari.cartridge.formats;
import org.javatari.atari.cartridge.Cartridge;
import org.javatari.atari.cartridge.CartridgeFormat;
import org.javatari.atari.cartridge.CartridgeFormatOption;
import org.javatari.atari.cartridge.ROM;
/**
* Implements the 4K unbanked format. Smaller ROMs will be copied multiple times to fill the entire 4K
*/
public final class Cartridge4K extends Cartridge {
private Cartridge4K(ROM rom) {
super(rom, FORMAT);
// Always use a 4K ROM image, multiplying the ROM internally
bytes = new byte[MAX_SIZE];
int len = rom.content.length;
for (int pos = 0; pos < bytes.length; pos += len)
System.arraycopy(rom.content, 0, bytes, pos, len);
}
private static final int MIN_SIZE = 8;
private static final int MAX_SIZE = 4096;
public static final CartridgeFormat FORMAT = new CartridgeFormat("4K", "4K Atari") {
@Override
public Cartridge createCartridge(ROM rom) {
return new Cartridge4K(rom);
}
@Override
public CartridgeFormatOption getOption(ROM rom) {
if (rom.content.length < MIN_SIZE || rom.content.length > MAX_SIZE || MAX_SIZE % rom.content.length != 0) return null;
return new CartridgeFormatOption(101, this, rom);
}
private static final long serialVersionUID = 1L;
};
public static final long serialVersionUID = 1L;
}