Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
3a47eb5
Add USB Debugging through UART
bbsan2k Jan 18, 2023
8978615
Add USB Debug UF2
bbsan2k Jan 18, 2023
1b37d13
put char when writing to uart
bbsan2k Jan 18, 2023
c565c04
Merge branch 'feat/debug_usb' of github.com:bbsan2k/firmware into fea…
bbsan2k Jan 18, 2023
9c3ac6e
wip-ps2 exploit
bbsan2k Jan 19, 2023
1fd3cbf
Peroperly adding exploit screen
bbsan2k Jan 20, 2023
2e90fdf
wip - read from flash
bbsan2k Jan 20, 2023
fac3041
Fix wrong pointer to buffer
bbsan2k Jan 20, 2023
0f227de
Add exploit "BOOT" card and activate Boot
bbsan2k Jan 23, 2023
8453576
Add USB Debugging through UART
bbsan2k Jan 18, 2023
18352b9
put char when writing to uart
bbsan2k Jan 18, 2023
686a4d6
wip-ps2 exploit
bbsan2k Jan 19, 2023
0cadad1
Peroperly adding exploit screen
bbsan2k Jan 20, 2023
891210d
wip - read from flash
bbsan2k Jan 20, 2023
baf7afa
Fix wrong pointer to buffer
bbsan2k Jan 20, 2023
fbbd2d5
Add exploit "BOOT" card and activate Boot
bbsan2k Jan 23, 2023
420d03e
Re-Add Force Refresh
bbsan2k Jan 23, 2023
76332af
Merge branch 'feat/ps2_exploit' of github.com:bbsan2k/firmware into f…
bbsan2k Jan 23, 2023
0bc0635
integrate boot iamge, remove deploy dialog (preliminary)
bbsan2k Jan 29, 2023
a47bfe1
Build also develop
bbsan2k Jan 29, 2023
e3b0a82
Get Bootcard during build
bbsan2k Jan 30, 2023
32a9d53
Fix download
bbsan2k Jan 30, 2023
2f52863
Start implementing text game name
bbsan2k Jan 30, 2023
ffe918a
Merge branch 'sd2psx:main' into feat/ps2_exploit
bbsan2k Jan 31, 2023
98864b4
Merge branch 'sd2psx:main' into develop
bbsan2k Jan 31, 2023
d90ad37
Remove exploit deployment
bbsan2k Jan 31, 2023
fa2bde3
Fix using other cards after boot
bbsan2k Jan 31, 2023
d087a0d
Remove check for exploit available (it's always available)
bbsan2k Jan 31, 2023
93e23c2
Fix Min Index
bbsan2k Jan 31, 2023
88dd5ac
Merge branch 'feat/ps2_exploit' into develop
bbsan2k Jan 31, 2023
7828a39
Merge branch 'develop' into feat/ps2/text_game_name
bbsan2k Jan 31, 2023
dfb8286
Refactor game name stuff in own library
bbsan2k Feb 2, 2023
3e068f1
Add additional SD functions to iterate over files / dirs
bbsan2k Feb 2, 2023
0c05241
Add PS2 database (commented out for now)
bbsan2k Feb 2, 2023
9d62c9c
Start adding game name functionality to ps2
bbsan2k Feb 2, 2023
caf9b2c
Remove create exploit screen
bbsan2k Feb 2, 2023
0bbb5a3
Remove commented code
bbsan2k Feb 2, 2023
2eb340e
Simplify settings
bbsan2k Feb 2, 2023
9be1e61
Remove comments and debug
bbsan2k Feb 2, 2023
aa22b99
cleanup
bbsan2k Feb 2, 2023
3c32e6f
Change CMake structure
bbsan2k Feb 6, 2023
8acf5f0
Update game name processing
bbsan2k Feb 6, 2023
110c730
Fix ODE Man
bbsan2k Feb 6, 2023
e6785b0
Store folder name in cardman
bbsan2k Feb 6, 2023
e3e77e9
Move Game ID processing stuff into game names
bbsan2k Feb 6, 2023
1b47bc4
Update name handling
bbsan2k Feb 6, 2023
ce531e8
Switch bootcard to latest selected card on button press
bbsan2k Feb 6, 2023
844fc0e
Disable channels for boot card
bbsan2k Feb 6, 2023
606a520
Switch to first card after boot also on short press
bbsan2k Feb 7, 2023
c7c81df
Add version
bbsan2k Feb 7, 2023
afa4382
Merge branch 'main' into develop
bbsan2k Feb 7, 2023
8fe7eba
Merge branch 'develop' into feat/version
bbsan2k Feb 7, 2023
e6294ed
Add separate version page
bbsan2k Feb 8, 2023
787e33a
Add Version to workflow
bbsan2k Feb 8, 2023
1f6165a
Merge branch 'feat/version' into develop
bbsan2k Feb 8, 2023
791ace6
Fix Build
bbsan2k Feb 8, 2023
2690cca
Merge branch 'feat/version' into develop
bbsan2k Feb 8, 2023
17777f5
Fix non Debug version
bbsan2k Feb 8, 2023
f9d9461
Merge branch 'feat/version' into develop
bbsan2k Feb 8, 2023
a5d2bd9
Try to get version during checkout
bbsan2k Feb 8, 2023
22ba6a4
Merge branch 'feat/version' into develop
bbsan2k Feb 8, 2023
95c9c49
CI
bbsan2k Feb 8, 2023
82768f1
Merge branch 'feat/version' into develop
bbsan2k Feb 8, 2023
feddbb5
Merge branch 'develop' into feat/ps2/text_game_name
bbsan2k Feb 8, 2023
6b79a48
Add PS2 game naming based on txt file
bbsan2k Feb 10, 2023
edb31ad
Fix Bootcard Naming
bbsan2k Feb 22, 2023
b5eccca
Add game_names
bbsan2k Feb 22, 2023
0559050
Move version.c into build folder as it is generated each build
bbsan2k Feb 22, 2023
f73a549
Merge branch 'feat/version' into develop
bbsan2k Feb 22, 2023
5d5a285
Fix versioning
bbsan2k Mar 19, 2023
779991c
Merge branch 'feat/version' into develop
bbsan2k Mar 19, 2023
7ac0d52
Release name for untagged releases "nightly-COMMIT_HASH"
bbsan2k Mar 19, 2023
6052b19
Merge branch 'feat/version' into develop
bbsan2k Mar 19, 2023
c16d70e
Exclude nightly for describe
bbsan2k Mar 19, 2023
82d7958
Merge branch 'feat/version' into develop
bbsan2k Mar 19, 2023
782577d
Update Exploit Loader to also work on PSX DVR
bbsan2k Mar 20, 2023
0db45cf
Keep object files updated - update databases only once a day
bbsan2k Mar 20, 2023
9e362c8
Merge branch 'feat/ps2_exploit_update' into develop
bbsan2k Mar 20, 2023
b58329e
Merge branch 'fix/updates' into develop
bbsan2k Mar 20, 2023
2cd42e8
Use cmake script to generate version.c
bbsan2k Apr 9, 2023
0af6db3
Remove fetch --all and add origin
bbsan2k Apr 9, 2023
8599c3a
Generate Version file after each clean
bbsan2k Apr 9, 2023
f8b6f8c
Generate C file on each build, regardless of changed content
bbsan2k Apr 10, 2023
92d7b85
Simplify build script
bbsan2k Apr 10, 2023
5ddd995
Merge branch 'feat/version' into develop
bbsan2k Apr 10, 2023
dbd1eb3
Merge branch 'develop' into feat/ps2/text_game_name
bbsan2k Apr 22, 2023
a297c45
Merge commit '4b93ab2ff6c9f8df51e22d88a0d949bf59577624' into feat/ps2…
bbsan2k Jun 2, 2023
397621c
Clean up
bbsan2k Aug 6, 2023
bff4ad6
Move MC card emulation related stuff into separate folder
bbsan2k Sep 6, 2023
a138eaa
First commands WiP
bbsan2k Sep 9, 2023
0e3d819
Start refactoring card communication for better readability.
bbsan2k Oct 29, 2023
a3e9229
small fixes
bbsan2k Oct 30, 2023
d3fa29f
Fix receiveFirst
bbsan2k Oct 30, 2023
8c04ebe
Re-factor CMake
bbsan2k Nov 8, 2023
ff537a4
Major PS2 refactoring
bbsan2k Nov 8, 2023
4f60239
initial sd2psxman support
Nov 8, 2023
205600f
added unmount bootcard command
Nov 9, 2023
a62d4cc
Merge pull request #4 from qnox32/feat/ps2/game_id_support
bbsan2k Nov 11, 2023
49df629
Minor cleanup
bbsan2k Nov 11, 2023
d322900
Switch card using GUI
bbsan2k Nov 13, 2023
dd6e4f0
Update PS2 game name script
bbsan2k Dec 6, 2023
8e82f06
Increase space for App in linker script
bbsan2k Dec 30, 2023
8b4bf38
Build PS2 game database binary file
bbsan2k Dec 30, 2023
0f00ae5
Add PS2 game names
bbsan2k Dec 30, 2023
e4cdfe3
Rename all functions
bbsan2k Dec 30, 2023
f5442eb
Implement set game ID
bbsan2k Dec 30, 2023
b30cb8d
Use renamed functions, add game id variable
bbsan2k Dec 30, 2023
e52cd5f
Implement Game ID output and states
bbsan2k Dec 30, 2023
1ee8a9f
Cherry Pick Ecc Table
bbsan2k Dec 30, 2023
b67c8c9
Cherry Pick Workflow from Upstream
bbsan2k Dec 30, 2023
ecaa013
Cherry Pick settings
bbsan2k Dec 30, 2023
eb4f33f
Fix Switching from GameID to Boot and back
bbsan2k Dec 31, 2023
250416f
Fix issues for missing game ids in database
bbsan2k Dec 31, 2023
0c46b79
Cleanup includes
bbsan2k Dec 31, 2023
8fc8be3
Game ID fixes
bbsan2k Feb 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CMake

on:
push:
branches: [ "main", "develop" ]
branches: '*'
pull_request:
branches: [ "main", "develop" ]
branches: 'v*'

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
Expand Down Expand Up @@ -62,15 +62,22 @@ jobs:
- name: Rename Debug USB uf2
run: mv build_usb/sd2psx.uf2 build/sd2psx_usb_debug.uf2

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: SD2PSX-${{ github.sha }}
path: |
build/*.uf2

- uses: marvinpinto/action-automatic-releases@v1.2.1
if: github.event_name != 'pull_request'
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') #only release on tag or master branch
# uses: marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0
with:
# GitHub secret token
title: "${{ env.SD2PSX_VERSION }}"
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: ${{ env.SD2PSX_RLS_TAG }}
prerelease: true
prerelease: ${{ !startsWith(github.ref, 'refs/tags/v') }}
# Assets to upload to the release
files: |
build/*.uf2
Expand Down
160 changes: 61 additions & 99 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,145 +1,107 @@
cmake_minimum_required(VERSION 3.12)

set(PICO_SDK_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ext/pico-sdk)
include(pico_sdk_import.cmake)

project(pico_examples C CXX ASM)
project(SD2PSX LANGUAGES C CXX ASM)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
# set(PICO_COPY_TO_RAM 1)

pico_sdk_init()

set(LV_CONF_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/lv_conf.h CACHE STRING "" FORCE)
add_subdirectory(ext/lvgl EXCLUDE_FROM_ALL)
# Add all subdirectories for sub-targets

add_subdirectory(database)
add_subdirectory(ps2boot)
add_subdirectory(src/version)
add_subdirectory(src/ps2)
add_subdirectory(src/ps1)
add_subdirectory(ext/)

# SD2PSX Main Lib

add_executable(sd2psx
src/main.c
src/debug.c
src/gui.c
src/input.c
src/ui_menu.c
src/ui_theme_mono.c
src/des.c
src/keystore.c
src/settings.c
src/bigmem.c
src/oled.c

src/ps1/ps1_cardman.c
src/ps1/ps1_dirty.c
src/ps1/ps1_memory_card.c
src/ps1/ps1_empty_card.c
src/ps1/ps1_odeman.c

src/ps2/ps2_memory_card.c
src/ps2/ps2_dirty.c
src/ps2/ps2_cardman.c
src/ps2/ps2_pio_qspi.c
src/ps2/ps2_psram.c
src/ps2/ps2_exploit.c

src/game_names/game_names.c
src/wear_leveling/wear_leveling.c
src/wear_leveling/wear_leveling_rp2040_flash.c

src/arduino_wrapper/sd.cpp
src/arduino_wrapper/SPI.cpp

ext/ESP8266SdFat/src/common/FmtNumber.cpp
ext/ESP8266SdFat/src/common/FsCache.cpp
ext/ESP8266SdFat/src/common/FsDateTime.cpp
ext/ESP8266SdFat/src/common/FsName.cpp
ext/ESP8266SdFat/src/common/FsStructs.cpp
ext/ESP8266SdFat/src/common/FsUtf.cpp
ext/ESP8266SdFat/src/common/upcase.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatFile.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatFilePrint.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatFileWrite.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatFormatter.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatName.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatPartition.cpp
ext/ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp
ext/ESP8266SdFat/src/FatLib/FatDbg.cpp
ext/ESP8266SdFat/src/FatLib/FatFile.cpp
ext/ESP8266SdFat/src/FatLib/FatFileLFN.cpp
ext/ESP8266SdFat/src/FatLib/FatFilePrint.cpp
ext/ESP8266SdFat/src/FatLib/FatFileSFN.cpp
ext/ESP8266SdFat/src/FatLib/FatFormatter.cpp
ext/ESP8266SdFat/src/FatLib/FatName.cpp
ext/ESP8266SdFat/src/FatLib/FatPartition.cpp
ext/ESP8266SdFat/src/FatLib/FatVolume.cpp
ext/ESP8266SdFat/src/FreeStack.cpp
ext/ESP8266SdFat/src/FsLib/FsFile.cpp
ext/ESP8266SdFat/src/FsLib/FsNew.cpp
ext/ESP8266SdFat/src/FsLib/FsVolume.cpp
ext/ESP8266SdFat/src/iostream/istream.cpp
ext/ESP8266SdFat/src/iostream/ostream.cpp
ext/ESP8266SdFat/src/iostream/StdioStream.cpp
ext/ESP8266SdFat/src/iostream/StreamBaseClass.cpp
ext/ESP8266SdFat/src/MinimumSerial.cpp
ext/ESP8266SdFat/src/SdCard/SdCardInfo.cpp
ext/ESP8266SdFat/src/SdCard/SdSpiCard.cpp

ext/fnv/hash_64a.c
)

add_library(ssd1306 STATIC ext/pico-ssd1306/ssd1306.c)
target_link_libraries(ssd1306 pico_stdlib hardware_i2c)

target_compile_definitions(
sd2psx PUBLIC
PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
PICO_FLASH_SIZE_BYTES=16777216
USE_SPI_ARRAY_TRANSFER=1
)

target_compile_options(
sd2psx PRIVATE
-Wall -Wextra
-fno-jump-tables
)

target_include_directories(sd2psx PUBLIC
src/arduino_wrapper

ext/pico-ssd1306
ext/ESP8266SdFat/src
ext/ESP8266SdFat/extras/attic
ext/fnv
)

pico_generate_pio_header(sd2psx ${CMAKE_CURRENT_LIST_DIR}/src/ps1/ps1_mc_spi.pio)
pico_generate_pio_header(sd2psx ${CMAKE_CURRENT_LIST_DIR}/src/ps2/ps2_mc_spi.pio)
pico_generate_pio_header(sd2psx ${CMAKE_CURRENT_LIST_DIR}/src/ps2/ps2_qspi.pio)

target_link_libraries(sd2psx
ssd1306
pico_stdlib
pico_multicore
hardware_pio
hardware_spi
hardware_i2c
hardware_flash
hardware_dma
lvgl::lvgl
gamedb
ps2boot
sd2psx_version
PRIVATE
pico_stdlib
pico_multicore
hardware_pio
hardware_i2c
hardware_flash
gamedb
ps2boot
sd2psx_version
sd2psx_common
ps1_card
ps2_card
sd_fat
)

add_dependencies(sd2psx gamedb ps2boot)
set_target_properties(sd2psx PROPERTIES PICO_TARGET_LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/memmap_custom.ld)

# Common Lib

add_library(sd2psx_common STATIC
${CMAKE_CURRENT_SOURCE_DIR}/src/debug.c
${CMAKE_CURRENT_SOURCE_DIR}/src/gui.c
${CMAKE_CURRENT_SOURCE_DIR}/src/input.c
${CMAKE_CURRENT_SOURCE_DIR}/src/ui_menu.c
${CMAKE_CURRENT_SOURCE_DIR}/src/ui_theme_mono.c
${CMAKE_CURRENT_SOURCE_DIR}/src/des.c
${CMAKE_CURRENT_SOURCE_DIR}/src/keystore.c
${CMAKE_CURRENT_SOURCE_DIR}/src/settings.c
${CMAKE_CURRENT_SOURCE_DIR}/src/bigmem.c
${CMAKE_CURRENT_SOURCE_DIR}/src/oled.c)

target_include_directories(sd2psx_common
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE )

target_link_libraries(sd2psx_common
PUBLIC
lvgl::lvgl
PRIVATE
pico_platform_headers
ssd1306
hardware_flash)

target_compile_options(sd2psx_common
PUBLIC
-Wall -Wextra
-fno-jump-tables)

target_compile_definitions(sd2psx_common PUBLIC
USE_SPI_ARRAY_TRANSFER=1)

set_target_properties(sd2psx_common PROPERTIES PICO_TARGET_LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/memmap_custom.ld)

pico_add_extra_outputs(sd2psx)

set(DEBUG_USB_UART OFF CACHE BOOL "Activate UART over USB for debugging")

if(DEBUG_USB_UART)
add_definitions(-DDEBUG_USB_UART)
pico_enable_stdio_usb(sd2psx ENABLED)
target_compile_definitions(sd2psx_common PUBLIC -DDEBUG_USB_UART)
pico_enable_stdio_usb(sd2psx ON)
endif()
23 changes: 21 additions & 2 deletions database/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# PS1
set(GAMEDB_PS1_OBJ "${CMAKE_CURRENT_BINARY_DIR}/gamedbps1.o")

add_custom_target(gamedbobjs ALL
add_custom_target(gamedbobjs_ps1 ALL
COMMAND ${CMAKE_COMMAND}
-D OUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
-D PYTHON_SCRIPT=${CMAKE_CURRENT_SOURCE_DIR}/parse_db.py
Expand All @@ -11,6 +12,24 @@ add_custom_target(gamedbobjs ALL
BYPRODUCTS ${GAMEDB_PS1_OBJ})

add_library(gamedb INTERFACE)
add_dependencies(gamedb gamedbobjs)
add_dependencies(gamedb gamedbobjs_ps1)

target_link_libraries(gamedb INTERFACE ${GAMEDB_PS1_OBJ})

# PS2

set(GAMEDB_PS2_OBJ "${CMAKE_CURRENT_BINARY_DIR}/gamedbps2.o")

add_custom_target(gamedbobjs_ps2 ALL
COMMAND ${CMAKE_COMMAND}
-D OUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
-D PYTHON_SCRIPT=${CMAKE_CURRENT_SOURCE_DIR}/get_and_parse_hdldb.py
-D CMAKE_OBJCOPY=${CMAKE_OBJCOPY}
-D SYSTEM=ps2
-P ${CMAKE_CURRENT_SOURCE_DIR}/db_obj_builder.cmake
VERBATIM
BYPRODUCTS ${GAMEDB_PS1_OBJ})

add_dependencies(gamedb gamedbobjs_ps2)

target_link_libraries(gamedb INTERFACE ${GAMEDB_PS2_OBJ})
20 changes: 18 additions & 2 deletions database/db_obj_builder.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,18 @@ string(TIMESTAMP date "%Y%m%d")

if(NOT EXISTS "${OUTPUT_DIR}/gamedb${SYSTEM}_${date}.o")

find_package (Python COMPONENTS Interpreter)
find_package (Python3 COMPONENTS Interpreter)
execute_process (COMMAND "${Python3_EXECUTABLE}" -m venv "${OUTPUT_DIR}/db_builder")

# Here is the trick
## update the environment with VIRTUAL_ENV variable (mimic the activate script)
set (ENV{VIRTUAL_ENV} "${OUTPUT_DIR}/db_builder")
## change the context of the search
set (Python3_FIND_VIRTUALENV FIRST)
## unset Python3_EXECUTABLE because it is also an input variable (see documentation, Artifacts Specification section)
unset (Python3_EXECUTABLE)
## Launch a new search
find_package (Python3 COMPONENTS Interpreter Development)

file(GLOB files "${OUTPUT_DIR}/gamedb${SYSTEM}_*")
foreach(file ${files})
Expand All @@ -14,7 +25,12 @@ set(GAMEDB_${SYSTEM}_BIN "gamedb${SYSTEM}.dat")
set(GAMEDB_${SYSTEM}_OBJ "${OUTPUT_DIR}/gamedb${SYSTEM}_${date}.o")

execute_process(
COMMAND ${Python_EXECUTABLE} ${PYTHON_SCRIPT} ${SYSTEM} ${OUTPUT_DIR}
COMMAND ${Python3_EXECUTABLE} -m pip install requests unidecode
WORKING_DIRECTORY ${OUTPUT_DIR}
OUTPUT_QUIET
)
execute_process(
COMMAND ${Python3_EXECUTABLE} ${PYTHON_SCRIPT} ${SYSTEM} ${OUTPUT_DIR}
WORKING_DIRECTORY ${OUTPUT_DIR}
OUTPUT_QUIET
)
Expand Down
Loading