Skip to content

v0.0.163

Choose a tag to compare

@github-actions github-actions released this 24 Aug 18:08
· 112 commits to main since this release

rePIU v0.0.163

이전 릴리스 v0.0.162 이후의 변경입니다. Linux 이식 2단계로, 런처가 Linux에서 32비트
바이너리로 실행됩니다.
실행 엔진은 여전히 Windows 전용이라 게임은 실행되지 않습니다.

Linux 런처

  • repiu_launcher가 i386 ELF로 빌드되어 WSLg에서 동작합니다. 롬셋 목록과 옵션 화면은
    Windows와 같은 코드입니다.
  • 실제 roms/를 읽어 22개 중 실행 가능한 것을 가려냅니다.
  • 롬셋을 고르면 "실행 엔진이 아직 Linux에 없다"고 알리고 종료합니다. 없는 것을
    실행하는 척하다 "파일 없음"으로 실패하게 두지 않습니다.
sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install -y libx11-dev:i386 libxext-dev:i386 libxrandr-dev:i386 \
  libxi-dev:i386 libxcursor-dev:i386 libxfixes-dev:i386 libxkbcommon-dev:i386 \
  libgl1-mesa-dev:i386 libasound2-dev:i386
scripts/build_linux_i386.sh --config Debug --target repiu_launcher
build/linux_i386/repiu_launcher

데스크톱 패키지 없이 코어와 probe만 빌드하려면 --headless를 주십시오.

이번 단계에서 확인된 것

32비트 SDL3 데스크톱 스택이 섭니다 — X11 비디오, OpenGL 렌더, ALSA 오디오. 이는
런처만이 아니라 앞으로 게임 창과 사운드에 필요한 구성 전부입니다. 실행 엔진도 SDL을
쓰기 때문에(게임 창과 오디오 세 경로), 이 확인이 없었다면 포팅 전체가 막힐 수 있었습니다.

가는 길에 두 가지를 해결했습니다.

  • SDL configure가 XSCRNSAVER·XTEST 확장에서 멈췄습니다. 화면보호기 억제와 입력
    시뮬레이션용이고 이 프로젝트는 쓰지 않으므로, 패키지를 더 요구하는 대신 껐습니다.
    켜 둔 확장 하나가 곧 운영자가 찾아야 할 32비트 패키지 하나입니다.
  • OpenGL 링크가 필요했습니다. find_package(OpenGL)의 imported target 대신 평범한
    GL
    을 씁니다 — 전자는 64비트 libGL.so를 잡아 -m32 링크를 아키텍처 불일치로
    깨뜨릴 수 있습니다.

알려진 제한

  • Linux에서 게임은 실행되지 않습니다. 실행 엔진 이식은 다음 단계입니다.
  • Linux 런처는 Windows의 복귀 루프와 자식 프로세스 구조를 가져오지 않았습니다. 그 구조는
    GPU 드라이버가 게스트 주소 공간을 선점하는 Win32 고유 사정에서 나온 것이라, Linux에도
    같은 제약이 있는지는 실행 엔진이 생긴 뒤에 판단합니다.
  • Wayland 백엔드는 잡히지 않았습니다. WSLg가 X 서버를 함께 제공하므로 문제되지 않습니다.

rePIU v0.0.163

Changes since v0.0.162. Stage 2 of the Linux port: the launcher runs on Linux as a 32-bit
binary.
The execution engine is still Windows-only, so no game runs.

The Linux launcher

repiu_launcher builds as an i386 ELF and runs under WSLg, sharing the ROM set list and options
screen with Windows as the same code. It reads the real roms/ directory and separates the sets
that can run from the ones that cannot. Choosing one reports that the execution engine does not
exist on Linux yet and exits, rather than pretending to start something and failing later with a
missing file. --headless still builds the core and its probes without the desktop packages.

What this stage established

The 32-bit SDL3 desktop stack stands up: X11 video, OpenGL rendering, and ALSA audio. That covers
not only the launcher but everything the game window and sound will need, and since the execution
engine uses SDL for exactly those, the whole port depended on it.

Two obstacles were resolved along the way. SDL's configure stopped on the XSCRNSAVER and XTEST
extensions, which inhibit the screen saver and simulate input and which this project never uses;
they were switched off rather than installed, because every extension left on is one more 32-bit
package to find. And OpenGL had to be linked by plain name rather than through
find_package(OpenGL)'s imported target, which can bind the 64-bit libGL.so and fail an -m32
link on architecture.

Known limitations

No game runs on Linux; the execution engine port is the next stage. The Linux launcher does not
copy the Windows return loop or child process, both of which exist because a GPU driver claims the
guest's low address space there — whether the same applies on Linux can only be judged once an
engine exists. The Wayland backend was not detected, which does not matter because WSLg also
provides an X server.