/* Demonstrates the PPU's tint and monochrome bits. Use the controller to see different combinations. */ #include #include // include NESLIB header #include "neslib.h" // link the pattern table into CHR ROM //#link "chr_generic.s" /*{pal:"nes",layout:"nes"}*/ const char PALETTE[32] = { 0x2D, // screen color 0x00,0x30,0x30,0x00, // background palette 0 0x0C,0x20,0x2C,0x00, // background palette 1 0x14,0x10,0x25,0x00, // background palette 2 0x17,0x16,0x28,0x00, // background palette 3 0x16,0x35,0x24,0x00, // sprite palette 0 0x00,0x37,0x25,0x00, // sprite palette 1 0x0D,0x2D,0x3A,0x00, // sprite palette 2 0x0D,0x27,0x2A // sprite palette 3 }; // setup PPU and tables void setup_graphics() { // clear sprites oam_clear(); // set palette colors pal_all(PALETTE); } void main(void) { byte i; setup_graphics(); // draw message for (i=0; i<30; i++) { vram_adr(NTADR_A(1,i)); // vram_write("\x18\x18 USE CONTROLLER FOR TINT \x18\x18\x18", 30); vram_write(" A:red B:green \x1e\x1f:blue \x1c\x1d:mono", 30); } // attributes vram_adr(0x23c0); vram_fill(0x00, 8); vram_fill(0x55, 8); vram_fill(0xaa, 8); vram_fill(0xff, 8); vram_fill(0x11, 8); vram_fill(0x33, 8); vram_fill(0xdd, 8); // enable rendering ppu_on_all(); // infinite loop while(1) { byte pad = pad_poll(0); byte mask = MASK_BG; if (pad & PAD_A) mask |= MASK_TINT_RED; if (pad & PAD_B) mask |= MASK_TINT_GREEN; if (pad & (PAD_LEFT|PAD_RIGHT)) mask |= MASK_TINT_BLUE; if (pad & (PAD_UP|PAD_DOWN)) mask |= MASK_MONO; ppu_mask(mask); } }