Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 4384e52

Browse files
committed
Merge branch 'feat/ps2/game_id_plus_history' into develop
2 parents 60483fb + 6bd1e82 commit 4384e52

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+6886
-613
lines changed

CMakeLists.txt

Lines changed: 66 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,145 +1,112 @@
11
cmake_minimum_required(VERSION 3.12)
2-
32
set(PICO_SDK_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ext/pico-sdk)
43
include(pico_sdk_import.cmake)
54

6-
project(pico_examples C CXX ASM)
5+
project(SD2PSX LANGUAGES C CXX ASM)
6+
77
set(CMAKE_C_STANDARD 11)
88
set(CMAKE_CXX_STANDARD 17)
99
# set(PICO_COPY_TO_RAM 1)
1010

1111
pico_sdk_init()
1212

13-
set(LV_CONF_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/lv_conf.h CACHE STRING "" FORCE)
14-
add_subdirectory(ext/lvgl EXCLUDE_FROM_ALL)
13+
add_compile_definitions(PICO_FLASH_SIZE_BYTES=16777216)
14+
15+
# Add all subdirectories for sub-targets
1516

1617
add_subdirectory(database)
18+
add_subdirectory(misc)
1719
add_subdirectory(ps2boot)
1820
add_subdirectory(src/version)
21+
add_subdirectory(src/ps2)
22+
add_subdirectory(src/ps1)
23+
add_subdirectory(ext/)
24+
25+
# SD2PSX Main Lib
1926

2027
add_executable(sd2psx
2128
src/main.c
22-
src/debug.c
23-
src/gui.c
24-
src/input.c
25-
src/ui_menu.c
26-
src/ui_theme_mono.c
27-
src/des.c
28-
src/keystore.c
29-
src/settings.c
30-
src/bigmem.c
31-
src/oled.c
32-
33-
src/ps1/ps1_cardman.c
34-
src/ps1/ps1_dirty.c
35-
src/ps1/ps1_memory_card.c
36-
src/ps1/ps1_empty_card.c
37-
src/ps1/ps1_odeman.c
38-
39-
src/ps2/ps2_memory_card.c
40-
src/ps2/ps2_dirty.c
41-
src/ps2/ps2_cardman.c
42-
src/ps2/ps2_pio_qspi.c
43-
src/ps2/ps2_psram.c
44-
src/ps2/ps2_exploit.c
4529

30+
src/game_names/game_names.c
4631
src/wear_leveling/wear_leveling.c
4732
src/wear_leveling/wear_leveling_rp2040_flash.c
4833

49-
src/arduino_wrapper/sd.cpp
50-
src/arduino_wrapper/SPI.cpp
51-
52-
ext/ESP8266SdFat/src/common/FmtNumber.cpp
53-
ext/ESP8266SdFat/src/common/FsCache.cpp
54-
ext/ESP8266SdFat/src/common/FsDateTime.cpp
55-
ext/ESP8266SdFat/src/common/FsName.cpp
56-
ext/ESP8266SdFat/src/common/FsStructs.cpp
57-
ext/ESP8266SdFat/src/common/FsUtf.cpp
58-
ext/ESP8266SdFat/src/common/upcase.cpp
59-
ext/ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp
60-
ext/ESP8266SdFat/src/ExFatLib/ExFatFile.cpp
61-
ext/ESP8266SdFat/src/ExFatLib/ExFatFilePrint.cpp
62-
ext/ESP8266SdFat/src/ExFatLib/ExFatFileWrite.cpp
63-
ext/ESP8266SdFat/src/ExFatLib/ExFatFormatter.cpp
64-
ext/ESP8266SdFat/src/ExFatLib/ExFatName.cpp
65-
ext/ESP8266SdFat/src/ExFatLib/ExFatPartition.cpp
66-
ext/ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp
67-
ext/ESP8266SdFat/src/FatLib/FatDbg.cpp
68-
ext/ESP8266SdFat/src/FatLib/FatFile.cpp
69-
ext/ESP8266SdFat/src/FatLib/FatFileLFN.cpp
70-
ext/ESP8266SdFat/src/FatLib/FatFilePrint.cpp
71-
ext/ESP8266SdFat/src/FatLib/FatFileSFN.cpp
72-
ext/ESP8266SdFat/src/FatLib/FatFormatter.cpp
73-
ext/ESP8266SdFat/src/FatLib/FatName.cpp
74-
ext/ESP8266SdFat/src/FatLib/FatPartition.cpp
75-
ext/ESP8266SdFat/src/FatLib/FatVolume.cpp
76-
ext/ESP8266SdFat/src/FreeStack.cpp
77-
ext/ESP8266SdFat/src/FsLib/FsFile.cpp
78-
ext/ESP8266SdFat/src/FsLib/FsNew.cpp
79-
ext/ESP8266SdFat/src/FsLib/FsVolume.cpp
80-
ext/ESP8266SdFat/src/iostream/istream.cpp
81-
ext/ESP8266SdFat/src/iostream/ostream.cpp
82-
ext/ESP8266SdFat/src/iostream/StdioStream.cpp
83-
ext/ESP8266SdFat/src/iostream/StreamBaseClass.cpp
84-
ext/ESP8266SdFat/src/MinimumSerial.cpp
85-
ext/ESP8266SdFat/src/SdCard/SdCardInfo.cpp
86-
ext/ESP8266SdFat/src/SdCard/SdSpiCard.cpp
87-
8834
ext/fnv/hash_64a.c
8935
)
9036

