노부나가의 야망 (GBA)
한패 아카이브 #44 · 버전이 바뀌어도 이 번호로 기록을 이어갑니다.
조회 0
좋아요 0
패치 정보
GBA판 노부나가의 야망 일본판의 비공식 한국어 팬 번역입니다.
최신 배포 정보
v2.3
v2.3 — 지도 상단 상태창 라벨 14개 한글화
배포처에서 확인하기 ↗버전 안내 보기
지도 화면 상단 상태창의 `金 米 兵数 / 石高 治水 商業 / 技術 城防 鉄砲` 가 한글이 되었습니다.
v2.2.2 에서 "못 찾았다"고 적었던 바로 그 라벨들입니다.

| 항목 | 값 |
|---|---|
| 원본 MD5 | `2d1ceffbc8c34e3101ab91ea49f43a44` |
| 패치본 MD5 | `7f4222b3140b0bc5d8084971375bd70c` |
| 크기 | 4,194,304 바이트 (원본과 동일) |
---
## 바꾼 것
**`0x23AD04`, stride `0xE0`, 24×16 스프라이트 14개**
금 · 쌀 · 민심 · 석고 · 치수 · 상업 · 문화 · 기술 · 수비 · 병수 · 철포 · 무장 · 훈련 · 사기
이미지 라벨은 89개 → **103개**가 되었습니다.
---
## 왜 못 찾고 있었나
`0x239264` · `0x23A2E4` 배열에 **같은 글자**(金 · 石高 · 技術 …)로 된 액자형 판이
따로 있어서, 그것이 상태창 라벨이라고 판단했습니다. 대조 기준이 문제였습니다.
| 기준 | 결과 |
|---|---|
| 흰 글자 픽셀의 배치만 비교 | 486/512 일치 → "같다" (잘못된 결론) |
| 팔레트 없이 색 ↔ 인덱스 일대일 대응 | 384칸 중 **147칸 불일치** → 다른 그림 |
첫 기준은 배경이 전부 '흰색 아님'으로 뭉뚱그려져 실제보다 훨씬 후하게 나옵니다.
## 어떻게 찾았나
`analysis/tile_bij.py` — 화면 8×8 조각을 롬에서 찾되 **두 조건만** 봅니다.
```
(a) 모든 자리 i 에서 T[i] == T[대표자리(색_i)] 같은 색 -> 같은 인덱스
(b) 색마다의 대표 인덱스가 서로 전부 다르다 다른 색 -> 다른 인덱스
```
조건이 둘뿐이라 벡터 연산으로 롬 4MB 를 몇 초에 훑습니다.
화면 `(88,16)` 한 칸을 넣으니 롬 전체에서 **`0x23AD24` 단 하나**가 나왔습니다.
거기서 이웃 칸을 같은 방법으로 확인해 배치를 역산했습니다.
- 가로 이웃 간격 `0x20` (타일 1개), 세로 이웃 간격 `0x60` (타일 3개)
- → 한 줄에 타일 3개 = **폭 24px**
- 라벨 간 간격 `0xE0` (그림 6타일 + 여분 1타일)
## 이 판의 만듦새
다른 라벨들과 다릅니다.
| 항목 | 내용 |
|---|---|
| 폭 | 24px 중 왼쪽 2px 투명, 그려지는 곳은 x=2~23 |
| 배경 | 디더 **없이** 줄마다 단색인 세로 그라데이션 `1356 78A9 9A87 6531` |
| 글자 | 흰 획 + **1px 외곽선** |
| 외곽선 색 | 그 줄 배경의 그림자색 — 줄마다 다름 `13BCCDDDDDDCC531` |
배경을 되살릴 때 폭이 22px 뿐이라 획 픽셀이 배경보다 많은 줄이 흔했습니다.
최빈값도, '가장 긴 연속 구간'도 획에 밀렸습니다. 결국 **글자가 거의 닿지 않는
양끝 두 칸만 보고 14장으로 다수결**하는 방식으로 해결했습니다.
(`技術` 처럼 끝까지 닿는 글자가 몇 개 있어도 다수는 배경이라 흔들리지 않습니다)
---
## 검증
```
이미지 라벨 한글화: 103/103개
주입 대조 : OK 7104 / 불일치 0
포인터 이상: 0
>>> 검증 통과
설명 안 되는 변경 바이트(롬 전체): 0
```
롬 전체에서 바뀐 바이트가 하나도 빠짐없이 포인터 갱신…