// File for all of the colors for different GB Palletes
// https://i.imgur.com/HupBY.png
// https://www.libretro.com/index.php/gambatte-progress-report/
// https://tcrf.net/Notes:Game_Boy_Color_Bootstrap_ROM

// Our default wasmboy gb colors
export class WasmBoyGBColors {
  //Bg
  static readonly bgWhite: i32 = 0xf2f2f2;
  static readonly bgLightGrey: i32 = 0xa0a0a0;
  static readonly bgDarkGrey: i32 = 0x585858;
  static readonly bgBlack: i32 = 0x080808;

  // Obj 0
  static readonly obj0White: i32 = 0xf2f2f2;
  static readonly obj0LightGrey: i32 = 0xa0a0a0;
  static readonly obj0DarkGrey: i32 = 0x585858;
  static readonly obj0Black: i32 = 0x080808;

  // Obj1
  static readonly obj1White: i32 = 0xf2f2f2;
  static readonly obj1LightGrey: i32 = 0xa0a0a0;
  static readonly obj1DarkGrey: i32 = 0x585858;
  static readonly obj1Black: i32 = 0x080808;
}

// Action Button: Right
export class GreenColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0x52ff00;
  static readonly bgDarkGrey: i32 = 0xff4200;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0x52ff00;
  static readonly obj0DarkGrey: i32 = 0xff4200;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x52ff00;
  static readonly obj1DarkGrey: i32 = 0xff4200;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: A + Down
export class OrangeColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xffff00;
  static readonly bgDarkGrey: i32 = 0xff0000;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xffff00;
  static readonly obj0DarkGrey: i32 = 0xff0000;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xffff00;
  static readonly obj1DarkGrey: i32 = 0xff0000;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: Up
export class BrownColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xffad63;
  static readonly bgDarkGrey: i32 = 0x843100;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xffad63;
  static readonly obj0DarkGrey: i32 = 0x843100;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xffad63;
  static readonly obj1DarkGrey: i32 = 0x843100;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: B + Right
export class InvertedColors {
  //Bg
  static readonly bgWhite: i32 = 0x000000;
  static readonly bgLightGrey: i32 = 0x008484;
  static readonly bgDarkGrey: i32 = 0xffde00;
  static readonly bgBlack: i32 = 0xffffff;

  // Obj 0
  static readonly obj0White: i32 = 0x000000;
  static readonly obj0LightGrey: i32 = 0x008484;
  static readonly obj0DarkGrey: i32 = 0xffde00;
  static readonly obj0Black: i32 = 0xffffff;

  // Obj1
  static readonly obj1White: i32 = 0x000000;
  static readonly obj1LightGrey: i32 = 0x008484;
  static readonly obj1DarkGrey: i32 = 0xffde00;
  static readonly obj1Black: i32 = 0xffffff;
}

// Action Button: B + Left
export class GrayscaleColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xa5a5a5;
  static readonly bgDarkGrey: i32 = 0x525252;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xa5a5a5;
  static readonly obj0DarkGrey: i32 = 0x525252;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xa5a5a5;
  static readonly obj1DarkGrey: i32 = 0x525252;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: Down
export class PastelMixColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffa5;
  static readonly bgLightGrey: i32 = 0xff9494;
  static readonly bgDarkGrey: i32 = 0x9494ff;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffa5;
  static readonly obj0LightGrey: i32 = 0xff9494;
  static readonly obj0DarkGrey: i32 = 0x9494ff;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffa5;
  static readonly obj1LightGrey: i32 = 0xff9494;
  static readonly obj1DarkGrey: i32 = 0x9494ff;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: B + Up
