Created
          July 4, 2020 16:41 
        
      - 
      
- 
        Save JettMonstersGoBoom/ec2ed458f5964593af649d4c2b46e574 to your computer and use it in GitHub Desktop. 
    header file for easier working with C64 and VBCC 
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | /* useful macros ( from cc65 ) */ | |
| #define POKE(addr,val) (*(unsigned char*) (addr) = (val)) | |
| #define POKEW(addr,val) (*(unsigned*) (addr) = (val)) | |
| #define PEEK(addr) (*(volatile unsigned char*) (addr)) | |
| #define PEEKW(addr) (*(unsigned*) (addr)) | |
| /* CIA1 */ | |
| #define cia1_pra 0xDC00 | |
| #define cia1_prb 0xDC01 | |
| #define cia1_ddra 0xDC02 | |
| #define cia1_ddrb 0xDC03 | |
| #define cia2_pra 0xDD00 | |
| #define cia2_prb 0xDD01 | |
| #define cia2_ddra 0xDD02 | |
| #define cia2_ddrb 0xDD03 | |
| #define vic_bank_0000() {\ | |
| POKE(cia2_ddra,(PEEK(cia2_ddra) & 0xfc) | 3);\ | |
| POKE(cia2_pra,(PEEK(cia2_pra) & 0xfc) | 3);\ | |
| } | |
| #define vic_bank_4000() {\ | |
| POKE(cia2_ddra,(PEEK(cia2_ddra) & 0xfc) | 3);\ | |
| POKE(cia2_pra,(PEEK(cia2_pra) & 0xfc) | 2);\ | |
| } | |
| #define vic_bank_8000() {\ | |
| POKE(cia2_ddra,(PEEK(cia2_ddra) & 0xfc) | 3);\ | |
| POKE(cia2_pra,(PEEK(cia2_pra) & 0xfc) | 1);\ | |
| } | |
| #define vic_bank_C000() {\ | |
| POKE(cia2_ddra,(PEEK(cia2_ddra) & 0xfc) | 3);\ | |
| POKE(cia2_pra,(PEEK(cia2_pra) & 0xfc) | 0);\ | |
| } | |
| #define vic_scroll_x(x) POKE(vic_cr1,(PEEK(vic_cr1)&0xf8) | x) | |
| #define vic_scroll_y(y) POKE(vic_cr2,(PEEK(vic_cr2)&0xf8) | y) | |
| /* VIC-II */ | |
| #define c64_screen_ram ((volatile unsigned char*)0x400) | |
| #define c64_color_ram ((volatile unsigned char*)0xd800) | |
| #define black 0 | |
| #define white 1 | |
| #define red 2 | |
| #define cyan 3 | |
| #define purple 4 | |
| #define green 5 | |
| #define blue 6 | |
| #define yellow 7 | |
| #define orange 8 | |
| #define brown 9 | |
| #define light_red 10 | |
| #define dark_grey 11 | |
| #define dark_gray 11 | |
| #define medium_grey 12 | |
| #define medium_gray 12 | |
| #define light_green 13 | |
| #define light_blue 14 | |
| #define light_grey 15 | |
| #define light_gray 15 | |
| #define vic_spr0_x 0xD000 | |
| #define vic_spr0_y 0xD001 | |
| #define vic_spr1_x 0xD002 | |
| #define vic_spr1_y 0xD003 | |
| #define vic_spr2_x 0xD004 | |
| #define vic_spr2_y 0xD005 | |
| #define vic_spr3_x 0xD006 | |
| #define vic_spr3_y 0xD007 | |
| #define vic_spr4_x 0xD008 | |
| #define vic_spr4_y 0xD009 | |
| #define vic_spr5_x 0xD00A | |
| #define vic_spr5_y 0xD00B | |
| #define vic_spr6_x 0xD00C | |
| #define vic_spr6_y 0xD00D | |
| #define vic_spr7_x 0xD00E | |
| #define vic_spr7_y 0xD00F | |
| #define vic_spr_hi_x 0xD010 | |
| #define vic_cr1 0xD011 | |
| #define vic_raster 0xD012 | |
| #define vic_lp_x 0xD013 | |
| #define vic_lp_y 0xD014 | |
| #define vic_spr_ena 0xD015 | |
| #define vic_cr2 0xD016 | |
| #define vic_spr_exp_y 0xD017 | |
| #define vic_mem 0xD018 | |
| #define vic_irq 0xD019 | |
| #define vic_irq_ena 0xD01A | |
| #define vic_spr_dp 0xD01B | |
| #define vic_spr_mcolor 0xD01C | |
| #define vic_spr_exp_x 0xD01D | |
| #define vic_spr_ss_col 0xD01E | |
| #define vic_spr_sd_col 0xD01F | |
| #define vic_border 0xD020 | |
| #define vic_bg_color0 0xD021 | |
| #define vic_bg_color1 0xD022 | |
| #define vic_bg_color2 0xD023 | |
| #define vic_bg_color3 0xD024 | |
| #define vic_spr_color1 0xD025 | |
| #define vic_spr_color2 0xD026 | |
| #define vic_spr0_color 0xD027 | |
| #define vic_spr1_color 0xD028 | |
| #define vic_spr2_color 0xD029 | |
| #define vic_spr3_color 0xD02A | |
| #define vic_spr4_color 0xD02B | |
| #define vic_spr5_color 0xD02C | |
| #define vic_spr6_color 0xD02D | |
| #define vic_spr7_color 0xD02E | |
| #define vic_enable_multicolor() POKE(vic_cr2,PEEK(vic_cr2) | 0x10) | |
| #define vic_disable_multicolor() POKE(vic_cr2,PEEK(vic_cr2) & 0xef) | |
| #define vic_enable_bitmap() POKE(vic_cr1,PEEK(vic_cr1) | 0x20) | |
| #define vic_disable_bitmap() POKE(vic_cr1,PEEK(vic_cr1) & 0xdf) | |
| #define vic_24_rows() POKE(vic_cr1,PEEK(vic_cr1) & 0xf7) | |
| #define vic_25_rows() POKE(vic_cr1,PEEK(vic_cr1) | 0x08) | |
| #define vic_38_columns() POKE(vic_cr2,PEEK(vic_cr2) & 0xf7) | |
| #define vic_40_columns() POKE(vic_cr2,PEEK(vic_cr2) | 0x08) | |
| #define vic_charset_0000() POKE(vic_mem,PEEK(vic_mem) & 0xf1) | |
| #define vic_charset_0800() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 2) | |
| #define vic_charset_1000() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 4) | |
| #define vic_charset_1800() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 6) | |
| #define vic_charset_2000() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 8) | |
| #define vic_charset_2800() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 10) | |
| #define vic_charset_3000() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 12) | |
| #define vic_charset_3800() POKE(vic_mem,(PEEK(vic_mem) & 0xf1) | 14) | |
| #define vic_bitmap_0000() POKE(vic_mem,(PEEK(vic_mem) & 0xf7)) | |
| #define vic_bitmap_2000() POKE(vic_mem,(PEEK(vic_mem) | 0x8)) | |
| #define vic_screen(_scr_) POKE(vic_mem, (PEEK(vic_mem) & 0xf) | (_scr_>>6)) | |
| #define vic_disable_irq() {\ | |
| POKE(vic_irq_ena,0);\ | |
| POKE(vic_irq,PEEK(vic_irq)+1);\ | |
| } | |
| #define cpu6510_ddr 0x0 | |
| #define cpu6510_port 0x1 | |
| #define c64_ram_only() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,0);\ | |
| } | |
| #define c64_ram_io() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,5);\ | |
| } | |
| #define c64_ram_io_kernal() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,6);\ | |
| } | |
| #define c64_ram_io_basic() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,7);\ | |
| } | |
| #define c64_ram_charset() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,1);\ | |
| } | |
| #define c64_ram_charset_kernal() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,2);\ | |
| } | |
| #define c64_ram_charset_basic() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,3);\ | |
| } | |
| #define c64_ram_charset_basic() {\ | |
| POKE(cpu6510_ddr,7);\ | |
| POKE(cpu6510_port,3);\ | |
| } | |
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment