git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

gbdk-support/lcc/targets.c

      1 // targets.c
      2 
      3 #include "gb.h"
      4 #include "targets.h"
      5 
      6 // Default Linker list arguments
      7 //
      8 // These get processed in Fixllist()
      9 //
     10 // NOTE: Only -g and -b entries are supported by Fixllist() right now
     11 
     12 // Game Boy / Analogue Pocket / Megaduck
     13 arg_entry llist0_defaults_gb[] = {
     14     {.searchkey= "_shadow_OAM=", .addflag= "-g",.addvalue= "_shadow_OAM=0xC000", .found= false},
     15     {.searchkey= ".STACK=",      .addflag= "-g",.addvalue= ".STACK=0xE000",      .found= false},
     16     {.searchkey= "_DATA=",       .addflag= "-b",.addvalue= "_DATA=0xC0A0",       .found= false},
     17     {.searchkey= "_CODE=",       .addflag= "-b",.addvalue= "_CODE=0x0200",       .found= false},
     18     {.searchkey= "_HRAM=",       .addflag= "-b",.addvalue= "_HRAM=0xFF80",       .found= false},
     19 };
     20 
     21 // SMS / GG
     22 arg_entry llist0_defaults_sms[] = {
     23     {.searchkey= "_shadow_OAM=", .addflag= "-g",.addvalue= "_shadow_OAM=0xC000", .found= false},
     24     {.searchkey= ".STACK=",      .addflag= "-g",.addvalue= ".STACK=0xDFF0",      .found= false},
     25     {.searchkey= "_DATA=",       .addflag= "-b",.addvalue= "_DATA=0xC0C0",       .found= false},
     26     {.searchkey= "_CODE=",       .addflag= "-b",.addvalue= "_CODE=0x0100",       .found= false},
     27 };
     28 
     29 // MSX
     30 arg_entry llist0_defaults_msxdos[] = {
     31     {.searchkey= "_DATA=",       .addflag= "-b",.addvalue= "_DATA=0x8000",       .found= false},
     32     {.searchkey= "_CODE=",       .addflag= "-b",.addvalue= "_CODE=0x0100",       .found= false},
     33 };
     34 
     35 // NES
     36 arg_entry llist0_defaults_nes[] = {
     37     {.searchkey= "_DATA=",       .addflag= "-b",.addvalue= "_DATA=0x0300",       .found = false},
     38     {.searchkey= "_CODE=",       .addflag= "-b",.addvalue= "_CODE=0xC000",       .found = false},
     39     {.searchkey= "VECTORS=",     .addflag= "-b",.addvalue= "VECTORS=0xFFFA",     .found = false},
     40     {.searchkey= "OSEG=",        .addflag= "-b",.addvalue= "OSEG=0x00",          .found = false},
     41     {.searchkey= "GBDKOVR=",     .addflag= "-b",.addvalue= "GBDKOVR=0x10",       .found = false},
     42     {.searchkey= "_ZP=",         .addflag= "-b",.addvalue= "_ZP=0x20",           .found = false},
     43 };
     44 
     45 // Port/Platform specific settings
     46 //
     47 // $1 are extra parameters passed using -W
     48 // $2 is the list of objects passed as parameters
     49 // $3 is the output file
     50 CLASS classes[] = {
     51     // GB
     52     { .port         = "sm83",
     53       .plat         = "gb",
     54       .default_plat = "gb",
     55       .rom_extension=  EXT_GB,
     56       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
     57       .include      = "%includedefault%",
     58       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
     59       .as           = "%as_gb% %asdefault% $1 $3 $2",
     60       .bankpack     = "%bankpack% $1 $2",
     61       .ld           = "%ld_gb% -n -i $1 %libs_include% $3 %crt0dir% $2",
     62       .ihxcheck     = "%ihxcheck% $2 $1",
     63       .mkbin        = "%mkbin% -yN -Z $1 $2 $3",  // -yN: Don't paste in the Nintendo logo bytes for gameboy and clones (-Z)
     64       .postproc     = "",
     65       .llist0_defaults    = llist0_defaults_gb,
     66       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_gb),
     67     },
     68     // Analogue Pocket
     69     { .port         = "sm83",
     70       .plat         = "ap",
     71       .default_plat = "ap",
     72       .rom_extension=  EXT_AP,
     73       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
     74       .include      = "%includedefault%",
     75       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
     76       .as           = "%as_gb% %asdefault% $1 $3 $2",
     77       .bankpack     = "%bankpack% $1 $2",
     78       .ld           = "%ld_gb% -n -i $1 %libs_include% $3 %crt0dir% $2",
     79       .ihxcheck     = "%ihxcheck% $2 $1",
     80       .mkbin        = "%mkbin% -yN -Z $1 $2 $3",  // -yN: Don't paste in the Nintendo logo bytes for gameboy and clones (-Z)
     81       .postproc     = "",
     82       .llist0_defaults    = llist0_defaults_gb,
     83       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_gb), // Use GB linker list defaults
     84     },
     85     // Megaduck
     86     { .port         = "sm83",
     87       .plat         = "duck",
     88       .default_plat = "duck",
     89       .rom_extension=  EXT_DUCK,
     90       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
     91       .include      = "%includedefault%",
     92       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
     93       .as           = "%as_gb% %asdefault% $1 $3 $2",
     94       .bankpack     = "%bankpack% $1 $2",
     95       .ld           = "%ld_gb% -n -i $1 %libs_include% $3 %crt0dir% $2",
     96       .ihxcheck     = "%ihxcheck% $2 $1",
     97       .mkbin        = "%mkbin% -yN -Z $1 $2 $3",  // -yN: Don't paste in the Nintendo logo bytes for gameboy and clones (-Z)
     98       .postproc     = "",
     99       .llist0_defaults    = llist0_defaults_gb,
    100       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_gb), // Use GB linker list defaults
    101     },
    102 
    103     // SMS
    104     { .port         = "z80",
    105       .plat         = "sms",
    106       .default_plat = "sms",
    107       .rom_extension=  EXT_SMS,
    108       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
    109       .include      = "%includedefault%",
    110       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
    111       .as           = "%as_z80% %asdefault% $1 $3 $2",
    112       .bankpack     = "%bankpack% -plat=sms $1 $2",
    113       .ld           = "%ld_z80% -a sms -n -i $1 %libs_include% $3 %crt0dir% $2",
    114       .ihxcheck     = "%ihxcheck% $2 $1",
    115       .mkbin        = "%mkbin% -S -xj 4 $1 $2 $3",  // -xj 4 is SS_EXPORT region code
    116       .postproc     = "",
    117       .llist0_defaults    = llist0_defaults_sms,
    118       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_sms),
    119     },
    120     // GG
    121     { .port         = "z80",
    122       .plat         = "gg",
    123       .default_plat = "gg",
    124       .rom_extension=  EXT_GG,
    125       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
    126       .include      = "%includedefault%",
    127       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
    128       .as           = "%as_z80% %asdefault% $1 $3 $2",
    129       .bankpack     = "%bankpack% -plat=sms $1 $2",
    130       .ld           = "%ld_z80% -a sms -n -i $1 %libs_include% $3 %crt0dir% $2",
    131       .ihxcheck     = "%ihxcheck% $2 $1",
    132       .mkbin        = "%mkbin% -S -xj 6 $1 $2 $3",  // -xj 6 is GG_EXPORT region code, for better compatibility with some emulators
    133       .postproc     = "",
    134       .llist0_defaults    = llist0_defaults_sms,
    135       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_sms),  // Use SMS linker list defaults
    136     },
    137 
    138     // MSX
    139     { .port         = "z80",
    140       .plat         = "msxdos",
    141       .default_plat = "msxdos",
    142       .rom_extension=  EXT_MSXDOS,
    143       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
    144       .include      = "%includedefault%",
    145       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
    146       .as           = "%as_z80% %asdefault% $1 $3 $2",
    147       .bankpack     = "%bankpack% -plat=sms $1 $2",
    148       .ld           = "%ld_z80% -a sms -n -i -j $1 %libs_include% $3 %crt0dir% $2",
    149       .ihxcheck     = "%ihxcheck% $2 $1",
    150       .mkbin        = "%mkbin% $1 $2 $3",
    151       .postproc     = "%mkcom% $1 $2 $3",
    152       .llist0_defaults    = llist0_defaults_msxdos,
    153       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_msxdos),
    154     },
    155 
    156     // NES
    157     { .port         = "mos6502",
    158       .plat         = "nes",
    159       .default_plat = "nes",
    160       .rom_extension=  EXT_NES,
    161       .cpp          = "%cpp% %cppdefault% $1 $2 $3",
    162       .include      = "%includedefault%",
    163       .com          = "%com% %comdefault% -Wa%asdefault% $1 %comflag% $2 -o $3",
    164       .as           = "%as_6500% %asdefault% $1 $3 $2",
    165       .bankpack     = "%bankpack% -plat=nes -mapper=30 $1 $2",
    166       .ld           = "%ld_6808% -a nes -n -i -j $1 %libs_include% $3 %crt0dir% $2",
    167       .ihxcheck     = "%ihxcheck% $2 $1",
    168       .mkbin        = "%mkbin% -N -yo A $1 $2 $3",
    169       .postproc     = "%mknes% -m 30 -n 0 -b 0 -a 1 $1 $2 $3",
    170       .llist0_defaults    = llist0_defaults_nes,
    171       .llist0_defaults_len= ARRAY_LEN(llist0_defaults_nes),
    172     }
    173 
    174 };
    175 
    176 int classes_count = ARRAY_LEN(classes);
    177 

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.