// this is essentially a copy of ../win32/IOViewRegisters.h using translatable
// strings and more consts
struct IOData {
  u16 *address;
  u16 offset;
  const wxChar *name;
  u16 write;
  const wxChar *bits[16];
};

/* const */ IOData ioregs[] = { // not const so tranlation can be done once
  {
    &DISPCNT, 0, wxTRANSLATE("0x4000000-DISPCNT"), 0xFFF7,
    {
      wxT(""),
      wxT(""),
      wxTRANSLATE("BG Mode (3 bits)"),
      wxTRANSLATE("CGB Mode"),
      wxTRANSLATE("Display Frame"),
      wxTRANSLATE("H-Blank Interval OBJ processing"),
      wxTRANSLATE("OBJ Character mapping"),
      wxTRANSLATE("Forced blank"),
      wxTRANSLATE("BG0"),
      wxTRANSLATE("BG1"),
      wxTRANSLATE("BG2"),
      wxTRANSLATE("BG3"),
      wxTRANSLATE("OBJ"),
      wxTRANSLATE("WIN0"),
      wxTRANSLATE("WIN1"),
      wxTRANSLATE("OBJWIN")
    }
  },
  {
    &DISPSTAT, 4, wxTRANSLATE("0x4000004-DISPSTAT"), 0xFF38,
    {
      wxTRANSLATE("V-Blank Status"),
      wxTRANSLATE("H-Blank Status"),
      wxTRANSLATE("VCOUNT Evaluation"),
      wxTRANSLATE("V-Blank Interrupt Enable"),
      wxTRANSLATE("H-Blank Interrupt Enable"),
      wxTRANSLATE("VCOUNT Match Interrupt Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("VCOUNT setting (8 bits)")
    }
  },
  {
    &VCOUNT, 6, wxTRANSLATE("0x4000006-VCOUNT"), 0x0000,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("VCOUNT (8 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG0CNT, 8, wxTRANSLATE("0x4000008-BG0CNT"), 0xDFCF,
    {
      wxT(""),
      wxTRANSLATE("Priority (2 bits)"),
      wxT(""),
      wxTRANSLATE("Char base (2 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Mosaic"),
      wxTRANSLATE("16/256 colors"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Screen Base Block (5 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Size (2 bits)")
    }
  },
  {
    &BG1CNT, 0xA, wxTRANSLATE("0x400000A-BG1CNT"), 0xDFCF,
    {
      wxT(""),
      wxTRANSLATE("Priority (2 bits)"),
      wxT(""),
      wxTRANSLATE("Char base (2 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Mosaic"),
      wxTRANSLATE("16/256 colors"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Screen Base Block (5 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Size (2 bits)")
    }
  },
  {
    &BG2CNT, 0xC, wxTRANSLATE("0x400000C-BG2CNT"), 0xFFCF,
    {
      wxT(""),
      wxTRANSLATE("Priority (2 bits)"),
      wxT(""),
      wxTRANSLATE("Char base (2 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Mosaic"),
      wxTRANSLATE("16/256 colors"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Screen Base Block (5 bits)"),
      wxTRANSLATE("Area Overflow"),
      wxT(""),
      wxTRANSLATE("Size (2 bits)")
    }
  },
  {
    &BG3CNT, 0xE, wxTRANSLATE("0x400000E-BG3CNT"), 0xFFCF,
    {
      wxT(""),
      wxTRANSLATE("Priority (2 bits)"),
      wxT(""),
      wxTRANSLATE("Char base (2 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Mosaic"),
      wxTRANSLATE("16/256 colors"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Screen Base Block (5 bits)"),
      wxTRANSLATE("Area Overflow"),
      wxT(""),
      wxTRANSLATE("Size (2 bits)")
    }
  },
  {
    &BG0HOFS, 0x10, wxTRANSLATE("0x4000010-BG0HOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Horizontal Offset (9 bits, W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG0VOFS, 0x12, wxTRANSLATE("0x4000012-BG0VOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Vertical Offset (9 bits, W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG1HOFS, 0x14, wxTRANSLATE("0x4000014-BG1HOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Horizontal Offset (9 bits, W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG1VOFS, 0x16, wxTRANSLATE("0x4000016-BG1VOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Vertical Offset (9 bits, W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG2HOFS, 0x18, wxTRANSLATE("0x4000018-BG2HOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Horizontal Offset (9 bits, W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG2VOFS, 0x1A, wxTRANSLATE("0x400001A-BG2VOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Vertical Offset (9 bits, W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG3HOFS, 0x1C, wxTRANSLATE("0x400001C-BG3HOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Horizontal Offset (9 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG3VOFS, 0x1E, wxTRANSLATE("0x400001E-BG3VOFS"), 0x01FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Vertical Offset (9 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT("")
    }
  },
  {
    &BG2PA, 0x20, wxTRANSLATE("0x4000020-BG2PA"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dx (16 bits,W)")
    }
  },
  {
    &BG2PB, 0x22, wxTRANSLATE("0x4000022-BG2PB"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dmx (16 bits,W)")
    }
  },
  {
    &BG2PC, 0x24, wxTRANSLATE("0x4000024-BG2PC"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dy (16 bits,W)")
    }
  },
  {
    &BG2PD, 0x26, wxTRANSLATE("0x4000026-BG2PD"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dmy (16 bits,W)")
    }
  },
  {
    &BG2X_L, 0x28, wxTRANSLATE("0x4000028-BG2X_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("X low bits (16 bits,W)")
    }
  },
  {
    &BG2X_H, 0x2A, wxTRANSLATE("0x400002A-BG2X_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("X high bits (12 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &BG2Y_L, 0x2C, wxTRANSLATE("0x400002C-BG2Y_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Y low bits (16 bits,W)")
    }
  },
  {
    &BG2Y_H, 0x2E, wxTRANSLATE("0x400002E-BG2Y_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Y hight bits (12 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &BG3PA, 0x30, wxTRANSLATE("0x4000030-BG3PA"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dx (16 bits,W)")
    }
  },
  {
    &BG3PB, 0x32, wxTRANSLATE("0x4000032-BG3PB"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dmx (16 bits,W)")
    }
  },
  {
    &BG3PC, 0x34, wxTRANSLATE("0x4000034-BG3PC"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dy (16 bits,W)")
    }
  },
  {
    &BG3PD, 0x36, wxTRANSLATE("0x4000036-BG3PD"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("dmy (16 bits,W)")
    }
  },
  {
    &BG3X_L, 0x38, wxTRANSLATE("0x4000038-BG3X_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("X low bits (16 bits,W)")
    }
  },
  {
    &BG3X_H, 0x3A, wxTRANSLATE("0x400003A-BG3X_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("X hight bits (12 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &BG3Y_L, 0x3C, wxTRANSLATE("0x400003C-BG3Y_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Y low bits (16 bits,W)")
    }
  },
  {
    &BG3Y_H, 0x3E, wxTRANSLATE("0x400003E-BG3Y_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Y hight bits (12 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &WIN0H, 0x40, wxTRANSLATE("0x4000040-WIN0H"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 0 lower-right X (8 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 0 upper-left X (8 bits,W)"),
    }
  },
  {
    &WIN1H, 0x42, wxTRANSLATE("0x4000042-WIN1H"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 1 lower-right X (8 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 1 upper-left (8 bits,W)"),
    }
  },
  {
    &WIN0V, 0x44, wxTRANSLATE("0x4000044-WIN0V"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 0 lower-right Y (8 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 0 upper-left Y (8 bits,W)"),
    }
  },
  {
    &WIN1V, 0x46, wxTRANSLATE("0x4000046-WIN1V"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 1 lower-right Y (8 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Win 1 upper-left Y (8 bits,W)"),
    }
  },
  {
    &WININ, 0x48, wxTRANSLATE("0x4000048-WININ"), 0x3F3F,
    {
      wxTRANSLATE("WIN0 BG0"),
      wxTRANSLATE("WIN0 BG1"),
      wxTRANSLATE("WIN0 BG2"),
      wxTRANSLATE("WIN0 BG3"),
      wxTRANSLATE("WIN0 OBJ"),
      wxTRANSLATE("WIN0 Special FX"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("WIN1 BG0"),
      wxTRANSLATE("WIN1 BG1"),
      wxTRANSLATE("WIN1 BG2"),
      wxTRANSLATE("WIN1 BG3"),
      wxTRANSLATE("WIN1 OBJ"),
      wxTRANSLATE("WIN1 Special FX"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &WINOUT, 0x4A, wxTRANSLATE("0x400004A-WINOUT"), 0x3F3F,
    {
      wxTRANSLATE("WIN0/1 BG0"),
      wxTRANSLATE("WIN0/1 BG1"),
      wxTRANSLATE("WIN0/1 BG2"),
      wxTRANSLATE("WIN0/1 BG3"),
      wxTRANSLATE("WIN0/1 OBJ"),
      wxTRANSLATE("WIN0/1 Special FX"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("OBJWIN BG0"),
      wxTRANSLATE("OBJWIN BG1"),
      wxTRANSLATE("OBJWIN BG2"),
      wxTRANSLATE("OBJWIN BG3"),
      wxTRANSLATE("OBJWIN OBJ"),
      wxTRANSLATE("OBJWIN Special FX"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &MOSAIC, 0x4C, wxTRANSLATE("0x400004C-MOSAIC"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("BG H Size (4 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("BG V Size (4 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("OBJ H Size (4 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("OBJ V Size (4 bits,W)"),
    }
  },
  {
    &BLDMOD, 0x50, wxTRANSLATE("0x4000050-BLDMOD"), 0x3FFF,
    {
      wxTRANSLATE("1st BG0"),
      wxTRANSLATE("1st BG1"),
      wxTRANSLATE("1st BG2"),
      wxTRANSLATE("1st BG3"),
      wxTRANSLATE("1st OBJ"),
      wxTRANSLATE("1st BD"),
      wxT(""),
      wxTRANSLATE("FX Type (2 bits)"),
      wxTRANSLATE("2nd BG0"),
      wxTRANSLATE("2nd BG1"),
      wxTRANSLATE("2nd BG2"),
      wxTRANSLATE("2nd BG3"),
      wxTRANSLATE("2nd OBJ"),
      wxTRANSLATE("2nd BD"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &COLEV, 0x52, wxTRANSLATE("0x4000052-COLEV"), 0x1F1F,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Coefficient EVA (5 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Coefficient EVB (5 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &COLY, 0x54, wxTRANSLATE("0x4000054-COLEY"), 0x001F,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Coefficient EVY (5 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x60, wxTRANSLATE("0x4000060-SG10_L"), 0x007F,
    {
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sweep Shifts (3 bits)"),
      wxTRANSLATE("Sweep addition/decrease"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sweep Time (3 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x62, wxTRANSLATE("0x4000062-SG10_H"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Length (6 bits,W)"),
      wxT(""),
      wxTRANSLATE("Waveform Type (2 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Envelope Steps (3 bits)"),
      wxTRANSLATE("Envelope Attenuate/Amplify"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Envelope Initial Value"),
    }
  },
  {
    NULL, 0x64, wxTRANSLATE("0x4000064-SG11"), 0xC7FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Frequency (11 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Continuous/Counter"),
      wxTRANSLATE("Initialization (W)"),
    }
  },
  {
    NULL, 0x68, wxTRANSLATE("0x4000068-SG20"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Length (6 bits,W)"),
      wxT(""),
      wxTRANSLATE("Waveform Type (2 bits)"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Envelope Steps (3 bits)"),
      wxTRANSLATE("Envelope Attenuate/Amplify"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Envelope Initial Value"),
    }
  },
  {
    NULL, 0x6C, wxTRANSLATE("0x400006C-SG21"), 0xC7FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Frequency (11 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Continuous/Counter"),
      wxTRANSLATE("Initialization (W)"),
    }
  },
  {
    NULL, 0x70, wxTRANSLATE("0x4000070-SG30_L"), 0x00E0,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Waveform 32/64 Steps"),
      wxTRANSLATE("Waveform Bank 0/1"),
      wxTRANSLATE("Sound Output"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x72, wxTRANSLATE("0x4000072-SG30_H"), 0xE0FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Length (8 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Output Level (2 bits)"),
      wxTRANSLATE("Forced 3/4 Output Level"),
    }
  },
  {
    NULL, 0x74, wxTRANSLATE("0x4000074-SG31"), 0xC7FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Frequency (11 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Continuous/Counter"),
      wxTRANSLATE("Initialization (W)"),
    }
  },
  {
    NULL, 0x78, wxTRANSLATE("0x4000078-SG40"), 0xFF3F,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Length (6 bits,W)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Envelope Steps (3 bits)"),
      wxTRANSLATE("Envelope Attenuate/Amplify"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Envelope Initial Value"),
    }
  },
  {
    NULL, 0x7C, wxTRANSLATE("0x400007C-SG41"), 0xC0FF,
    {
      wxT(""),
      wxT(""),
      wxTRANSLATE("Dividing Ratio Freq. (3 bits)"),
      wxTRANSLATE("Counter 15/7 Steps"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Counter Shift Clock (4 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sound Continuous/Counter"),
      wxTRANSLATE("Initialization (W)"),
    }
  },
  {
    NULL, 0x80, wxTRANSLATE("0x4000080-SGCNT0_L"), 0xFF77,
    {
      wxT(""),
      wxT(""),
      wxTRANSLATE("Right Volume (3 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Left Volume (3 bits)"),
      wxT(""),
      wxTRANSLATE("Channel 1->Right"),
      wxTRANSLATE("Channel 2->Right"),
      wxTRANSLATE("Channel 3->Right"),
      wxTRANSLATE("Channel 4->Right"),
      wxTRANSLATE("Channel 1->Left"),
      wxTRANSLATE("Channel 2->Left"),
      wxTRANSLATE("Channel 3->Left"),
      wxTRANSLATE("Channel 4->Left"),
    }
  },
  {
    NULL, 0x82, wxTRANSLATE("0x4000082-SGCNT0_H"), 0xFF0F,
    {
      wxT(""),
      wxTRANSLATE("Sound 1-4 Volume (2 bits)"),
      wxTRANSLATE("DMA Sound A Volume"),
      wxTRANSLATE("DMA Sound B Volume"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("DMA Sound A->Right"),
      wxTRANSLATE("DMA Sound A->Left"),
      wxTRANSLATE("DMA Sound A Timer"),
      wxTRANSLATE("DMA Sound A Reset FIFO"),
      wxTRANSLATE("DMA Sound B->Right"),
      wxTRANSLATE("DMA Sound B->Left"),
      wxTRANSLATE("DMA Sound B Timer"),
      wxTRANSLATE("DMA Sound B Reset FIFO"),
    }
  },
  {
    NULL, 0x84, wxTRANSLATE("0x4000084-SGCNT1"), 0x0080,
    {
      wxTRANSLATE("Sound 1 On"),
      wxTRANSLATE("Sound 2 On"),
      wxTRANSLATE("Sound 3 On"),
      wxTRANSLATE("Sound 4 On"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Master Sound Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x88, wxTRANSLATE("0x4000088-SGBIAS"), 0xC3FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Bias Level (10 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Sampling Rate (2 bits)"),
    }
  },
  {
    NULL, 0xA0, wxTRANSLATE("0x40000A0-SIGFIFOA_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 0 (8 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 1 (8 bits)"),
    }
  },
  {
    NULL, 0xA2, wxTRANSLATE("0x40000A2-SIGFIFOA_H"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 2 (8 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 3 (8 bits)"),
    }
  },
  {
    NULL, 0xA4, wxTRANSLATE("0x40000A4-SIGFIFOB_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 0 (8 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 1 (8 bits)"),
    }
  },
  {
    NULL, 0xA6, wxTRANSLATE("0x40000A6-SIGFIFOB_H"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 2 (8 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Data 3 (8 bits)"),
    }
  },
  {
    &DM0SAD_L, 0xB0, wxTRANSLATE("0x40000B0-DM0SAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (lower 16 bits)"),
    }
  },
  {
    &DM0SAD_H, 0xB2, wxTRANSLATE("0x40000B2-DM0SAD_H"), 0x07FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (upper 11 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM0DAD_L, 0xB4, wxTRANSLATE("0x40000B4-DM0DAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (lower 16 bits)"),
    }
  },
  {
    &DM0DAD_H, 0xB6, wxTRANSLATE("0x40000B6-DM0DAD_H"), 0x07FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (upper 11 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM0CNT_L, 0xB8, wxTRANSLATE("0x40000B8-DM0CNT_L"), 0x3FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Count (14 bits)"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM0CNT_H, 0xBA, wxTRANSLATE("0x40000BA-DM0CNT_H"), 0xF7E0,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address Control (2 bits)"),
      wxT(""),
      wxTRANSLATE("Source Address Control (2 bits)"),
      wxTRANSLATE("Repeat"),
      wxTRANSLATE("Transfer Type"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Start Timing (2 bits)"),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
    }
  },
  {
    &DM1SAD_L, 0xBC, wxTRANSLATE("0x40000BC-DM1SAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (lower 16 bits)"),
    }
  },
  {
    &DM1SAD_H, 0xBE, wxTRANSLATE("0x40000BE-DM1SAD_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (upper 12 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM1DAD_L, 0xC0, wxTRANSLATE("0x40000C0-DM1DAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (lower 16 bits)"),
    }
  },
  {
    &DM1DAD_H, 0xC2, wxTRANSLATE("0x40000C2-DM1DAD_H"), 0x07FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (upper 11 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM1CNT_L, 0xC4, wxTRANSLATE("0x40000C4-DM1CNT_L"), 0x3FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Count (14 bits)"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM1CNT_H, 0xC6, wxTRANSLATE("0x40000C6-DM1CNT_H"), 0xF7E0,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address Control (2 bits)"),
      wxT(""),
      wxTRANSLATE("Source Address Control (2 bits)"),
      wxTRANSLATE("Repeat"),
      wxTRANSLATE("Transfer Type"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Start Timing (2 bits)"),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
    }
  },
  {
    &DM2SAD_L, 0xC8, wxTRANSLATE("0x40000C8-DM2SAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (lower 16 bits)"),
    }
  },
  {
    &DM2SAD_H, 0xCA, wxTRANSLATE("0x40000CA-DM2SAD_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (upper 12 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM2DAD_L, 0xCC, wxTRANSLATE("0x40000CC-DM2DAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (lower 16 bits)"),
    }
  },
  {
    &DM2DAD_H, 0xCE, wxTRANSLATE("0x40000CE-DM2DAD_H"), 0x07FF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (upper 11 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM2CNT_L, 0xD0, wxTRANSLATE("0x40000D0-DM2CNT_L"), 0x3FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Count (14 bits)"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM2CNT_H, 0xD2, wxTRANSLATE("0x40000D2-DM2CNT_H"), 0xF7E0,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address Control (2 bits)"),
      wxT(""),
      wxTRANSLATE("Source Address Control (2 bits)"),
      wxTRANSLATE("Repeat"),
      wxTRANSLATE("Transfer Type"),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Start Timing (2 bits)"),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
    }
  },
  {
    &DM3SAD_L, 0xD4, wxTRANSLATE("0x40000D4-DM3SAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (lower 16 bits)"),
    }
  },
  {
    &DM3SAD_H, 0xD6, wxTRANSLATE("0x40000D6-DM3SAD_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Source Address (upper 12 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM3DAD_L, 0xD8, wxTRANSLATE("0x40000D8-DM3DAD_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (lower 16 bits)"),
    }
  },
  {
    &DM3DAD_H, 0xDA, wxTRANSLATE("0x40000DA-DM3DAD_H"), 0x0FFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address (upper 12 bits)"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &DM3CNT_L, 0xDC, wxTRANSLATE("0x40000DC-DM3CNT_L"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Count (16 bits)"),
    }
  },
  {
    &DM3CNT_H, 0xDE, wxTRANSLATE("0x40000DE-DM3CNT_H"), 0xFFE0,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Destination Address Control (2 bits)"),
      wxT(""),
      wxTRANSLATE("Source Address Control (2 bits)"),
      wxTRANSLATE("Repeat"),
      wxTRANSLATE("Transfer Type"),
      wxTRANSLATE("Game Pak Data Request"),
      wxT(""),
      wxTRANSLATE("Start Timing (2 bits)"),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
    }
  },
  {
    &TM0D, 0x100, wxTRANSLATE("0x4000100-TM0D"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Timer Counter (16 bits)"),
    }
  },
  {
    &TM0CNT, 0x102, wxTRANSLATE("0x4000102-TM0CNT"), 0x00C7,
    {
      wxT(""),
      wxTRANSLATE("Scalar Selection (2 bits)"),
      wxTRANSLATE("Count Up"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &TM1D, 0x104, wxTRANSLATE("0x4000104-TM1D"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Timer Counter (16 bits)"),
    }
  },
  {
    &TM1CNT, 0x106, wxTRANSLATE("0x4000106-TM1CNT"), 0x00C7,
    {
      wxT(""),
      wxTRANSLATE("Scalar Selection (2 bits)"),
      wxTRANSLATE("Count Up"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &TM2D, 0x108, wxTRANSLATE("0x4000108-TM2D"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Timer Counter (16 bits)"),
    }
  },
  {
    &TM2CNT, 0x10A, wxTRANSLATE("0x400010A-TM2CNT"), 0x00C7,
    {
      wxT(""),
      wxTRANSLATE("Scalar Selection (2 bits)"),
      wxTRANSLATE("Count Up"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &TM3D, 0x10C, wxTRANSLATE("0x400010C-TM3D"), 0xFFFF,
    {
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Timer Counter (16 bits)"),
    }
  },
  {
    &TM3CNT, 0x10E, wxTRANSLATE("0x400010E-TM3CNT"), 0x00C7,
    {
      wxT(""),
      wxTRANSLATE("Scalar Selection (2 bits)"),
      wxTRANSLATE("Count Up"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    &P1, 0x130, wxTRANSLATE("0x4000130-P1"), 0x03FF,
    {
      wxTRANSLATE("A"),
      wxTRANSLATE("B"),
      wxTRANSLATE("Select"),
      wxTRANSLATE("Start"),
      wxTRANSLATE("Right"),
      wxTRANSLATE("Left"),
      wxTRANSLATE("Up"),
      wxTRANSLATE("Down"),
      wxTRANSLATE("Shoulder Right"),
      wxTRANSLATE("Shoulder Left"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x132, wxTRANSLATE("0x4000132-P1CNT"), 0xC3FF,
    {
      wxTRANSLATE("A"),
      wxTRANSLATE("B"),
      wxTRANSLATE("Select"),
      wxTRANSLATE("Start"),
      wxTRANSLATE("Right"),
      wxTRANSLATE("Left"),
      wxTRANSLATE("Up"),
      wxTRANSLATE("Down"),
      wxTRANSLATE("Shoulder Right"),
      wxTRANSLATE("Shoulder Left"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Interrupt Request"),
      wxTRANSLATE("Interrupt Condition"),
    }
  },
  {
    &IE, 0x200, wxTRANSLATE("0x4000200-IE"), 0x3FFF,
    {
      wxTRANSLATE("VBlank"),
      wxTRANSLATE("HBlank"),
      wxTRANSLATE("VCount"),
      wxTRANSLATE("Timer 0"),
      wxTRANSLATE("Timer 1"),
      wxTRANSLATE("Timer 2"),
      wxTRANSLATE("Timer 3"),
      wxTRANSLATE("Serial"),
      wxTRANSLATE("DMA 0"),
      wxTRANSLATE("DMA 1"),
      wxTRANSLATE("DMA 2"),
      wxTRANSLATE("DMA 3"),
      wxTRANSLATE("Keypad"),
      wxTRANSLATE("Game Pak"),
      wxT(""),
      wxT(""),
    }
  },
  {
    &IF, 0x202, wxTRANSLATE("0x4000202-IF"), 0x0000,
    {
      wxTRANSLATE("VBlank"),
      wxTRANSLATE("HBlank"),
      wxTRANSLATE("VCount"),
      wxTRANSLATE("Timer 0"),
      wxTRANSLATE("Timer 1"),
      wxTRANSLATE("Timer 2"),
      wxTRANSLATE("Timer 3"),
      wxTRANSLATE("Serial"),
      wxTRANSLATE("DMA 0"),
      wxTRANSLATE("DMA 1"),
      wxTRANSLATE("DMA 2"),
      wxTRANSLATE("DMA 3"),
      wxTRANSLATE("Keypad"),
      wxTRANSLATE("Game Pak"),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x204, wxTRANSLATE("0x4000204-WAITCNT"), 0x5FFF,
    {
      wxT(""),
      wxTRANSLATE("SRAM Wait Control (2 bits)"),
      wxT(""),
      wxTRANSLATE("Wait State 0 First Access (2 bits)"),
      wxTRANSLATE("Wait State 0 Second Access"),
      wxT(""),
      wxTRANSLATE("Wait State 1 First Access (2 bits)"),
      wxTRANSLATE("Wait State 1 Second Access"),
      wxT(""),
      wxTRANSLATE("Wait State 2 First Access (2 bits)"),
      wxTRANSLATE("Wait State 2 Second Access"),
      wxT(""),
      wxTRANSLATE("PHI Terminal Output (2 bits)"),
      wxT(""),
      wxTRANSLATE("Game Pak Prefetch Buffer"),
      wxTRANSLATE("Game Pak Type Flag"),
    }
  },
  {
    &IME, 0x208, wxTRANSLATE("0x4000208-IME"), 0x0001,
    {
      wxTRANSLATE("Master Interrupt Enable"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
    }
  },
  {
    NULL, 0x300, wxTRANSLATE("0x4000300-HALTCNT"), 0x8001,
    {
      wxTRANSLATE("First Boot"),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxT(""),
      wxTRANSLATE("Power Down"),
    }
  },
};

#define NUM_IOREGS (sizeof(ioregs)/sizeof(ioregs[0]))
