피드로 돌아가기
Porting Test Drive II from SNES to PC, Part 46: Demoting game_11.mss from gameplay seed to front-end menu state
Dev.toDev.to
Backend

Test Drive II SNES to PC 포팅 프로젝트에서 game_11.mss를 게임플레이 시드에서 프론트엔드 메뉴 상태로 재분류하여 상태 검증 정확도 향상

Porting Test Drive II from SNES to PC, Part 46: Demoting game_11.mss from gameplay seed to front-end menu state

Nivando Soares2026년 3월 27일2advanced

Context

Lane 3 체크포인트 감사에서 game_11.mss 스윕을 게임플레이 시드로 잘못 분류했다. 현재 game_11.mss는 프론트엔드 메뉴 패밀리에서 시작하지만, 일부 프레임이 게임플레이처럼 보이는 콕핏 화면을 지나가기 때문에 시각적 판단만으로는 상태를 올바르게 식별할 수 없었다.

Technical Solution

  • 상태 검증 도구 강화: tools/run_track1_seed_sweep.py에 seed-surface 감사 기능 추가로 스윕 결과 분류 전 단락 동작 검사 실행
  • 상태 확인 기준 명시화: active_main = 02:9016 $1C6A = 1 $1C70 = 0 $1C76 = 1 $0202 = 0xFFFF 패턴을 프론트엔드 메뉴 상태로 명확히 정의
  • 메뉴 상태 추적: 프레임 0부터 7까지 메모리 주소 $1C6A, $1C70, $1C76, $0202의 값으로 상태 가족 일관성 검증
  • 스윕 경로 분석: a_hold와 b_hold가 프레임 219에서 첫 분기되지만, 해당 분기가 게임플레이 상태로 뒷받침되지 않음을 명시
  • Lane 3 게이트 강화: 게임플레이 시드가 아닌 스윕 결과 승격 중단 및 유효한 게임플레이 시드 또는 결정론적 입력 프로그램 확보 후 재실행

Key Takeaway

아티팩트나 상태 머신의 상태 전이를 검증할 때 시각적 표현만으로는 부족하며, 메모리 상태 값과 선택자 패밀리의 일치를 동시에 확인하는 감사 도구를 구현해야 잘못된 가정 위에 추가 분석이 쌓이는 것을 방지할 수 있다.


에뮬레이션 또는 레트로 게임 포팅 프로젝트에서 게임플레이 상태를 검증할 때, 화면 표현 변화만 추적하지 말고 메모리 주소의 특정 값 패턴을 상태 가족으로 정의한 후 automated seed-surface audit을 구현하면 잘못된 상태 분류로 인한 재작업을 줄일 수 있다.

원문 읽기