Adding Custom (Zero based) boards to the Arduino IDE - Part II
2) The Core Files
In the JSON file you'll notice that there's a URL link to a compressed file, in this case "Falcon-1.0.0.zip". The compressed file can be in either .zip, .tar.bz2, or .tar.gz formats. This zip file must contain a directory and within that directory is the location of the boards' core files.
Simply navigate to the directory:
C:\Users\Computer\AppData\Local\Arduino15\packages\arduino\hardware\samd
...and copy the "1.6.6" folder, (this is Arduino Zero's current build version so it might change), to another directory, doesn't matter where, I chose:
C:\Users\Computer\Documents\FalconBoards
Rename the "1.6.6" folder to whatever you like, I used "Falcon-1.0.0", but the name doesn't really matter. Next section we'll enter this folder to edit the "boards.txt", "variant.h" and "variant.cpp" files.
3) The "boards.txt" File
First enter the newly named folder and open the "boards.txt" file in an editor, (I use NotePad++). In the file take the native USB entry for the Arduino Zero and copy it, then delete the Arduino and MKR1000 entries. I copied the entry two times for both the Falcon 1 and Falcon 2 boards.
Here's the my "boards.txt" for the Falcon boards:
# Falcon 1 (Native USB Port)
# ---------------------------------------
falcon_1_native.name=Falcon 1 (Native USB Port)
falcon_1_native.vid.0=0x2341
falcon_1_native.pid.0=0x804d
falcon_1_native.vid.1=0x2341
falcon_1_native.pid.1=0x004d
falcon_1_native.vid.2=0x2341
falcon_1_native.pid.2=0x824d
# If the board is a 2341:824d use 2341:824d for build and set other parameters as well
falcon_1_native.vid.2.build.vid=0x2341
falcon_1_native.vid.2.build.pid=0x824d
falcon_1_native.vid.2.build.usb_product="Genuino Zero"
falcon_1_native.vid.2.bootloader.file=zero/samd21_sam_ba_genuino.bin
falcon_1_native.vid.3=0x2341
falcon_1_native.pid.3=0x024d
# If the board is a 2341:024d use 2341:824d for build and set other parameters as well
falcon_1_native.vid.3.build.vid=0x2341
falcon_1_native.vid.3.build.pid=0x824d
falcon_1_native.vid.3.build.usb_product="Genuino Zero"
falcon_1_native.vid.3.bootloader.file=zero/samd21_sam_ba_genuino.bin
falcon_1_native.upload.tool=bossac
falcon_1_native.upload.protocol=sam-ba
falcon_1_native.upload.maximum_size=262144
falcon_1_native.upload.use_1200bps_touch=true
falcon_1_native.upload.wait_for_upload_port=true
falcon_1_native.upload.native_usb=true
falcon_1_native.build.mcu=cortex-m0plus
falcon_1_native.build.f_cpu=48000000L
falcon_1_native.build.usb_product="Arduino Zero"
falcon_1_native.build.usb_manufacturer="Arduino LLC"
falcon_1_native.build.board=SAMD_ZERO
falcon_1_native.build.core=arduino
falcon_1_native.build.extra_flags=-D__SAMD21G18A__ {build.usb_flags}
falcon_1_native.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
falcon_1_native.build.openocdscript=openocd_scripts/arduino_zero.cfg
falcon_1_native.build.variant=falcon_1
falcon_1_native.build.variant_system_lib=
falcon_1_native.build.vid=0x2341
falcon_1_native.build.pid=0x804d
falcon_1_native.bootloader.tool=openocd
falcon_1_native.bootloader.file=zero/samd21_sam_ba.bin
# Falcon 2 (Native USB Port)
# ---------------------------------------
falcon_2_native.name=Falcon 2 (Native USB Port)
falcon_2_native.vid.0=0x2341
falcon_2_native.pid.0=0x804d
falcon_2_native.vid.1=0x2341
falcon_2_native.pid.1=0x004d
falcon_2_native.vid.2=0x2341
falcon_2_native.pid.2=0x824d
# If the board is a 2341:824d use 2341:824d for build and set other parameters as well
falcon_2_native.vid.2.build.vid=0x2341
falcon_2_native.vid.2.build.pid=0x824d
falcon_2_native.vid.2.build.usb_product="Genuino Zero"
falcon_2_native.vid.2.bootloader.file=zero/samd21_sam_ba_genuino.bin
falcon_2_native.vid.3=0x2341
falcon_2_native.pid.3=0x024d
# If the board is a 2341:024d use 2341:824d for build and set other parameters as well
falcon_2_native.vid.3.build.vid=0x2341
falcon_2_native.vid.3.build.pid=0x824d
falcon_2_native.vid.3.build.usb_product="Genuino Zero"
falcon_2_native.vid.3.bootloader.file=zero/samd21_sam_ba_genuino.bin
falcon_2_native.upload.tool=bossac
falcon_2_native.upload.protocol=sam-ba
falcon_2_native.upload.maximum_size=262144
falcon_2_native.upload.use_1200bps_touch=true
falcon_2_native.upload.wait_for_upload_port=true
falcon_2_native.upload.native_usb=true
falcon_2_native.build.mcu=cortex-m0plus
falcon_2_native.build.f_cpu=48000000L
falcon_2_native.build.usb_product="Arduino Zero"
falcon_2_native.build.usb_manufacturer="Arduino LLC"
falcon_2_native.build.board=SAMD_ZERO
falcon_2_native.build.core=arduino
falcon_2_native.build.extra_flags=-D__SAMD21J18A__ {build.usb_flags}
falcon_2_native.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
falcon_2_native.build.openocdscript=openocd_scripts/arduino_zero.cfg
falcon_2_native.build.variant=falcon_2
falcon_2_native.build.variant_system_lib=
falcon_2_native.build.vid=0x2341
falcon_2_native.build.pid=0x804d
falcon_2_native.bootloader.tool=openocd
falcon_2_native.bootloader.file=zero/samd21_sam_ba.bin
As you can see I replaced "arduino_zero_native" with "falcon_1_native" and "falcon_2_native" respectively.
Other changes of note is the name:
falcon_1_native.name=Falcon 1 (Native USB Port)
...this determines the name of the boards that appear in the Boards Manager drop down list.
Also the line specifying the variant directory:
falcon_1_native.build.variant=falcon_1
Also note that for the Falcon 2, I changed the build.extra flag to SAMD21J18A to account for the larger "J" variant micro-controller:
falcon_2_native.build.extra_flags=-D__SAMD21J18A__ {build.usb_flags}
4) The "variant" Files
The variant files are contained in the "variant" folder. Inside this folder are two directories for the "arduino_zero" and the "MKR1000". Rename the "arduino_zero" folder and delete "MKR1000", the name should match the variant names specified in the "boards.txt" file. I created two variant directories: "falcon_1" and "falcon_2".
Edit the "variant.h" and "variant.cpp" files for your board. In my case the Falcon 1 only required minor changes, commenting out the entries for PIN_LED_TXL and PIN_LED_RXL, while the Falcon 2 required more substantial alterations.
After making these changes take your newly named directory, in my case "Falcon-1.0.0" and place it in a .zip, .tar.bz2, or .tar.gz file. I called mine "Falcon-1.0.0.zip". Again, nothing special about the name.
5) The "platform.txt" File
The name and version at the head of the "platform.txt" file, also needs to be changed. I believe the version isn't currently used, but is reserved for future use and reflects the currrent build, in my case it's 1.0.0. The name provides the title name at the head of the drop down list. I chose "Falcon Flight Controller Boards".

6) The JSON Index File - Part II
Looking at the JSON file oncemore, you'll notice that it specifies the compressed file's URL, filename, size and checksum. The checksum can be either MD5, SHA-256 or SHA-1 formats, but SHA-256 is recommended. The checksum and the filesize can be calculated by downloading a program called "md5deep" from sourceforge.net.
After downloading this program, move it to an appropriate directory. Then open the "Command Prompt", navigate to the md5deep directory and enter the following line, which generates the file size and SHL-256 checksum for the zip file:
sha256deep -r -z C:\Users\Computer\Documents\FalconBoards\Falcon-1.0.0.zip

If you've got a 64-bit machine you can use sha256deep64, which avoids the warning, but oncemore it doesn't really matter.
The -r switch causes the algorithm to recursively enter directories within the zip file, while -z gets the program to return the file size. Now copy both the checksum and file size entries into the JSON file.
When the custom boards are installed in the "Boards Manager", the information in the JSON and compressed file are used by the IDE to build a directory structure and copy over the custom core files. So, while the Arduino Zero core files are stored in:
C:\Users\Computer\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.6
...the custom, or in this case Falcon board files are copied to the directory:
C:\Users\Computer\AppData\Local\Arduino15\packages\falcon\hardware\samd\1.0.0