Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   /*
    * @(#)AmigaDisplayInfo.java  1.0  2011-09-04
    * 
    * Copyright (c) 2011 Werner Randelshofer, Goldau, Switzerland.
    * All rights reserved.
    * 
    * You may not use, copy or modify this file, except in compliance with the
    * license agreement you entered into with Werner Randelshofer.
    * For details see accompanying license terms.
   */
  package org.monte.media.anim;
  
  import java.util.HashMap;
  import java.util.Map;
  import java.util.TreeMap;

AmigaDisplayInfo.

Author(s):
Werner Randelshofer
Version:
1.0 2011-09-04 Created.
  
  public class AmigaDisplayInfo {
  
      public final int camg;
      public final String name;
      public final int textOverscanWidth,textOverscanHeight;
      public final int maxOverscanWidth,maxOverscanHeight;
      public final int minimalSizeWidth,minimalSizeHeight;
      public final int maximalSizeWidth,maximalSizeHeight;
      public final int colorRegisterDepth;
    
Ticks per pixel X/Y
  
      public final int resolutionX,resolutionY;
    
Approximation in nanoseconds.
  
      public final int pixelSpeed;
      public final int fps;
      private static TreeMap<IntegerAmigaDisplayInfoinfos;
  
      public AmigaDisplayInfo(int camgString nameDimension textOverscanDimension maxOverscanDimension minimalSizeDimension maximalSizeint colorRegisterDepthDimension resolutionint pixelSpeedint fps) {
          this. = camg;
          this. = name;
          this. = textOverscan.width;
          this. = textOverscan.height;
          this. = maxOverscan.width;
          this. = maxOverscan.height;
          this. = minimalSize.width;
          this. = minimalSize.height;
          this. = maximalSize.width;
          this. = maximalSize.height;
          this. = colorRegisterDepth;
          this. = resolution.width;
          this. = resolution.height;
          this. = pixelSpeed;
          this. = fps;
      }
      
      public boolean isOCS() {
          return ==4;
      }
      
      public boolean isHAM() {
          return (&)==;
      }
      public boolean isEHB() {
          return (&)==;
      }
      public boolean isInterlace() {
          boolean isInterlace;
          switch ( & ) {
              case :
              case :
                  isInterlace=(&)==;
                  break;
              case :
                  isInterlace=(&)==;
                  break;
              default:
                  isInterlace=false;
                  break;
          }
          return isInterlace;
      }
  
      public static Map<IntegerAmigaDisplayInfogetAllInfos() {
          if ( == null) {
               = new TreeMap<IntegerAmigaDisplayInfo>();
              for (Object[] e : ) {
                  int i = 0;
                  int camg = (Integere[i++];
                  String name = (Stringe[i++];
                  Dimension textOverscan = new Dimension((Integere[i++], (Integere[i++]);
                  Dimension maxOverscan = new Dimension((Integere[i++], (Integere[i++]);
                  Dimension minimalSize = new Dimension((Integere[i++], (Integere[i++]);
                  Dimension maximalSize = new Dimension((Integere[i++], (Integere[i++]);
                  int colorRegisterDepth = (Integere[i++];
                  Dimension resolution = new Dimension((Integere[i++], (Integere[i++]);
                  int pixelSpeed = (Integere[i++];
                 Integer fps = .get(camg & ).;
                 if (fps == null) {
                     ..println("NO FPS  0x" + Integer.toHexString(camg) + " " + name);
                 }
                 .put(camgnew AmigaDisplayInfo(camgnametextOverscanmaxOverscanminimalSizemaximalSizecolorRegisterDepthresolutionpixelSpeedfps));
             }
         }
         return Collections.unmodifiableMap();
     }
 
     public static AmigaDisplayInfo getInfo(int camg) {
         return getAllInfos().get(camg);
     }
    
    
CAMG monitor ID mask.
 
     public final static int MONITOR_ID_MASK = 0xffff1000;
    
Default ID chooses a system dependent screen mode. We always fall back to NTSC OCS with 60fps. The default monitor ID triggers OCS mode! OCS stands for "Original Chip Set". The OCS chip set only had 4 bits per color register. All later chip sets hat 8 bits per color register.
 
     public final static int DEFAULT_MONITOR_ID = 0x00000000;
    
NTSC, 60fps, 44:52.
 
     public final static int NTSC_MONITOR_ID = 0x00011000;
    
PAL, 50fps, 44:44.
 
     public final static int PAL_MONITOR_ID = 0x00021000;
    
MULTISCAN (VGA), 58fps, 44:44.
 
     public final static int MULTISCAN_MONITOR_ID = 0x00031000;
    
A2024, 60fps (I don't know the real value).
 
     public final static int A2024_MONITOR_ID = 0x00041000;
    
PROTO, 60fps (I don't know the real value).
 
     public final static int PROTO_MONITOR_ID = 0x00051000;
    
EURO72, 69fps, 44:44.
 
     public final static int EURO72_MONITOR_ID = 0x00061000;
    
EURO36, 73fps, 44:44.
 
     public final static int EURO36_MONITOR_ID = 0x00071000;
    
SUPER72, 71fps, 34:40.
 
     public final static int SUPER72_MONITOR_ID = 0x00081000;
    
DBLNTSC, 58fps, 44:52.
 
     public final static int DBLNTSC_MONITOR_ID = 0x00091000;
    
DBLPAL, 48fps, 44:44.
 
     public final static int DBLPAL_MONITOR_ID = 0x000a1000;
     
     public static int[] getMonitorIds() {
         return new int[] {
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             ,
         };
     }
      public static int[] getGoodMonitorIds() {
         return new int[] {
             ,
             ,
             ,
             ,
             //A2024_MONITOR_ID,
             //PROTO_MONITOR_ID,
             ,
             ,
             ,
             ,
             ,
         };
     }
     public static int getFPS(int camg) {
         MonitorItem mi.get(camg&);
                 return mi==null?0:mi.fps;
     }
     public  static String getMonitorName(int camg) {
         MonitorItem mi.get(camg&);
                 return mi==null?null:mi.name;
     }
 
 public    boolean isDualPlayfield() {
     }
 
     private static class MonitorItem {
         String name;
         int fps;
 
         public MonitorItem(String nameint fps) {
             this. = name;
             this. = fps;
         }
         
     }
     private final static TreeMap<IntegerMonitorItemmonitorToFPSMap;
 
     static {
          = new TreeMap<IntegerMonitorItem>();
         .put(new MonitorItem("NTSC OCS",60));
         .put(new MonitorItem("NTSC",60));
         .put(new MonitorItem("PAL",50));
         .put(,new MonitorItem("MULTISCAN", 58));
         .put(new MonitorItem("A2024",60));
         .put(new MonitorItem("PROTO",60));
         .put(new MonitorItem("EURO72",69));
         .put(new MonitorItem("EURO36",73));
         .put(new MonitorItem("SUPER72",71));
         .put(new MonitorItem("DBLNTSC",58));
         .put(new MonitorItem("DBLPAL",48));
     }
    
CAMG display properties.
 
     public final static int COLORMODE_MASK = 0x00000880;
    
CAMG HAM mode.
 
     public final static int HAM_COLORMODE = 0x00000800;
    
CAMG EHB mode.
 
     public final static int EHB_COLORMODE = 0x00000080;
    
CAMG interlace mask. Only valid for PAL and NTSC monitors.
 
     public final static int PALNTSC_INTERLACE_MASK = 0x00000004;
    
CAMG interlace mode. Only valid for PAL and NTSC monitors.
 
     public final static int PALNTSC_INTERLACE_MODE = 0x00000004;
    
CAMG interlace mask. Only valid for MULTISCAN monitors.
 
     public final static int MULTISCAN_INTERLACE_MASK = 0x00000001;
    
CAMG interlace mode. Only valid for MULTISCAN monitors.
 
     public final static int MULTISCAN_INTERLACE_MODE = 0x00000001;
    
CAMG dual playfield mask.
 
     public final static int DUALPLAYFIELD_MASK = 0x00000400;
    
CAMG dual playfield mode.
 
     public final static int DUALPLAYFIELD_MODE = 0x00000400;
    
Well known CAMG formats.
 
     public final static int NTSC_320x200_44t52_60fps = 0x11000;
     public final static int NTSC_320x400_44t26_interlaced_60fps = 0x11004;
     public final static int NTSC_640x200_22t52_60fps = 0x19000;
     public final static int NTSC_640x400_22t26_interlaced_60fps = 0x19004;
     public final static int NTSC_1280x200_11t52_60fps = 0x19020;
     public final static int NTSC_1280x400_11t26_interlaced_60fps = 0x19024;
     public final static int PAL_320x256_44t44_50fps = 0x21000;
     public final static int PAL_320x512_44t22_interlaced_50fps = 0x21004;
     public final static int PAL_640x256_22t44_50fps = 0x29000;
     public final static int PAL_640x512_22t22_interlaced_50fps = 0x29004;
     public final static int PAL_1280x256_11t44_50fps = 0x29020;
     public final static int PAL_1280x512_11t22_interlaced_50fps = 0x29024;
     public final static int MULTISCAN_160x480_88t22_58fps = 0x31004;
     public final static int MULTISCAN_160x960_88t11_interlaced_58fps = 0x31005;
     public final static int MULTISCAN_320x480_44t22_58fps = 0x39004;
     public final static int MULTISCAN_320x960_44t11_interlaced_58fps = 0x39005;
     public final static int MULTISCAN_640x480_22t22_58fps = 0x39024;
     public final static int MULTISCAN_640x960_22t11_interlaced_58fps = 0x39025;
     public final static int EURO72_640x400_22t22_69fps = 0x69024;
     public final static int EURO72_640x800_22t11_interlaced_69fps = 0x69025;
     public final static int EURO36_320x200_44t44_73fps = 0x71000;
     public final static int EURO36_320x400_44t22_interlaced_73fps = 0x71004;
     public final static int EURO36_640x200_22t44_73fps = 0x79000;
     public final static int EURO36_640x400_22t22_interlaced_73fps = 0x79004;
     public final static int EURO36_1280x200_11t44_73fps = 0x79020;
     public final static int EURO36_1280x400_11t22_interlaced_73fps = 0x79024;
     public final static int SUPER72_200x300_68t40_71fps = 0x81000;
     public final static int SUPER72_200x600_68t20_interlaced_71fps = 0x81004;
     public final static int SUPER72_400x300_34t40_71fps = 0x89000;
     public final static int SUPER72_400x600_34t20_interlaced_71fps = 0x89004;
     public final static int SUPER72_800x300_17t40_71fps = 0x89020;
     public final static int SUPER72_800x600_17t20_interlaced_71fps = 0x89024;
     public final static int DBLNTSC_320x200_44t52_58fps = 0x91000;
     public final static int DBLNTSC_320x400_44t26_58fps = 0x91004;
     public final static int DBLNTSC_320x800_44t13_interlaced_58fps = 0x91005;
     public final static int DBLNTSC_640x200_22t52_58fps = 0x99000;
     public final static int DBLNTSC_640x400_22t26_58fps = 0x99004;
     public final static int DBLNTSC_640x800_22t13_interlaced_58fps = 0x99005;
     public final static int DBLPAL_320x256_44t44_48fps = 0xa1000;
     public final static int DBLPAL_320x512_44t22_48fps = 0xa1004;
     public final static int DBLPAL_320x1024_44t11_interlaced_48fps = 0xa1005;
     public final static int DBLPAL_640x256_22t44_48fps = 0xa9000;
     public final static int DBLPAL_640x512_22t22_48fps = 0xa9004;
     public final static int DBLPAL_640x1024_22t11_interlaced_48fps = 0xa9005;
     private final static Object[][] infoTable = {
 
 {0x0, "NTSC OCS:LowRes"// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x4, "NTSC OCS:LowRes Interlace"// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x80, " OCS"// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x84, " OCS"// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x400, " OCS"// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x404, " OCS"// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x440, " OCS"// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x444, " OCS"// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x800, " OCS"// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x804, " OCS"// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x8000, "NTSC OCS:HighRes"// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x8004, "NTSC OCS:HighRes Interlace"// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x8020, "NTSC OCS:SuperHighRes"// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x8024, "NTSC OCS:SuperHighRes Interlace"// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x8080, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x8084, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x80a0, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x80a4, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x8400, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x8404, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x8420, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x8424, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x8440, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x8444, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x8460, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x8464, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x8800, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x8804, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x8820, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x8824, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 4 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x11000, "NTSC:LowRes"// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x11004, "NTSC:LowRes Interlace"// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x11080, ""// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x11084, ""// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x11400, ""// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x11404, ""// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x11440, ""// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x11444, ""// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x11800, ""// camg, name
 , 320, 200 // text overscan
 , 362, 241 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 52 // resolution
 , 140 // pixel speed
 },//
 
 {0x11804, ""// camg, name
 , 320, 400 // text overscan
 , 362, 482 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 26 // resolution
 , 140 // pixel speed
 },//
 
 {0x19000, "NTSC:HighRes"// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x19004, "NTSC:HighRes Interlace"// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x19020, "NTSC:SuperHighRes"// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x19024, "NTSC:SuperHighRes Interlace"// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x19080, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x19084, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x190a0, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x190a4, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x19400, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x19404, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x19420, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x19424, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x19440, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x19444, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x19460, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x19464, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x19800, ""// camg, name
 , 640, 200 // text overscan
 , 724, 241 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 52 // resolution
 , 70 // pixel speed
 },//
 
 {0x19804, ""// camg, name
 , 640, 400 // text overscan
 , 724, 482 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 26 // resolution
 , 70 // pixel speed
 },//
 
 {0x19820, ""// camg, name
 , 1280, 200 // text overscan
 , 1448, 241 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 52 // resolution
 , 35 // pixel speed
 },//
 
 {0x19824, ""// camg, name
 , 1280, 400 // text overscan
 , 1448, 482 // max overscan
 , 64, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 11, 26 // resolution
 , 35 // pixel speed
 },//
 
 {0x21000, "PAL:LowRes"// camg, name
 , 320, 256 // text overscan
 , 362, 283 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 44 // resolution
 , 140 // pixel speed
 },//
 
 {0x21004, "PAL:LowRes Interlace"// camg, name
 , 320, 512 // text overscan
 , 362, 566 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 22 // resolution
 , 140 // pixel speed
 },//
 
 {0x21080, ""// camg, name
 , 320, 256 // text overscan
 , 362, 283 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 44 // resolution
 , 140 // pixel speed
 },//
 
 {0x21084, ""// camg, name
 , 320, 512 // text overscan
 , 362, 566 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 22 // resolution
 , 140 // pixel speed
 },//
 
 {0x21400, ""// camg, name
 , 320, 256 // text overscan
 , 362, 283 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 44 // resolution
 , 140 // pixel speed
 },//
 
 {0x21404, ""// camg, name
 , 320, 512 // text overscan
 , 362, 566 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 22 // resolution
 , 140 // pixel speed
 },//
 
 {0x21440, ""// camg, name
 , 320, 256 // text overscan
 , 362, 283 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 44 // resolution
 , 140 // pixel speed
 },//
 
 {0x21444, ""// camg, name
 , 320, 512 // text overscan
 , 362, 566 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 22 // resolution
 , 140 // pixel speed
 },//
 
 {0x21800, ""// camg, name
 , 320, 256 // text overscan
 , 362, 283 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 44 // resolution
 , 140 // pixel speed
 },//
 
 {0x21804, ""// camg, name
 , 320, 512 // text overscan
 , 362, 566 // max overscan
 , 16, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 44, 22 // resolution
 , 140 // pixel speed
 },//
 
 {0x29000, "PAL:HighRes"// camg, name
 , 640, 256 // text overscan
 , 724, 283 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 44 // resolution
 , 70 // pixel speed
 },//
 
 {0x29004, "PAL:HighRes Interlace"// camg, name
 , 640, 512 // text overscan
 , 724, 566 // max overscan
 , 32, 1 // minimal size
 , 16368, 16384 // maximal size
 , 8 // color register depth
 , 22, 22 // resolution
 , 70 // pixel speed
 },//
 
 {0x29020, "PAL:SuperHighRes"// camg, name
, 1280, 256 // text overscan
, 1448, 283 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 44 // resolution
, 35 // pixel speed
},//
{0x29024, "PAL:SuperHighRes Interlace"// camg, name
, 1280, 512 // text overscan
, 1448, 566 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 22 // resolution
, 35 // pixel speed
},//
{0x29080, ""// camg, name
, 640, 256 // text overscan
, 724, 283 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 44 // resolution
, 70 // pixel speed
},//
{0x29084, ""// camg, name
, 640, 512 // text overscan
, 724, 566 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 22 // resolution
, 70 // pixel speed
},//
{0x290a0, ""// camg, name
, 1280, 256 // text overscan
, 1448, 283 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 44 // resolution
, 35 // pixel speed
},//
{0x290a4, ""// camg, name
, 1280, 512 // text overscan
, 1448, 566 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 22 // resolution
, 35 // pixel speed
},//
{0x29400, ""// camg, name
, 640, 256 // text overscan
, 724, 283 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 44 // resolution
, 70 // pixel speed
},//
{0x29404, ""// camg, name
, 640, 512 // text overscan
, 724, 566 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 22 // resolution
, 70 // pixel speed
},//
{0x29420, ""// camg, name
, 1280, 256 // text overscan
, 1448, 283 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 44 // resolution
, 35 // pixel speed
},//
{0x29424, ""// camg, name
, 1280, 512 // text overscan
, 1448, 566 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 22 // resolution
, 35 // pixel speed
},//
{0x29440, ""// camg, name
, 640, 256 // text overscan
, 724, 283 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 44 // resolution
, 70 // pixel speed
},//
{0x29444, ""// camg, name
, 640, 512 // text overscan
, 724, 566 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 22 // resolution
, 70 // pixel speed
},//
{0x29460, ""// camg, name
, 1280, 256 // text overscan
, 1448, 283 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 44 // resolution
, 35 // pixel speed
},//
{0x29464, ""// camg, name
, 1280, 512 // text overscan
, 1448, 566 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 22 // resolution
, 35 // pixel speed
},//
{0x29800, ""// camg, name
, 640, 256 // text overscan
, 724, 283 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 44 // resolution
, 70 // pixel speed
},//
{0x29804, ""// camg, name
, 640, 512 // text overscan
, 724, 566 // max overscan
, 32, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 22 // resolution
, 70 // pixel speed
},//
{0x29820, ""// camg, name
, 1280, 256 // text overscan
, 1448, 283 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 44 // resolution
, 35 // pixel speed
},//
{0x29824, ""// camg, name
, 1280, 512 // text overscan
, 1448, 566 // max overscan
, 64, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 11, 22 // resolution
, 35 // pixel speed
},//
{0x31000, "MULTISCAN:ExtraLowRes"// camg, name
, 160, 240 // text overscan
, 164, 240 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 44 // resolution
, 140 // pixel speed
},//
{0x31004, "MULTISCAN:ExtraLowRes"// camg, name
, 160, 480 // text overscan
, 164, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 22 // resolution
, 140 // pixel speed
},//
{0x31005, "MULTISCAN:ExtraLowRes Interlace"// camg, name
, 160, 960 // text overscan
, 164, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 11 // resolution
, 140 // pixel speed
},//
{0x31080, ""// camg, name
, 160, 240 // text overscan
, 164, 240 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 44 // resolution
, 140 // pixel speed
},//
{0x31084, ""// camg, name
, 160, 480 // text overscan
, 164, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 22 // resolution
, 140 // pixel speed
},//
{0x31085, ""// camg, name
, 160, 960 // text overscan
, 164, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 11 // resolution
, 140 // pixel speed
},//
{0x31404, ""// camg, name
, 160, 480 // text overscan
, 164, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 22 // resolution
, 140 // pixel speed
},//
{0x31405, ""// camg, name
, 160, 960 // text overscan
, 164, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 11 // resolution
, 140 // pixel speed
},//
{0x31444, ""// camg, name
, 160, 480 // text overscan
, 164, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 22 // resolution
, 140 // pixel speed
},//
{0x31445, ""// camg, name
, 160, 960 // text overscan
, 164, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 11 // resolution
, 140 // pixel speed
},//
{0x31800, ""// camg, name
, 160, 240 // text overscan
, 164, 240 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 44 // resolution
, 140 // pixel speed
},//
{0x31804, ""// camg, name
, 160, 480 // text overscan
, 164, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 22 // resolution
, 140 // pixel speed
},//
{0x31805, ""// camg, name
, 160, 960 // text overscan
, 164, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 88, 11 // resolution
, 140 // pixel speed
},//
{0x39000, "MULTISCAN:LowRes"// camg, name
, 320, 240 // text overscan
, 328, 240 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 44, 44 // resolution
, 70 // pixel speed
},//
{0x39004, "MULTISCAN:LowRes"// camg, name
, 320, 480 // text overscan
, 328, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 44, 22 // resolution
, 70 // pixel speed
},//
{0x39005, "MULTISCAN:LowRes Interlace"// camg, name
, 320, 960 // text overscan
, 328, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 44, 11 // resolution
, 70 // pixel speed
},//
{0x39020, "MULTISCAN:Productivity"// camg, name
, 640, 240 // text overscan
, 656, 240 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 44 // resolution
, 35 // pixel speed
},//
{0x39024, "MULTISCAN:Productivity"// camg, name
, 640, 480 // text overscan
, 656, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 22 // resolution
, 35 // pixel speed
},//
{0x39025, "MULTISCAN:Productivity Interl."// camg, name
, 640, 960 // text overscan
, 656, 960 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 22, 11 // resolution
, 35 // pixel speed
},//
{0x39080, ""// camg, name
, 320, 240 // text overscan
, 328, 240 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 44, 44 // resolution
, 70 // pixel speed
},//
{0x39084, ""// camg, name
, 320, 480 // text overscan
, 328, 480 // max overscan
, 16, 1 // minimal size
, 16368, 16384 // maximal size
, 8 // color register depth
, 44, 22 // resolution