export class DarkBrownColors {
  //Bg
  static readonly bgWhite: i32 = 0xffe6c5;
  static readonly bgLightGrey: i32 = 0xce9c84;
  static readonly bgDarkGrey: i32 = 0x846b29;
  static readonly bgBlack: i32 = 0x5a3108;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xffad63;
  static readonly obj0DarkGrey: i32 = 0x843100;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xffad63;
  static readonly obj1DarkGrey: i32 = 0x843100;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: A + Right
export class DarkGreenColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0x7bff31;
  static readonly bgDarkGrey: i32 = 0x0063c5;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xff8484;
  static readonly obj0DarkGrey: i32 = 0x943a3a;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xff8484;
  static readonly obj1DarkGrey: i32 = 0x943a3a;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: A + Left
export class DarkBlueColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0x8c8cde;
  static readonly bgDarkGrey: i32 = 0x52528c;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xff8484;
  static readonly obj0DarkGrey: i32 = 0x943a3a;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xffad63;
  static readonly obj1DarkGrey: i32 = 0x843100;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: A + Up
export class RedColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xff8484;
  static readonly bgDarkGrey: i32 = 0x943a3a;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0x7bff31;
  static readonly obj0DarkGrey: i32 = 0x008400;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x63a5ff;
  static readonly obj1DarkGrey: i32 = 0x0000ff;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: Left
export class BlueColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0x63a5ff;
  static readonly bgDarkGrey: i32 = 0x0000ff;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xff8484;
  static readonly obj0DarkGrey: i32 = 0x943a3a;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x7bff31;
  static readonly obj1DarkGrey: i32 = 0x008400;
  static readonly obj1Black: i32 = 0x000000;
}

// Action Button: B + Down
export class YellowColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xffff00;
  static readonly bgDarkGrey: i32 = 0x7b4a00;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0x63a5ff;
  static readonly obj0DarkGrey: i32 = 0x0000ff;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x7bff31;
  static readonly obj1DarkGrey: i32 = 0x008400;
  static readonly obj1Black: i32 = 0x000000;
}

// Assigned Color Palettes

// Alleyway
export class Table00Entry08Colors {
  //Bg
  static readonly bgWhite: i32 = 0xa59cff;
  static readonly bgLightGrey: i32 = 0xffff00;
  static readonly bgDarkGrey: i32 = 0x006300;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xa59cff;
  static readonly obj0LightGrey: i32 = 0xffff00;
  static readonly obj0DarkGrey: i32 = 0x006300;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xa59cff;
  static readonly obj1LightGrey: i32 = 0xffff00;
  static readonly obj1DarkGrey: i32 = 0x006300;
  static readonly obj1Black: i32 = 0x000000;
}

// Pokemon Blue
export class Table01Entry0BColors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0x63a5ff;
  static readonly bgDarkGrey: i32 = 0x0000ff;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xff8484;
  static readonly obj0DarkGrey: i32 = 0x943a3a;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x63a5ff;
  static readonly obj1DarkGrey: i32 = 0x0000ff;
  static readonly obj1Black: i32 = 0x000000;
}

// Pokemon Red
export class Table01Entry10Colors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xff8484;
  static readonly bgDarkGrey: i32 = 0x943a3a;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0x7bff31;
  static readonly obj0DarkGrey: i32 = 0x008400;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xff8484;
  static readonly obj1DarkGrey: i32 = 0x943a3a;
  static readonly obj1Black: i32 = 0x000000;
}

// Super Mario Land
export class Table03Entry0AColors {
  //Bg
  static readonly bgWhite: i32 = 0xb5b5ff;
  static readonly bgLightGrey: i32 = 0xffff94;
  static readonly bgDarkGrey: i32 = 0xad5a42;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0x000000;
  static readonly obj0LightGrey: i32 = 0xffffff;
  static readonly obj0DarkGrey: i32 = 0xff8484;
  static readonly obj0Black: i32 = 0x943a3a;

  // Obj1
  static readonly obj1White: i32 = 0x000000;
  static readonly obj1LightGrey: i32 = 0xffffff;
  static readonly obj1DarkGrey: i32 = 0xff8484;
  static readonly obj1Black: i32 = 0x943a3a;
}

// Super Mario Land 3 - WarioLand
export class Table05Entry00Colors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xadad84;
  static readonly bgDarkGrey: i32 = 0x42737b;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xff7300;
  static readonly obj0DarkGrey: i32 = 0x944200;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x5abdff;
  static readonly obj1DarkGrey: i32 = 0xff0000;
  static readonly obj1Black: i32 = 0x0000ff;
}

