├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── README_BOOTLOGO.md
├── Versions.inc
├── bdk
├── bdk.h
├── display
│ ├── di.c
│ ├── di.h
│ ├── di.inl
│ ├── vic.c
│ └── vic.h
├── exception_handlers.S
├── fatfs_cfg.h
├── fatfs_conf.h
├── gfx_utils.h
├── ianos
│ ├── elfload
│ │ ├── elf.h
│ │ ├── elfarch.h
│ │ ├── elfload.c
│ │ ├── elfload.h
│ │ ├── elfreloc_aarch64.c
│ │ └── elfreloc_arm.c
│ ├── ianos.c
│ └── ianos.h
├── input
│ ├── als.c
│ ├── als.h
│ ├── joycon.c
│ ├── joycon.h
│ ├── touch.c
│ └── touch.h
├── libs
│ ├── compr
│ │ ├── blz.c
│ │ ├── blz.h
│ │ ├── lz.c
│ │ ├── lz.h
│ │ ├── lz4.c
│ │ └── lz4.h
│ ├── fatfs
│ │ ├── diskio.h
│ │ ├── ff.c
│ │ ├── ff.h
│ │ ├── ffsystem.c
│ │ └── ffunicode.c
│ ├── lv_conf.h
│ └── lvgl
│ │ ├── docs
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── CONTRIBUTING.md
│ │ ├── astyle_c
│ │ └── astyle_h
│ │ ├── licence.txt
│ │ ├── lv_core
│ │ ├── lv_core.mk
│ │ ├── lv_group.c
│ │ ├── lv_group.h
│ │ ├── lv_indev.c
│ │ ├── lv_indev.h
│ │ ├── lv_lang.c
│ │ ├── lv_lang.h
│ │ ├── lv_obj.c
│ │ ├── lv_obj.h
│ │ ├── lv_refr.c
│ │ ├── lv_refr.h
│ │ ├── lv_style.c
│ │ ├── lv_style.h
│ │ ├── lv_vdb.c
│ │ └── lv_vdb.h
│ │ ├── lv_draw
│ │ ├── lv_draw.c
│ │ ├── lv_draw.h
│ │ ├── lv_draw.mk
│ │ ├── lv_draw_arc.c
│ │ ├── lv_draw_arc.h
│ │ ├── lv_draw_img.c
│ │ ├── lv_draw_img.h
│ │ ├── lv_draw_label.c
│ │ ├── lv_draw_label.h
│ │ ├── lv_draw_line.c
│ │ ├── lv_draw_line.h
│ │ ├── lv_draw_rbasic.c
│ │ ├── lv_draw_rbasic.h
│ │ ├── lv_draw_rect.c
│ │ ├── lv_draw_rect.h
│ │ ├── lv_draw_triangle.c
│ │ ├── lv_draw_triangle.h
│ │ ├── lv_draw_vbasic.c
│ │ └── lv_draw_vbasic.h
│ │ ├── lv_fonts
│ │ ├── harmony_os_sans_20.c
│ │ ├── harmony_os_sans_30.c
│ │ ├── hekate_symbol_120.c
│ │ ├── hekate_symbol_20.c
│ │ ├── hekate_symbol_30.c
│ │ ├── interui_20.c
│ │ ├── interui_30.c
│ │ ├── lv_font_builtin.c
│ │ ├── lv_font_builtin.h
│ │ ├── lv_fonts.mk
│ │ └── ubuntu_mono.c
│ │ ├── lv_hal
│ │ ├── lv_hal.h
│ │ ├── lv_hal.mk
│ │ ├── lv_hal_disp.c
│ │ ├── lv_hal_disp.h
│ │ ├── lv_hal_indev.c
│ │ ├── lv_hal_indev.h
│ │ ├── lv_hal_tick.c
│ │ └── lv_hal_tick.h
│ │ ├── lv_misc
│ │ ├── lv_anim.c
│ │ ├── lv_anim.h
│ │ ├── lv_area.c
│ │ ├── lv_area.h
│ │ ├── lv_circ.c
│ │ ├── lv_circ.h
│ │ ├── lv_color.c
│ │ ├── lv_color.h
│ │ ├── lv_font.c
│ │ ├── lv_font.h
│ │ ├── lv_fs.c
│ │ ├── lv_fs.h
│ │ ├── lv_gc.c
│ │ ├── lv_gc.h
│ │ ├── lv_ll.c
│ │ ├── lv_ll.h
│ │ ├── lv_log.c
│ │ ├── lv_log.h
│ │ ├── lv_math.c
│ │ ├── lv_math.h
│ │ ├── lv_mem.c
│ │ ├── lv_mem.h
│ │ ├── lv_misc.mk
│ │ ├── lv_symbol_def.h
│ │ ├── lv_task.c
│ │ ├── lv_task.h
│ │ ├── lv_templ.c
│ │ ├── lv_templ.h
│ │ ├── lv_txt.c
│ │ ├── lv_txt.h
│ │ ├── lv_ufs.c
│ │ └── lv_ufs.h
│ │ ├── lv_objx
│ │ ├── lv_arc.c
│ │ ├── lv_arc.h
│ │ ├── lv_bar.c
│ │ ├── lv_bar.h
│ │ ├── lv_btn.c
│ │ ├── lv_btn.h
│ │ ├── lv_btnm.c
│ │ ├── lv_btnm.h
│ │ ├── lv_calendar.c
│ │ ├── lv_calendar.h
│ │ ├── lv_canvas.c
│ │ ├── lv_canvas.h
│ │ ├── lv_cb.c
│ │ ├── lv_cb.h
│ │ ├── lv_chart.c
│ │ ├── lv_chart.h
│ │ ├── lv_cont.c
│ │ ├── lv_cont.h
│ │ ├── lv_ddlist.c
│ │ ├── lv_ddlist.h
│ │ ├── lv_gauge.c
│ │ ├── lv_gauge.h
│ │ ├── lv_img.c
│ │ ├── lv_img.h
│ │ ├── lv_imgbtn.c
│ │ ├── lv_imgbtn.h
│ │ ├── lv_kb.c
│ │ ├── lv_kb.h
│ │ ├── lv_label.c
│ │ ├── lv_label.h
│ │ ├── lv_led.c
│ │ ├── lv_led.h
│ │ ├── lv_line.c
│ │ ├── lv_line.h
│ │ ├── lv_list.c
│ │ ├── lv_list.h
│ │ ├── lv_lmeter.c
│ │ ├── lv_lmeter.h
│ │ ├── lv_mbox.c
│ │ ├── lv_mbox.h
│ │ ├── lv_objx.mk
│ │ ├── lv_objx_templ.c
│ │ ├── lv_objx_templ.h
│ │ ├── lv_page.c
│ │ ├── lv_page.h
│ │ ├── lv_preload.c
│ │ ├── lv_preload.h
│ │ ├── lv_roller.c
│ │ ├── lv_roller.h
│ │ ├── lv_slider.c
│ │ ├── lv_slider.h
│ │ ├── lv_spinbox.c
│ │ ├── lv_spinbox.h
│ │ ├── lv_sw.c
│ │ ├── lv_sw.h
│ │ ├── lv_ta.c
│ │ ├── lv_ta.h
│ │ ├── lv_table.c
│ │ ├── lv_table.h
│ │ ├── lv_tabview.c
│ │ ├── lv_tabview.h
│ │ ├── lv_tileview.c
│ │ ├── lv_tileview.h
│ │ ├── lv_win.c
│ │ └── lv_win.h
│ │ ├── lv_themes
│ │ ├── lv_theme.c
│ │ ├── lv_theme.h
│ │ ├── lv_theme_hekate.c
│ │ ├── lv_theme_hekate.h
│ │ └── lv_themes.mk
│ │ ├── lv_version.h
│ │ ├── lvgl.h
│ │ └── lvgl.mk
├── mem
│ ├── emc.h
│ ├── heap.c
│ ├── heap.h
│ ├── mc.c
│ ├── mc.h
│ ├── mc_t210.h
│ ├── minerva.c
│ ├── minerva.h
│ ├── mtc_table.h
│ ├── sdram.c
│ ├── sdram.h
│ ├── sdram_config.inl
│ ├── sdram_config_t210b01.inl
│ ├── sdram_param_t210.h
│ ├── sdram_param_t210b01.h
│ ├── smmu.c
│ └── smmu.h
├── memory_map.h
├── module.h
├── power
│ ├── bm92t36.c
│ ├── bm92t36.h
│ ├── bq24193.c
│ ├── bq24193.h
│ ├── max17050.c
│ ├── max17050.h
│ ├── max77620.h
│ ├── max7762x.c
│ ├── max7762x.h
│ ├── max77812.h
│ ├── regulator_5v.c
│ └── regulator_5v.h
├── rtc
│ ├── max77620-rtc.c
│ └── max77620-rtc.h
├── sec
│ ├── se.c
│ ├── se.h
│ ├── se_t210.h
│ ├── tsec.c
│ ├── tsec.h
│ └── tsec_t210.h
├── soc
│ ├── actmon.c
│ ├── actmon.h
│ ├── bpmp.c
│ ├── bpmp.h
│ ├── ccplex.c
│ ├── ccplex.h
│ ├── clock.c
│ ├── clock.h
│ ├── fuse.c
│ ├── fuse.h
│ ├── gpio.c
│ ├── gpio.h
│ ├── hw_init.c
│ ├── hw_init.h
│ ├── i2c.c
│ ├── i2c.h
│ ├── irq.c
│ ├── irq.h
│ ├── kfuse.c
│ ├── kfuse.h
│ ├── pinmux.c
│ ├── pinmux.h
│ ├── pmc.c
│ ├── pmc.h
│ ├── pmc_lp0_t210.h
│ ├── t210.h
│ ├── timer.c
│ ├── timer.h
│ ├── uart.c
│ └── uart.h
├── storage
│ ├── emmc.c
│ ├── emmc.h
│ ├── mbr_gpt.h
│ ├── mmc.h
│ ├── nx_emmc_bis.c
│ ├── nx_emmc_bis.h
│ ├── ramdisk.c
│ ├── ramdisk.h
│ ├── sd.c
│ ├── sd.h
│ ├── sd_def.h
│ ├── sdmmc.c
│ ├── sdmmc.h
│ ├── sdmmc_driver.c
│ ├── sdmmc_driver.h
│ └── sdmmc_t210.h
├── thermal
│ ├── fan.c
│ ├── fan.h
│ ├── tmp451.c
│ └── tmp451.h
├── usb
│ ├── usb_descriptor_types.h
│ ├── usb_descriptors.c
│ ├── usb_gadget_hid.c
│ ├── usb_gadget_ums.c
│ ├── usb_t210.h
│ ├── usbd.c
│ ├── usbd.h
│ └── xusbd.c
└── utils
│ ├── aarch64_util.h
│ ├── btn.c
│ ├── btn.h
│ ├── dirlist.c
│ ├── dirlist.h
│ ├── ini.c
│ ├── ini.h
│ ├── list.h
│ ├── sprintf.c
│ ├── sprintf.h
│ ├── types.h
│ ├── util.c
│ └── util.h
├── bootloader
├── config.c
├── config.h
├── frontend
│ ├── fe_info.c
│ ├── fe_info.h
│ ├── fe_tools.c
│ └── fe_tools.h
├── gfx
│ ├── gfx.c
│ ├── gfx.h
│ ├── logos.c
│ ├── logos.h
│ ├── tui.c
│ └── tui.h
├── hos
│ ├── hos.c
│ ├── hos.h
│ ├── hos_config.c
│ ├── hos_config.h
│ ├── pkg1.c
│ ├── pkg1.h
│ ├── pkg2.c
│ ├── pkg2.h
│ ├── pkg2_ini_kippatch.c
│ ├── pkg2_ini_kippatch.h
│ ├── pkg2_patches.inl
│ ├── pkg3.c
│ ├── pkg3.h
│ ├── secmon_exo.c
│ └── secmon_exo.h
├── l4t
│ ├── l4t.c
│ ├── l4t.h
│ └── l4t_config.inl
├── libs
│ └── fatfs
│ │ ├── diskio.c
│ │ └── ffconf.h
├── link.ld
├── main.c
├── start.S
└── storage
│ ├── emummc.c
│ └── emummc.h
├── loader
├── Makefile
├── link.ld
├── loader.c
└── start.S
├── modules
├── hekate_libsys_lp0
│ ├── Makefile
│ ├── pmc_lp0_t210.h
│ ├── sdram_lp0_param_t210.h
│ ├── sdram_lp0_param_t210b01.h
│ ├── sys_sdramlp0.c
│ ├── t210.h
│ └── types.h
├── hekate_libsys_minerva
│ ├── Makefile
│ ├── README.md
│ ├── mtc.h
│ ├── mtc_mc_emc_regs.h
│ ├── mtc_switch_tables.h
│ ├── mtc_table.h
│ ├── sys_sdrammtc.c
│ └── types.h
└── simple_sample
│ ├── Makefile
│ ├── gfx
│ ├── gfx.c
│ └── gfx.h
│ └── module_sample.c
├── nyx
├── Makefile
├── README_RES.md
├── nyx_gui
│ ├── config.c
│ ├── config.h
│ ├── frontend
│ │ ├── fe_emmc_tools.c
│ │ ├── fe_emmc_tools.h
│ │ ├── fe_emummc_tools.c
│ │ ├── fe_emummc_tools.h
│ │ ├── gui.c
│ │ ├── gui.h
│ │ ├── gui_emmc_tools.c
│ │ ├── gui_emmc_tools.h
│ │ ├── gui_emummc_tools.c
│ │ ├── gui_emummc_tools.h
│ │ ├── gui_info.c
│ │ ├── gui_info.h
│ │ ├── gui_options.c
│ │ ├── gui_options.h
│ │ ├── gui_tools.c
│ │ ├── gui_tools.h
│ │ ├── gui_tools_partition_manager.c
│ │ └── gui_tools_partition_manager.h
│ ├── gfx
│ │ ├── gfx.c
│ │ ├── gfx.h
│ │ └── logos-gui.h
│ ├── hos
│ │ ├── hos.c
│ │ ├── hos.h
│ │ ├── pkg1.c
│ │ ├── pkg1.h
│ │ ├── pkg2.c
│ │ └── pkg2.h
│ ├── libs
│ │ └── fatfs
│ │ │ ├── diskio.c
│ │ │ └── ffconf.h
│ ├── link.ld
│ ├── nyx.c
│ └── start.S
└── resources
│ ├── icon_lakka.bmp
│ ├── icon_lakka_hue.bmp
│ ├── icon_payload.bmp
│ └── icon_switch.bmp
├── res
├── bootlogo
│ ├── bootA_(ARGB).bmp
│ ├── bootA_caps_(ARGB).bmp
│ ├── bootA_custom_(ARGB).bmp
│ ├── bootB_(ARGB).bmp
│ ├── bootB_caps_(ARGB).bmp
│ ├── bootB_custom_(ARGB).bmp
│ ├── bootC_(ARGB).bmp
│ ├── bootC_ctc_(ARGB).bmp
│ ├── bootD_(ARGB).bmp
│ ├── bootD_ctc_(ARGB).bmp
│ └── bootlogo.psd
├── hekate_ipl_template.ini
└── patches_template.ini
└── tools
├── bin2c
├── Makefile
└── bin2c.c
├── emc.def
├── find_chinese.py
├── fix_regs.py
├── lz
├── Makefile
├── lz.c
├── lz.h
└── lz77.c
├── mc.def
└── smmu_payload.py
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Build Hekate
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | branches: [ master ]
8 | workflow_dispatch:
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 |
14 | container:
15 | image: devkitpro/devkita64
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 |
20 | - name: Install Essential Build Tools and Utilities
21 | run: |
22 | sudo apt-get update
23 | sudo apt-get install -y build-essential jq unzip zip
24 |
25 | - name: Build hekate
26 | run: |
27 | make
28 |
29 | - name: Download latest hekate_ctcaer release
30 | id: download
31 | run: |
32 | # Get the latest release tag name and asset name
33 | RELEASE_DATA=$(curl --silent "https://api.github.com/repos/CTCaer/hekate/releases/latest")
34 | TAG_NAME=$(echo "$RELEASE_DATA" | jq -r .tag_name)
35 | ASSET_NAME_WITH_EXTENSION=$(echo "$RELEASE_DATA" | jq -r '.assets[] | select(.name | startswith("hekate_ctcaer_")) | .name')
36 | ASSET_URL=$(echo "$RELEASE_DATA" | jq -r '.assets[] | select(.name | startswith("hekate_ctcaer_")) | .browser_download_url')
37 |
38 | # Download the zip file
39 | curl -L $ASSET_URL -o $ASSET_NAME_WITH_EXTENSION
40 |
41 | # Output the asset name without extension
42 | echo "original_asset_name=${ASSET_NAME_WITH_EXTENSION%.zip}" >> $GITHUB_ENV
43 | shell: bash
44 |
45 | - name: Replace nyx.bin and repackage
46 | run: |
47 | # Extract the zip file
48 | unzip "${original_asset_name}.zip" -d hekate_extracted
49 |
50 | # Replace nyx.bin with the one built
51 | cp output/nyx.bin hekate_extracted/bootloader/sys/nyx.bin
52 |
53 | # Define the new asset name
54 | echo "new_asset_name=${original_asset_name}_sc" >> $GITHUB_ENV
55 | shell: bash
56 |
57 | - name: Upload new zip as artifact
58 | uses: actions/upload-artifact@v4
59 | with:
60 | name: ${{ env.new_asset_name }}
61 | path: hekate_extracted/
62 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vs
2 | .vscode
3 | build/*
4 | output/*
5 | loader/payload_00.h
6 | loader/payload_01.h
7 | tools/bin2c/bin2c
8 | tools/bin2c/bin2c.exe
9 | tools/lz/lz77
10 | tools/lz/lz77.exe
11 |
--------------------------------------------------------------------------------
/README_BOOTLOGO.md:
--------------------------------------------------------------------------------
1 | # hekate - Bootlogo
2 |
3 | The bootlogo can be any size with a maximum of 720 x 1280.
4 |
5 | When it's smaller than 720 x 1280, it is automatically centered and the background takes the color of the first pixel.
6 |
7 | The process is to create a landscape bootlogo and then rotate it 90 degrees counterclockwise.
8 |
9 | Lastly, the supported format is 32-bit (ARGB) BMP. Classic 24-bit (RGB) BMPs are not supported for performance reasons.
10 |
11 |
12 | ## How to configure
13 |
14 | If a boot entry specifies a custom logo path (`logopath=`), this one will be loaded.
15 |
16 | If the above is not found or the format is not correct, it will try to load `bootloader/bootlogo.bmp`.
17 | If this is not found, the default hekate logo will be used.
18 |
19 | (`bootloader/bootlogo.bmp` is basically like a global bootlogo.)
20 |
--------------------------------------------------------------------------------
/Versions.inc:
--------------------------------------------------------------------------------
1 | # IPL Version.
2 | BLVERSION_MAJOR := 6
3 | BLVERSION_MINOR := 3
4 | BLVERSION_HOTFX := 1
5 | BLVERSION_REL := 0
6 |
7 | # Nyx Version.
8 | NYXVERSION_MAJOR := 1
9 | NYXVERSION_MINOR := 7
10 | NYXVERSION_HOTFX := 0
11 | NYXVERSION_REL := 0
12 |
--------------------------------------------------------------------------------
/bdk/bdk.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2022 CTCaer
3 | *
4 | * This program is free software; you can redistribute it and/or modify it
5 | * under the terms and conditions of the GNU General Public License,
6 | * version 2, as published by the Free Software Foundation.
7 | *
8 | * This program is distributed in the hope it will be useful, but WITHOUT
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11 | * more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this program. If not, see .
15 | */
16 |
17 | #ifndef BDK_H
18 | #define BDK_H
19 |
20 | #include
21 |
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 | #include
33 | #include
34 | #include
35 | #include
36 | #include
37 | #include
38 | #include
39 | #include
40 | #include
41 | #include