91-
add_library(ssd1306 STATIC ext/pico-ssd1306/ssd1306.c)
92-
target_link_libraries(ssd1306 pico_stdlib hardware_i2c)
93-
9437
target_compile_definitions(
9538
sd2psx PUBLIC
9639
PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
97-
PICO_FLASH_SIZE_BYTES=16777216
98-
USE_SPI_ARRAY_TRANSFER=1
9940
)
10041

101-
target_compile_options(
102-
sd2psx PRIVATE
103-
-Wall -Wextra
104-
-fno-jump-tables
105-
)
10642

10743
target_include_directories(sd2psx PUBLIC
108-
src/arduino_wrapper
109-
110-
ext/pico-ssd1306
111-
ext/ESP8266SdFat/src
112-
ext/ESP8266SdFat/extras/attic
11344
ext/fnv
11445
)
11546

116-
pico_generate_pio_header(sd2psx ${CMAKE_CURRENT_LIST_DIR}/src/ps1/ps1_mc_spi.pio)
117-
pico_generate_pio_header(sd2psx ${CMAKE_CURRENT_LIST_DIR}/src/ps2/ps2_mc_spi.pio)
118-
pico_generate_pio_header(sd2psx ${CMAKE_CURRENT_LIST_DIR}/src/ps2/ps2_qspi.pio)
119-
12047
target_link_libraries(sd2psx
121-
ssd1306
122-
pico_stdlib
123-
pico_multicore
124-
hardware_pio
125-
hardware_spi
126-
hardware_i2c
127-
hardware_flash
128-
hardware_dma
129-
lvgl::lvgl
130-
gamedb
131-
ps2boot
132-
sd2psx_version
48+
PRIVATE
49+
pico_stdlib
50+
pico_multicore
51+
hardware_pio
52+
hardware_i2c
53+
hardware_flash
54+
gamedb
55+
ps2boot
56+
ps2_history_icons
57+
sd2psx_version
58+
sd2psx_common
59+
ps1_card
60+
ps2_card
61+
sd_fat
13362
)
13463

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

