Skip to content

Commit 06b0cf9

Browse files
committed
Attempt to fix Nokia N-Gage CI.
1 parent 1dba965 commit 06b0cf9

File tree

5 files changed

+89
-185
lines changed

5 files changed

+89
-185
lines changed

.github/workflows/nokia-ngage.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
shell: pwsh
4444

4545
- name: Fetch SDK
46-
run: cmake -G "Ninja" -S ${{ env.NGAGESDK }}/setup -B ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage
46+
run: cmake -G "Ninja" -P ${{ env.NGAGESDK }}/setup/setup.cmake -B ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage
4747
shell: pwsh
4848

4949
- name: Remove existing open8 directory
@@ -56,12 +56,12 @@ jobs:
5656

5757
- name: Build open8
5858
run: |
59-
cmake -DBUILD_FOR_NOKIA_NGAGE=ON -G "Ninja" -S ${{ env.NGAGESDK }}/projects/open8 -B ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage -DCMAKE_TOOLCHAIN_FILE=${{ env.NGAGESDK }}/cmake/ngage-toolchain.cmake
59+
cmake -DCMAKE_PREFIX_PATH=${env.NGAGESDK}/sdk/extras/lib/cmake -G "Ninja" -S ${{ env.NGAGESDK }}/projects/open8 -B ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage -DCMAKE_TOOLCHAIN_FILE=${{ env.NGAGESDK }}/cmake/ngage-toolchain.cmake
6060
cmake --build ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage
6161
shell: pwsh
6262

63-
- name: Archive open8.sis
64-
uses: actions/upload-artifact@v4
65-
with:
66-
name: open8.sis
67-
path: ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage/open8.sis
63+
#- name: Archive open8.sis
64+
# uses: actions/upload-artifact@v4
65+
# with:
66+
# name: open8.sis
67+
# path: ${{ env.NGAGESDK }}/projects/open8/out/build/N-Gage/open8.sis

CMakeLists.txt

Lines changed: 80 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -4,177 +4,97 @@
44

55
cmake_minimum_required(VERSION 3.10)
66

7-
option(BUILD_FOR_NOKIA_NGAGE "Build for Nokia N-Gage" OFF)
8-
option (BUILD_CI_WORKFLOW "Build CI workflow" OFF)
9-
107
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
11-
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/project_config.cmake)
12-
13-
if (BUILD_FOR_NOKIA_NGAGE)
14-
15-
project(game C CXX)
16-
17-
add_compile_definitions(__NGAGE__)
18-
19-
set(UID1 0x1000007a) # KExecutableImageUidValue, e32uid.h
20-
set(UID2 0x100039ce) # KAppUidValue16, apadef.h
21-
22-
set(game_static_libs
23-
${EPOC_EXTRAS}/lib/armi/urel/SDL3.lib
24-
${EPOC_EXTRAS}/lib/armi/urel/SDL3_mixer.lib)
25-
26-
set(game_libs
27-
${CMAKE_CURRENT_SOURCE_DIR}/lib/armi/urel/z8lua.lib
28-
${EPOC_LIB}/NRenderer.lib
29-
${EPOC_LIB}/3dtypes.a
30-
${EPOC_LIB}/cone.lib
31-
${EPOC_PLATFORM}/gcc/lib/gcc-lib/arm-epoc-pe/2.9-psion-98r2/libgcc.a
32-
${EPOC_PLATFORM}/ngagesdk/lib/gcc/arm-epoc-pe/4.6.4/libgcc_ngage.a
33-
${EPOC_LIB}/mediaclientaudiostream.lib
34-
${EPOC_LIB}/charconv.lib
35-
${EPOC_LIB}/bitgdi.lib
36-
${EPOC_LIB}/euser.lib
37-
${EPOC_LIB}/estlib.lib
38-
${EPOC_LIB}/ws32.lib
39-
${EPOC_LIB}/hal.lib
40-
${EPOC_LIB}/fbscli.lib
41-
${EPOC_LIB}/efsrv.lib
42-
${EPOC_LIB}/scdv.lib
43-
${EPOC_LIB}/gdi.lib)
44-
45-
set(open8_libs
46-
${EPOC_LIB}/euser.lib
47-
${EPOC_LIB}/apparc.lib
48-
${EPOC_LIB}/cone.lib
49-
${EPOC_LIB}/eikcore.lib
50-
${EPOC_LIB}/avkon.lib)
51-
52-
set(open8_sources
53-
"${CMAKE_CURRENT_SOURCE_DIR}/src/ngage/ngage.cpp"
54-
"${CMAKE_CURRENT_SOURCE_DIR}/src/ngage/ngage_application.cpp"
55-
"${CMAKE_CURRENT_SOURCE_DIR}/src/ngage/ngage_appui.cpp"
56-
"${CMAKE_CURRENT_SOURCE_DIR}/src/ngage/ngage_appview.cpp"
57-
"${CMAKE_CURRENT_SOURCE_DIR}/src/ngage/ngage_document.cpp")
58-
59-
add_library(game STATIC ${project_sources})
60-
add_library(open8 STATIC ${open8_sources})
61-
build_exe_static(game exe ${UID1} ${UID2} ${UID3} "${game_static_libs}" "${game_libs}")
62-
build_dll(open8 app ${UID1} ${UID2} ${APP_UID} "${open8_libs}")
63-
64-
if(NOT BUILD_CI_WORKFLOW)
65-
build_aif(${CMAKE_CURRENT_SOURCE_DIR}/res open8 ${APP_UID})
66-
build_resource(${CMAKE_CURRENT_SOURCE_DIR}/res open8 "")
67-
build_sis(${CMAKE_CURRENT_SOURCE_DIR}/res open8)
68-
69-
add_dependencies(
70-
open8.sis
71-
game.exe
72-
open8.app
73-
open8.aif
74-
open8.rsc)
75-
endif()
76-
77-
add_dependencies(
78-
game.exe
79-
game)
80-
81-
target_compile_definitions(
82-
game
83-
PUBLIC
84-
__EXE__
85-
UID1=${UID1}
86-
UID2=${UID2}
87-
UID3=${UID3})
88-
89-
target_include_directories(
90-
game
91-
PUBLIC
92-
${SRC_DIR})
938

