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.