67+
# Common Lib
68+
69+
add_library(sd2psx_common STATIC
70+
${CMAKE_CURRENT_SOURCE_DIR}/src/debug.c
71+
${CMAKE_CURRENT_SOURCE_DIR}/src/gui.c
72+
${CMAKE_CURRENT_SOURCE_DIR}/src/input.c
73+
${CMAKE_CURRENT_SOURCE_DIR}/src/ui_menu.c
74+
${CMAKE_CURRENT_SOURCE_DIR}/src/ui_theme_mono.c
75+
${CMAKE_CURRENT_SOURCE_DIR}/src/des.c
76+
${CMAKE_CURRENT_SOURCE_DIR}/src/keystore.c
77+
${CMAKE_CURRENT_SOURCE_DIR}/src/settings.c
78+
${CMAKE_CURRENT_SOURCE_DIR}/src/bigmem.c
79+
${CMAKE_CURRENT_SOURCE_DIR}/src/oled.c)
80+
81+
target_include_directories(sd2psx_common
82+
PUBLIC
83+
${CMAKE_CURRENT_SOURCE_DIR}/src
84+
PRIVATE )
85+
86+
target_link_libraries(sd2psx_common
87+
PUBLIC
88+
lvgl::lvgl
89+
PRIVATE
90+
pico_platform_headers
91+
ssd1306
92+
hardware_flash
93+
pico_multicore)
94+
95+
target_compile_options(sd2psx_common
96+
PUBLIC
97+
-Wall -Wextra
98+
-fno-jump-tables)
99+
100+
target_compile_definitions(sd2psx_common PUBLIC
101+
USE_SPI_ARRAY_TRANSFER=1)
102+
103+
set_target_properties(sd2psx_common PROPERTIES PICO_TARGET_LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/memmap_custom.ld)
104+
138105
pico_add_extra_outputs(sd2psx)
139106

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

142109
if(DEBUG_USB_UART)
143-
add_definitions(-DDEBUG_USB_UART)
144-
pico_enable_stdio_usb(sd2psx ENABLED)
110+
target_compile_definitions(sd2psx_common PUBLIC -DDEBUG_USB_UART)
111+
pico_enable_stdio_usb(sd2psx ON)
145112
endif()

database/CMakeLists.txt

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,35 @@
1-
find_package (Python COMPONENTS Interpreter)
1+
# PS1
2+
set(GAMEDB_PS1_OBJ "${CMAKE_CURRENT_BINARY_DIR}/gamedbps1.o")
23

3-
string(TIMESTAMP date "%Y%m%d")
4+
add_custom_target(gamedbobjs_ps1 ALL
5+
COMMAND ${CMAKE_COMMAND}
6+
-D OUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
7+
-D PYTHON_SCRIPT=${CMAKE_CURRENT_SOURCE_DIR}/parse_db.py
8+
-D CMAKE_OBJCOPY=${CMAKE_OBJCOPY}
9+
-D SYSTEM=ps1
10+
-P ${CMAKE_CURRENT_SOURCE_DIR}/db_obj_builder.cmake
11+
VERBATIM
12+
BYPRODUCTS ${GAMEDB_PS1_OBJ})
413

5-
set(GAMEDB_PS1_BIN "gamedbps1.dat")
6-
set(GAMEDB_PS1_OBJ "${CMAKE_CURRENT_BINARY_DIR}/gamedbps1_${date}.o")
14+
add_library(gamedb INTERFACE)
15+
add_dependencies(gamedb gamedbobjs_ps1)
716