// Donkey Kong
export class Table05Entry01Colors {
  //Bg
  static readonly bgWhite: i32 = 0xffff9c;
  static readonly bgLightGrey: i32 = 0x94b5ff;
  static readonly bgDarkGrey: i32 = 0x639473;
  static readonly bgBlack: i32 = 0x003a3a;

  // Obj 0
  static readonly obj0White: i32 = 0xffc542;
  static readonly obj0LightGrey: i32 = 0xffd600;
  static readonly obj0DarkGrey: i32 = 0x943a00;
  static readonly obj0Black: i32 = 0x4a0000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xff8484;
  static readonly obj1DarkGrey: i32 = 0x943a3a;
  static readonly obj1Black: i32 = 0x000000;
}

// Tennis
export class Table05Entry02Colors {
  //Bg
  static readonly bgWhite: i32 = 0x6bff00;
  static readonly bgLightGrey: i32 = 0xffffff;
  static readonly bgDarkGrey: i32 = 0xff524a;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xffffff;
  static readonly obj0DarkGrey: i32 = 0x63a5ff;
  static readonly obj0Black: i32 = 0x0000ff;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0xffad63;
  static readonly obj1DarkGrey: i32 = 0x843100;
  static readonly obj1Black: i32 = 0x000000;
}

// Kirby's Dream Land
export class Table05Entry08Colors {
  //Bg
  static readonly bgWhite: i32 = 0xa59cff;
  static readonly bgLightGrey: i32 = 0xffff00;
  static readonly bgDarkGrey: i32 = 0x006300;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xff6352;
  static readonly obj0LightGrey: i32 = 0xd60000;
  static readonly obj0DarkGrey: i32 = 0x630000;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0x0000ff;
  static readonly obj1LightGrey: i32 = 0xffffff;
  static readonly obj1DarkGrey: i32 = 0xffff7b;
  static readonly obj1Black: i32 = 0x0084ff;
}

// Super Mario Land 2 BAYYYBEEE
export class Table05Entry09Colors {
  //Bg
  static readonly bgWhite: i32 = 0xffffce;
  static readonly bgLightGrey: i32 = 0x63efef;
  static readonly bgDarkGrey: i32 = 0x9c8431;
  static readonly bgBlack: i32 = 0x5a5a5a;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xff7300;
  static readonly obj0DarkGrey: i32 = 0x944200;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x63a5ff;
  static readonly obj1DarkGrey: i32 = 0x0000ff;
  static readonly obj1Black: i32 = 0x000000;
}

// Link's Awakening
export class Table05Entry11Colors {
  // Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xff8484;
  static readonly bgDarkGrey: i32 = 0x943a3a;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0x00ff00;
  static readonly obj0DarkGrey: i32 = 0x318400;
  static readonly obj0Black: i32 = 0x004a00;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x63a5ff;
  static readonly obj1DarkGrey: i32 = 0x0000ff;
  static readonly obj1Black: i32 = 0x000000;
}

// Metroid 2
export class Table05Entry14Colors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0x63a5ff;
  static readonly bgDarkGrey: i32 = 0x0000ff;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffff00;
  static readonly obj0LightGrey: i32 = 0xff0000;
  static readonly obj0DarkGrey: i32 = 0x630000;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x7bff31;
  static readonly obj1DarkGrey: i32 = 0x008400;
  static readonly obj1Black: i32 = 0x000000;
}

// WarioLand 2
export class Table05Entry15Colors {
  //Bg
  static readonly bgWhite: i32 = 0xffffff;
  static readonly bgLightGrey: i32 = 0xadad84;
  static readonly bgDarkGrey: i32 = 0x42737b;
  static readonly bgBlack: i32 = 0x000000;

  // Obj 0
  static readonly obj0White: i32 = 0xffffff;
  static readonly obj0LightGrey: i32 = 0xffad63;
  static readonly obj0DarkGrey: i32 = 0xffad63;
  static readonly obj0Black: i32 = 0x000000;

  // Obj1
  static readonly obj1White: i32 = 0xffffff;
  static readonly obj1LightGrey: i32 = 0x63a5ff;
  static readonly obj1DarkGrey: i32 = 0x0000ff;
  static readonly obj1Black: i32 = 0x000000;
}