94-
add_dependencies(
95-
open8.app
96-
open8)
97-
98-
target_compile_definitions(
99-
open8
100-
PUBLIC
101-
__DLL__
102-
UID1=${UID1}
103-
UID2=${UID2}
104-
UID3=${APP_UID})
105-
106-
target_include_directories(
107-
open8
108-
PUBLIC
109-
${SRC_DIR})
9+
project(open8 C)
11010

11+
if (NGAGESDK)
12+
find_package(SDL3 REQUIRED)
13+
find_package(SDL3_mixer REQUIRED)
11114
else()
112-
113-
project(open8 C)
114-
11515
set(EXPORT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/export)
11616
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXPORT_DIR})
117-
11817
include(get_SDL3)
11918
get_SDL3("3.2.12")
19+
endif()
12020

121-
set(z8lua_sources
122-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lapi.c
123-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lauxlib.c
124-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lbaselib.c
125-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lcode.c
126-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lcorolib.c
127-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lctype.c
128-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldblib.c
129-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldebug.c
130-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldo.c
131-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldump.c
132-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lfunc.c
133-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lgc.c
134-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/linit.c
135-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/llex.c
136-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lmem.c
137-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lobject.c
138-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lopcodes.c
139-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lparser.c
140-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lpico8lib.c
141-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lstate.c
142-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lstring.c
143-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lstrlib.c
144-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ltable.c
145-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ltablib.c
146-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ltm.c
147-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lundump.c
148-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lvm.c
149-
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lzio.c)
150-
151-
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
152-
add_executable(open8 ${project_sources} ${z8lua_sources})
153-
else()
154-
add_executable(open8 WIN32 ${project_sources} ${z8lua_sources})
155-
endif()
156-
157-
target_link_libraries(open8 PRIVATE ${SDL3_LIBRARIES})
21+
set(open8_sources
22+
${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
23+
${CMAKE_CURRENT_SOURCE_DIR}/src/api.c
24+
${CMAKE_CURRENT_SOURCE_DIR}/src/app.c
25+
${CMAKE_CURRENT_SOURCE_DIR}/src/auxiliary.c
26+
${CMAKE_CURRENT_SOURCE_DIR}/src/core.c
27+
${CMAKE_CURRENT_SOURCE_DIR}/src/memory.c
28+
${CMAKE_CURRENT_SOURCE_DIR}/src/p8scii.c
29+
${CMAKE_CURRENT_SOURCE_DIR}/src/lexaloffle/p8_compress.c
30+
${CMAKE_CURRENT_SOURCE_DIR}/src/lexaloffle/pxa_compress_snippets.c)
31+
32+
set(z8lua_sources
33+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lapi.c
34+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lauxlib.c
35+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lbaselib.c
36+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lcode.c
37+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lcorolib.c
38+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lctype.c
39+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldblib.c
40+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldebug.c
41+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldo.c
42+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ldump.c
43+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lfunc.c
44+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lgc.c
45+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/linit.c
46+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/llex.c
47+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lmem.c
48+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lobject.c
49+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lopcodes.c
50+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lparser.c
51+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lpico8lib.c
52+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lstate.c
53+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lstring.c
54+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lstrlib.c
55+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ltable.c
56+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ltablib.c
57+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/ltm.c
58+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lundump.c
59+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lvm.c
60+
${CMAKE_CURRENT_SOURCE_DIR}/src/z8lua/lzio.c)
61+
62+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
63+
add_executable(open8 ${open8_sources} ${z8lua_sources})
64+
else()
65+
add_executable(open8 WIN32 ${open8_sources} ${z8lua_sources})
66+
endif()
15867

159-
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
68+
if (NGAGESDK)
69+
target_link_libraries(open8 PRIVATE SDL3_mixer::SDL3_mixer)
70+
target_link_libraries(open8 PRIVATE SDL3::SDL3)
16071

161-
include_directories(
162-
"${CMAKE_CURRENT_SOURCE_DIR}/src"
163-
"${sdl3_SOURCE_DIR}/include")
72+
set_property(TARGET open8 PROPERTY C_STANDARD 99)
16473

165-
if (NINTENDO_3DS)
166-
set(ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/romfs")
167-
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/export/carts DESTINATION ${ROMFS_DIR})
168-
set(SMDH_FILE "${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME}.smdh")
169-
ctr_generate_smdh("${SMDH_FILE}"
170-
NAME "open8"
171-
DESCRIPTION "A portable PICO-8 emulator"
172-
AUTHOR "Michael Fitzmayer"
173-
ICON "${CMAKE_CURRENT_SOURCE_DIR}/icon.png")
174-
ctr_create_3dsx(
175-
${APP_NAME}
176-
ROMFS "${ROMFS_DIR}"
177-
SMDH "${SMDH_FILE}")
178-
endif()
74+
target_link_options(open8 PRIVATE "SHELL:-s UID1=0x1000007a") # KExecutableImageUidValue, e32uid.h
75+
target_link_options(open8 PRIVATE "SHELL:-s UID2=0x100039ce") # KAppUidValue16, apadef.h
76+
target_link_options(open8 PRIVATE "SHELL:-s UID3=0x1000c37e") # open8.exe UID
77+
else()
78+
target_link_libraries(open8 PRIVATE ${SDL3_LIBRARIES})
79+
endif()
17980

81+
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
82+
83+
include_directories(
84+
"${CMAKE_CURRENT_SOURCE_DIR}/src"
85+
"${sdl3_SOURCE_DIR}/include")
86+
87+
if (NINTENDO_3DS)
88+
set(ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/romfs")
89+
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/export/carts DESTINATION ${ROMFS_DIR})
90+
set(SMDH_FILE "${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME}.smdh")
91+
ctr_generate_smdh("${SMDH_FILE}"
92+
NAME "open8"
93+
DESCRIPTION "A portable PICO-8 emulator"
94+
AUTHOR "Michael Fitzmayer"
95+
ICON "${CMAKE_CURRENT_SOURCE_DIR}/icon.png")
96+
ctr_create_3dsx(
97+
${APP_NAME}
98+
ROMFS "${ROMFS_DIR}"
99+
SMDH "${SMDH_FILE}")
180100
endif()

CMakeSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"inheritEnvironments": [ "msvc_x64_x64" ],
88
"buildRoot": "${projectDir}\\out\\build\\${name}",
99
"installRoot": "${projectDir}\\out\\install\\${name}",
10-
"cmakeCommandArgs": "-DBUILD_FOR_NOKIA_NGAGE=ON",
10+
"cmakeCommandArgs": "-DCMAKE_PREFIX_PATH=${env.NGAGESDK}/sdk/extras/lib/cmake",
1111
"buildCommandArgs": "",
1212
"ctestCommandArgs": "",
1313
"variables": [

cmake/project_config.cmake

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/api.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1414,6 +1414,6 @@ void update_time(void)
14141414

14151415
Uint64 current_time = SDL_GetTicks();
14161416
Uint64 elapsed_time_ticks = current_time - start_time;
1417-
fix32_t elapsed_time = fix32_from_int(elapsed_time_ticks) / 1000;
1417+
fix32_t elapsed_time = fix32_from_int((Sint32)elapsed_time_ticks) / 1000;
14181418
seconds_since_start = elapsed_time;
14191419
}

0 commit comments

Comments
 (0)