8-
add_custom_command(OUTPUT "${GAMEDB_PS1_OBJ}"
9-
COMMAND ${Python_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/parse_db.py ps1 ${CMAKE_CURRENT_BINARY_DIR}
10-
COMMAND ${CMAKE_OBJCOPY} ARGS --input-target=binary --output-target=elf32-littlearm --binary-architecture arm --rename-section .data=.rodata ${GAMEDB_PS1_BIN} ${GAMEDB_PS1_OBJ}
11-
COMMAND ${CMAKE_COMMAND} ARGS -E remove_directory ps1
12-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
13-
COMMENT "Generating game db binary for ps1")
17+
target_link_libraries(gamedb INTERFACE ${GAMEDB_PS1_OBJ})
1418

15-
add_custom_target(gamedbobjs DEPENDS "${GAMEDB_PS1_OBJ}")
19+
# PS2
1620

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

18-
add_library(gamedb INTERFACE)
19-
add_dependencies(gamedb gamedbobjs)
23+
add_custom_target(gamedbobjs_ps2 ALL
24+
COMMAND ${CMAKE_COMMAND}
25+
-D OUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
26+
-D PYTHON_SCRIPT=${CMAKE_CURRENT_SOURCE_DIR}/get_and_parse_hdldb.py
27+
-D CMAKE_OBJCOPY=${CMAKE_OBJCOPY}
28+
-D SYSTEM=ps2
29+
-P ${CMAKE_CURRENT_SOURCE_DIR}/db_obj_builder.cmake
30+
VERBATIM
31+
BYPRODUCTS ${GAMEDB_PS1_OBJ})
2032

21-
target_link_libraries(gamedb INTERFACE ${GAMEDB_PS1_OBJ})
33+
add_dependencies(gamedb gamedbobjs_ps2)
34+
35+
target_link_libraries(gamedb INTERFACE ${GAMEDB_PS2_OBJ})

database/db_obj_builder.cmake

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,35 @@
11
string(TIMESTAMP date "%Y%m%d")
22

3-
if(NOT EXISTS "${OUTPUT_DIR}/gamedb${SYSTEM}_${date}.o")
3+
set(GAMEDB_${SYSTEM}_BIN "gamedb${SYSTEM}.dat")
4+
set(GAMEDB_${SYSTEM}_OBJ "${OUTPUT_DIR}/gamedb${SYSTEM}_${date}.o")
5+
6+
if(NOT EXISTS "${GAMEDB_${SYSTEM}_OBJ}")
7+
8+
find_package (Python3 COMPONENTS Interpreter)
9+
execute_process (COMMAND "${Python3_EXECUTABLE}" -m venv "${OUTPUT_DIR}/db_builder")
410

5-
find_package (Python COMPONENTS Interpreter)
11+
# Here is the trick
12+
## update the environment with VIRTUAL_ENV variable (mimic the activate script)
13+
set (ENV{VIRTUAL_ENV} "${OUTPUT_DIR}/db_builder")
14+
## change the context of the search
15+
set (Python3_FIND_VIRTUALENV FIRST)
16+
## unset Python3_EXECUTABLE because it is also an input variable (see documentation, Artifacts Specification section)
17+
unset (Python3_EXECUTABLE)
18+
## Launch a new search
19+
find_package (Python3 COMPONENTS Interpreter Development)
620

721
file(GLOB files "${OUTPUT_DIR}/gamedb${SYSTEM}_*")
822
foreach(file ${files})
923
file(REMOVE "${file}")
1024
endforeach()
1125

12-
13-
set(GAMEDB_${SYSTEM}_BIN "gamedb${SYSTEM}.dat")
14-
set(GAMEDB_${SYSTEM}_OBJ "${OUTPUT_DIR}/gamedb${SYSTEM}_${date}.o")
15-
1626
execute_process(
17-
COMMAND ${Python_EXECUTABLE} ${PYTHON_SCRIPT} ${SYSTEM} ${OUTPUT_DIR}
27+
COMMAND ${Python3_EXECUTABLE} -m pip install requests unidecode
28+
WORKING_DIRECTORY ${OUTPUT_DIR}
29+
OUTPUT_QUIET
30+
)
31+
execute_process(
32+
COMMAND ${Python3_EXECUTABLE} ${PYTHON_SCRIPT} ${SYSTEM} ${OUTPUT_DIR}
1833
WORKING_DIRECTORY ${OUTPUT_DIR}
1934
OUTPUT_QUIET
2035
)
@@ -24,7 +39,8 @@ execute_process(
2439
OUTPUT_QUIET
2540
)
2641

27-
file(CREATE_LINK ${GAMEDB_${SYSTEM}_OBJ} "${OUTPUT_DIR}/gamedb${SYSTEM}.o" SYMBOLIC)
2842
file(REMOVE_RECURSE "${OUTPUT_DIR}/${SYSTEM}")
2943

30-
endif()
44+
endif()
45+
46+
file(CREATE_LINK ${GAMEDB_${SYSTEM}_OBJ} "${OUTPUT_DIR}/gamedb${SYSTEM}.o" SYMBOLIC)

0 commit comments

Comments
 (0)