피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
30년전 RPG (포가튼사가) 소스 포팅 하기
Ghidra 기반 937개 함수 100% 복원 및 Lua 포팅을 통한 멀티플랫폼 재현
AI 요약
Context
1997년 DOS 기반 PE32 바이너리만 남은 레거시 게임의 멀티플랫폼 이식 필요성 대두. 소스코드 부재로 인한 동작 불확실성을 제거하기 위해 스펙 재해석 대신 바이너리 수준의 함수 복원 방식 채택.
Technical Solution
- Ghidra 12를 통한 51,799줄의 Pseudocode C 추출 및 937개 원본 함수 100% 디컴파일 수행
- LZSS 변형 및 RLE 기반의 48종 데이터 포맷 크래킹을 통한 에셋 3,760개 복원
- SCP 바이트코드 VM의 128개 Opcode 분석을 통해 원본 대화 시스템의 1:1 동작 구현
- 세이브 파일의 Actor Struct Offset 직접 파싱 및 검증을 통한 데이터 매핑 오류 정정
- LÖVE 2D 프레임워크 기반의 Lua 포팅과 Emscripten을 이용한 WebAssembly 빌드 환경 구축
- SharedArrayBuffer와 IndexedDB를 활용한 브라우저 기반 상태 영속성 및 동기화 처리
실천 포인트
- 레거시 복원 시 단순 재구현보다 디컴파일을 통한 함수 단위 복원 우선 검토 - 바이너리 구조 분석 시 세이브 데이터 등 실제 런타임 데이터의 Offset 검증 프로세스 필수 적용 - LLM 활용 시 '분석/정정(GPT)'과 '포팅/검증(Claude)'의 역할을 분리하여 신뢰도 높은 변환 사이클 구축