Skip to content

Commit c2d03e1

Browse files
committed
Docs and tooling update: integrity check script, HD notes, capture shortcut
- tools/kontrol.sh: one-command integrity check (hidden, silent Quick Race on both builds, checks the end-of-run counters) - README/PROJECT/GRAFIK_ARASTIRMA: current status, power numbers, career saves, HD findings (MSAA auto, G-buffer pass, motion blur), Cmd+Shift+D - run.sh: documents the current HD and sound settings - metal.m: skip render-target textures in the mip-level report
1 parent d591d92 commit c2d03e1

7 files changed

Lines changed: 262 additions & 26 deletions

File tree

‎GRAFIK_ARASTIRMA.md‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,25 @@ vardı).
651651
* Ayar değişkenleri: `g_RainEnable` = `0x870D10` (yalnızca seçenek),
652652
tablo `0x870ccc…0x870d24`.
653653

654+
## 12. Güncel durum ve GPU dökümü (2026-10-21)
655+
656+
Ayrıntı ve ölçümler `PROJECT.md` "2026-10-20 – 10-24" bölümünde; burada özet.
657+
658+
* **MSAA artık çözünürlüğe göre:** 1440 satır ve üstü 2x, altı 4x (`HD_MSAA`
659+
ile zorlanır). Yerel Retina çözünürlüğünde 2x.
660+
* **Işın izleme sabit deposu mekânsal gruplarda**, anlık yapı refit'inde
661+
konum denetimi (aynı modelin kopyaları yer değiştirince baştan kurulum).
662+
* **Hareket bulanıklığı:** hızlı sürüşte oyunun sahne arası ekran kopyası
663+
artık sahne sonu sayılmıyor; arabalar MSAA'lı ve yansımalı (`HD_MBFIX`).
664+
* **Ayrı G-tamponu geçişi:** sahne MSAA geçişi G'siz, G tek örnekli ayrı
665+
geçişte (`HD_GSEP`); GPU işi -%5.5.
666+
* **Kapasite dökümü** (Quick Race, en yüksek saatte 8.40 ms/kare, 120 fps sınırı
667+
8.33): MSAA ~3.0 ms (G'siz bedeli 0.9; bunun ~1.7'si hareket bulanıklığı
668+
bölünmesi), ışın izleme ~2.7 (çekirdek 2.0), oyunun kendi tam çözünürlük son
669+
işlemi ~2.3. Normal sürüm aynı sahnede 3.0 ms. HD'nin ısısı (86 °C,
670+
~18 W) bu özelliklerin doğal bedeli; görüntüden verecek seçenekler (son işlem
671+
kenar yumuşatma, ışın mesafe sınırı) kullanıcı kararıyla uygulanmadı.
672+
654673
## Kaynaklar
655674

656675
* AeroWidescreen/NFSHDReflections: https://github.com/AeroWidescreen/NFSHDReflections (`SOURCE/NFSU2/dllmain.cpp`, `assembly.h`)

‎PROJECT.md‎

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,6 +1602,7 @@ Betik powermetrics'i (CPU/GPU watt, termal basınç; parola bir kez) ve oyunu
16021602
| `thread.csv` | saniyede bir thread başına kullanıcı/sistem süresi |
16031603
| `ornek.bin` | 1 ms'de bir konuk, 4 ms'de bir ana thread: PC + çerçeve zinciri (`thread_suspend` → durum → `resume`; askıdayken kilit/malloc yok) |
16041604
| `ekran/` | 2 sn'de bir ~480 px JPEG (GPU kopyası, arka planda yazılır) |
1605+
| `sicaklik.csv` | saniyede bir CPU/GPU sıcaklığı, iki fan devri, SMC sistem gücü (`tools/smcoku.c`, sudo gerekmez; `oturum.sh` derler) |
16051606

16061607
Ek yük (120 fps yarış, `ps -M`): konuk thread +%1.6, süreç +%5 (çoğu
16071608
örnekleyicinin kendisi); fps, en uzun kare ve sapma değişmiyor.
@@ -1837,3 +1838,116 @@ Yeni anahtarlar:
18371838
| `FBZINCIR=0/2` | son işlem zinciri birleştirmesini kapat / birebirlik doğrulaması |
18381839
| `FBZCTRL=1/2` | (`FBZINCIR=2` ile) yardımcıyı normal boru hattıyla çalıştır / kendisiyle karşılaştır |
18391840
| `SKIPPS=…` + `ABTEST=SKIPPS` | o ps'lerin bedelini koşu içinde ölç (yalnız KAPALI dilimlerde atlar) |
1841+
1842+
1843+
## 2026-10-20 – 10-24: ısınma, ses perdesi, kariyer kaydı
1844+
1845+
### Kapasite ölçümü: GPU'nun gerçek payı
1846+
1847+
Oturumlarda GPU "%98 dolu" görünüyordu, ama bu sınırlı (120 fps) koşuda DVFS
1848+
saatini de içeren bir doluluk. Deterministik ölçüm için yeni üç anahtar:
1849+
`VCLOCK=8333` (oyun saati kare başına sabit 8.333 ms), `NODRAW=1` (ekrana sunmaz,
1850+
vsync beklemez), `LIMFREE=<kare>` (o kareden sonra oyunun 120 fps sınırlayıcısı
1851+
kapalı; menüde kullanmayın). GPU en yüksek saatte %100 çalışır, kare başına
1852+
meşgul süre tekrarda ±%0.2. `PENCERE` satırı IOReport'tan GPU doluluğunu ve
1853+
"ms/kare @1296 MHz" değerini yazar; `PASSPROF_CSV=<yol>` kare başına geçiş
1854+
süreleri. Özellik bedeli aynı koşu içinde `ABTEST=<AD>,32,4` ile (komşu dilim
1855+
çiftleri). Tuzak: Quick Race kapasite koşularının ~1/3'ünde araba yavaş kalıyor
1856+
(`sahne arasi kopya` sayısı ~1700 yerine ~5500 olmalı) — o koşular geçersiz.
1857+
1858+
### HD: neden hep sıcak (86 °C)
1859+
1860+
Sıcaklık ve fan artık ölçülüyor (`sicaklik.csv`). Bulgu: yükte fanlar
1861+
~2300/2500 dev/dk'da sabit kalıyor, sıcaklık saniyeler içinde GPU gücünü
1862+
izliyor; GPU sürüşün %50-80'inde en yüksek saatte olduğu sürece 86-90 °C.
1863+
Quick Race kapasite dökümü (en yüksek saatte 8.40 ms/kare, sınır 8.33):
1864+
1865+
| kalem | ms/kare |
1866+
|---|---|
1867+
| MSAA 2x (G-tamponsuz bedeli 0.9) | ~3.0 |
1868+
| ↳ hareket bulanıklığı bölünmesi (MS renk+Z+G sakla/yükle, +176 MB/kare) | ~1.7 |
1869+
| ışın izleme (çekirdek 2.0) | ~2.7 |
1870+
| oyunun kendi tam çözünürlük son işlemi (normal sürümde de var) | ~2.3 |
1871+
1872+
Normal sürüm aynı sahnede 3.0 ms/kare; gerçek oturumda yarışta CPU 2.82 +
1873+
GPU 3.62 = **6.45 W** (16 Ekim v1: 9.17 W), en yüksek 70 °C, fanlar hiç dönmedi.
1874+
Isınma HD'nin eklediği MSAA + ışın izlemenin bedeli; kullanıcı görüntüden
1875+
vermemeyi seçti (MSAA yerine son işlem kenar yumuşatma reddedildi).
1876+
1877+
### HD: ışın izleme sabit deposu, mekânsal gruplar
1878+
1879+
Sabit depo tek yapıdan (30 karede bir +5 ms sıçrama) önce 8 zaman sıralı yuvaya
1880+
geçmişti: yuvalar aynı bölgede üst üste biniyor, ışın çekirdeği +%48, oturumda
1881+
12 ms üstü kare %1.5 → %5.1 (regresyon). Şimdi (`metal.m` "SABIT DEPO:
1882+
MEKANSAL GRUPLAR + YENI"): depo iki yarı (ping-pong), canlılar en fazla 12
1883+
mekânsal gruba (~16K üçgen) bölünür; birleşmede GPU kopyası + kare başına BİR
1884+
grup kurulumu, hepsi bitince tek karede değişim. Birleşme sıçraması yok.
1885+
Ayrıca **konum denetimi**: aynı modelin kopyaları (direk, palmiye) başka sırayla
1886+
çizilince anlık yapının refit'i ağacı bozuyordu (çekirdek 1.5 → 15-25 ms);
1887+
çizimin VS matrisinden dünya ötelemesi son tam kurulumla karşılaştırılır,
1888+
4 birimden fazla kayarsa baştan kurulum (`HD_RT_REFIT_MOVE`).
1889+
1890+
### HD: hareket bulanıklığında arabalar MSAA'sız kalıyordu
1891+
1892+
Hızlı sürerken oyun uzak sahneyi çizip ekranı kopyalıyor, bulanıklaştırıp
1893+
harmanlıyor, SONRA arabaları ve yakın sahneyi çiziyor. HD bu ilk kopyayı sahne
1894+
sonu sayıyordu: arabalar MSAA'sız ve ışın izlemesiz. `metal.m` "SAHNE ARASI
1895+
KOPYA": böyle bir kopyada sahne çok örnekli devam eder (`HD_MBFIX=0` eski).
1896+
Bedeli hızlı sürüşte ~+1.5-2 W GPU; kullanıcı düzeltmeyi korumayı seçti.
1897+
Denenip reddedilen: bölünmede yansımaları erken birleştirip G'yi taşımamak
1898+
(`ABTEST`: +%7.5 iş).
1899+
1900+
### HD: ayrı G-tamponu geçişi (`HD_GSEP`)
1901+
1902+
Sahne MSAA geçişi artık G-tamponsuz; yansıyan çizimler orada oyunun kendi
1903+
gölgelendiricisiyle (varyantın c0'ı ile birebir aynı). Sahne bitince tek
1904+
örnekli bir G geçişi yalnız opak yansıma varyantlarını yeniden çizer (Z ikizi,
1905+
`<=` testi, eğim sapması -1). `ABTEST=GSEP`: GPU işi -%5.5, enerji -%5.9, DRAM
1906+
-28 MB/kare; doğrulama katmanı temiz, menüde fark ≤ 4/255. Tek fark: yol üstü
1907+
çıkartmalara (başlangıç çizgisi) artık ışın yansıması eklenmiyor. Ölçülüp
1908+
varsayılan KAPALI bırakılanlar: `HD_RT_FAR` (ışın mesafe sınırı, -0.1 ms) ve
1909+
`HD_RT_BMIN` (yansıma ağırlığı eşiği, görünmez eşikte -%0.8).
1910+
1911+
### Ses: müzik 40-50 sn %3 yavaş/hızlı çalıyordu (2026-10-22)
1912+
1913+
Kullanıcı: "arada bir şey oluyor, o andan itibaren müzik daha ağır akıyor"
1914+
(hoparlörde de). `SNDMUTE=1` (yeni: karıştırma ve servo çalışır, aygıta
1915+
sessizlik gider) + `SNDCSV` ile Quick Race 3 dk: her yükleme/takılmada oyunun
1916+
yazma payı yeni bir düzeye oturuyor, `audio.m`'deki yazma imleci servosu bunu
1917+
hata sanıp hızı kelepçeye (±%3) itiyor ve 40-50 sn orada kalıyordu; çağrıların
1918+
%95'inde hız ±%1'den fazla sapıyordu. Neden kapanmıyordu: oyun yazdığı yeri
1919+
bizim bildirdiğimiz GERÇEK oynatma imlecine göre seçiyor (`GetCurrentPosition`
1920+
→ `audio_cursors`), çalma hızı değişince üretim de değişir. Servo varsayılan
1921+
KAPALI (`SNDPLL=1` eski): sapma %0.56 (yalnız takılma anları), sessiz okuma
1922+
aynı, imleç aşımı 4 → 0.
1923+
1924+
### Kariyer: profil adı ve kayıt (2026-10-24)
1925+
1926+
O güne kadar hiç profil kaydedilemiyordu; zincir beş ayrı Win32 eksiğiydi:
1927+
metin girişi `WM_CHAR` ile geliyor (üretmiyorduk; `metal.m` karakter halkası →
1928+
`PeekMessageA`), `GetFullPathNameA` yoktu, `FindFirstFile` özniteliği hep dosya
1929+
diyordu (profiller KLASÖR olarak aranıyor; joker deseni de yok sayılıyordu),
1930+
`FileTimeToLocalFileTime`/`FileTimeToSystemTime` yoktu (kayıt varken çökme),
1931+
`RemoveDirectoryA`/`GetTimeZoneInformation` eklendi. Kayıtlar her pakette
1932+
`~/Library/Application Support/NFSU2 Kayitlar`; testlerde MUTLAKA
1933+
`NFSU2_SAVEDIR=<karalama>`. Test: `AUTOTEXT='1650:\b\b\b\bTalha\n'` ile isim
1934+
yazma, `FILEOPLOG=1` dosya işlemleri.
1935+
1936+
### Sistem kısayolları ve Space geçişi donması
1937+
1938+
0.54 sn'lik tek tük donmalar oyunun değil: Ctrl+ok macOS masaüstü değiştiriyor
1939+
(`FullscreenGameMode=0`, sistem günlüğünde görünür). Oyun öndeyken Space /
1940+
Mission Control kısayolları kapatılır (`SLSSetSymbolicHotKeyEnabled`), arkaya
1941+
geçince ve çıkışta açılır; küresel ve SIGKILL'den sonra kapalı kaldığı için
1942+
aynı ikiliden doğan bir bekçi süreç çökmede geri açar (`tests/boot.c`).
1943+
Cmd+Tab, Spotlight, ekran görüntüsü kısayollarına dokunulmaz. `NFSKISAYOL=0`
1944+
kapatır.
1945+
1946+
### Yakalama kısayolu
1947+
1948+
Oyun içinde **Cmd+Shift+D**: sonraki kare PNG + `DRAWLIST` + `DRAWSUM`
1949+
(`PERFLOG` dizinine, yoksa `~/Library/Logs/NFSU2/`). Otomatik testle
1950+
üretilemeyen sahneler (kariyer yarış sonu) için. Test kancası
1951+
`YAKALAKARE=<kare>`. Açık madde: kariyerde yarış sonu sahnesi (sonuç panelinin
1952+
arkası) kullanıcıda siyah kalıyor; Quick Race drag kaybında aynı sahne doğru.
1953+

‎README.md‎

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ The game boots, reaches the menus, and races are playable with sound.
2424

2525
| Area | State |
2626
|---|---|
27-
| x86-32 → C lifter (integer, x87, MMX, SSE/SSE2, 3DNow!, string ops) | 23,278 functions, 132.5 MB of generated C |
27+
| x86-32 → C lifter (integer, x87, MMX, SSE/SSE2, 3DNow!, string ops) | 23,278 functions, 137 MB of generated C |
2828
| Win32 layer (CRT startup, heap, TLS, threads, files, registry, window) | working |
2929
| Direct3D 9 → Metal, shader bytecode (vs/ps 1.x–2.x) → MSL | working |
3030
| DirectSound → CoreAudio, DirectInput (keyboard, mouse) | working |
3131
| Windowed, fullscreen, Retina-native and 1080p widescreen | working |
32+
| Career mode: profile creation (name entry), save and load | working |
3233
| Double-clickable `.app` (`./pack.sh`) | working |
33-
| Optional "HD" build: 4× MSAA, SSR, ray-traced reflections | working, see `GRAFIK_ARASTIRMA.md` |
34+
| Optional "HD" build: MSAA (2× at 1440 lines and above, 4× below), SSR, ray-traced reflections | working, see `GRAFIK_ARASTIRMA.md` |
3435

3536
### Known limitations
3637

@@ -48,7 +49,10 @@ The game boots, reaches the menus, and races are playable with sound.
4849
- 400 instructions in rarely used opcodes are still emitted as traps. None are
4950
hit in the measured race scene.
5051
- Some visuals are unverified against a Windows reference (crowds / skinned
51-
meshes, HUD seams). See "Kalan grafik maddeleri" in `PROJECT.md`.
52+
meshes). See "Kalan grafik maddeleri" in `PROJECT.md`.
53+
- Under investigation: in career mode, the scene behind the post-race results
54+
panel (car pulling up, crowd) can stay black; the same scene renders
55+
correctly after a Quick Race drag.
5256

5357
## How it works
5458

@@ -63,7 +67,7 @@ gen/all/shard_*.c (128 files) + fntab.c (guest address → native function)
6367
runtime/ (hand-written) CPU state, guest memory, Win32, D3D9→Metal, audio
6468
│ link.sh
6569
▼
66-
out/nfsu2_boot 46 MB arm64 Mach-O
70+
out/nfsu2_boot ~35 MB arm64 Mach-O
6771
```
6872

6973
- **Pointers vs. constants.** The hard problem of x86 static recompilation is
@@ -113,6 +117,13 @@ out/nfsu2_boot 46 MB arm64 Mach-O
113117

114118
`./run.sh test` runs the first and third.
115119

120+
- **Integrity run:** `tools/kontrol.sh` plays both builds invisibly and silently
121+
from the menus into a Quick Race (~1.5 min each) and checks the end-of-run
122+
report: no unsupported instructions, no unresolved indirect calls, no broken
123+
matrices, no GPU command buffer errors, no missing mip levels, the race was
124+
actually reached, and in the HD build that ray tracing and the separate
125+
G-buffer pass ran. Settings are restored and saves go to a temporary folder.
126+
116127
## Performance
117128

118129
Measured on an M1 Pro at 1280×960, same scene and settings, alternating runs
@@ -124,6 +135,11 @@ Measured on an M1 Pro at 1280×960, same scene and settings, alternating runs
124135
| 3D menus | 119 fps | 45 fps |
125136
| CPU time per frame | ~12.6 ms | ~105 ms |
126137

138+
Power while racing at the display's native resolution (3024×1964, 120 fps,
139+
M1 Pro, `powermetrics`, a real play session): the standard build draws about
140+
**6.5 W** for CPU + GPU, stays at or below 70 °C and never spins the fans; the
141+
HD build draws about 18 W.
142+
127143
## Requirements
128144

129145
- Apple Silicon Mac, macOS 11 or later. Developed on an M1 Pro, macOS 27.
@@ -149,30 +165,31 @@ EXE="$NFSU2_DATA/SPEED2.EXE"
149165

150166
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
151167

152-
# 1) relocation table -> out/relocs.txt
153-
.venv/bin/python tools/reloc2.py "$EXE"
154-
155-
# 2) lift every function to C -> gen/all/ (~20 s)
156-
# OVERRIDE lists the functions that runtime/overrides.c and
157-
# runtime/d3dx_hle.c wrap; it must match them or the link fails.
158-
OVERRIDE=60fab0,61e390,61f130,5c7ed0,50d510,65ae35,6623ea,66aa3f,66ace2,6691b1,669296,664a2f,663a42,688e89,663275,662edc,660a52,668e0d,664792,66ac27,65addb,65acf5,66d13a,66d303,66d7e9,66e8a9,66f501,66ca38,65ab24 \
159-
.venv/bin/python tools/genall.py "$EXE" 128
168+
# 1) relocation table, cross-function flag liveness, lifting every function
169+
# to C, import argument table -> gen/all/ (~1 min on an M1 Pro)
170+
# The script holds the OVERRIDE list (functions that runtime/overrides.c and
171+
# runtime/d3dx_hle.c replace); it must match them or the link fails.
172+
tools/uret_v2.sh "$EXE"
160173

161-
# 3) import argument table -> gen/all/impargs.c
162-
.venv/bin/python tools/argcount.py "$EXE"
163-
164-
# 4) compile the shards, then build the runtime and link
174+
# 2) compile the shards, then build the runtime and link (~1.5 min)
165175
./build.sh && ./link.sh
166176

167177
./run.sh test # ISA + function tests
168178
./run.sh # windowed
169179
./run.sh 1080p # 1920x1080, widescreen-corrected
170180
./run.sh hd # HD build
171181
./pack.sh # out/NFSU2.app
182+
./pack.sh --hd # out/NFSU2 HD.app
172183
```
173184

174185
`run.sh` documents the environment switches; most are diagnostics.
175186

187+
While playing, **Cmd+Shift+D** writes the next frame as a PNG plus the full
188+
draw list (to `~/Library/Logs/NFSU2/`), for reporting rendering problems.
189+
`tools/oturum.sh [hd]` records a play session (frame times, CPU/GPU power,
190+
temperature, fan speed, screenshots) and `tools/oturum_analiz.py` turns it into
191+
a report.
192+
176193
## FAQ
177194

178195
**Can I play Need for Speed: Underground 2 on a Mac?**

‎pack.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22
# out/NFSU2.app (ya da --hd ile out/NFSU2 HD.app) paketini kur.
33
#
4-
# ./pack.sh sadece port (~46 MB) -- oyun verisi kullanicinin
4+
# ./pack.sh sadece port (~35 MB) -- oyun verisi kullanicinin
55
# ./pack.sh --with-data oyun verisini de yanina kopyala (~1.5 GB)
66
# ./pack.sh --zip dagitim icin NFSU2.zip da uret
77
# ./pack.sh --embed KISISEL tek parca uygulama: oyun verisi paketin

‎run.sh‎

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@ fi
1313
# NFSHD=1 ./run.sh [mod] HD (out/nfsu2_hd_boot) -- grafik iyilestirmeleri
1414
# ./run.sh hd | hd1080p HD'nin kisayollari
1515
# HD ayarlari (yalnizca HD build okur): HDREFL=0 (yansima iyilestirmesi kapali),
16-
# HD_ROAD=1.0, HD_BLUR=0.5, HD_MIRROR=1024, HD_CUBE=512, HD_MSAA=4 (0 kapali),
17-
# HD_SSR=1 (0 kapali), HD_SSR_CAR=1 (araba boyasi), HD_SSR_DEBUG=1|2|3.
18-
# Ayrinti: runtime/enhance.c
16+
# HD_ROAD (yol yansimasi olcegi; varsayilan isin izleme acikken 1/3, kapaliyken 0.5),
17+
# HD_BLUR=0.5, HD_MIRROR=1024, HD_CUBE=512,
18+
# HD_MSAA (varsayilan otomatik: 1440 satir ve ustu 2x, alti 4x; 1 = kapali),
19+
# HD_SSR=1 (0 kapali), HD_SSR_CAR=1 (araba boyasi), HD_RT=1 (isin izlemeli yansima; 0 = SSR),
20+
# HD_GSEP=1 (G-tamponu ayri tek ornekli geciste), HD_MBFIX=1 (hareket bulanikliginda
21+
# sahne cok ornekli devam eder), HD_RT_FAR / HD_RT_BMIN (isin sinirlari; varsayilan kapali).
22+
# Ayrinti: runtime/enhance.c, runtime/metal.m (ayni adli bolumler)
23+
# Oyun icinde Cmd+Shift+D: o karenin PNG'si + cizim listesi (~/Library/Logs/NFSU2/
24+
# ya da PERFLOG dizini). Oynarken olcum kaydi: tools/oturum.sh [hd].
1925
MODE="${1:-window}"
2026
case "$MODE" in
2127
hd) NFSHD=1; MODE=window ;;
@@ -43,16 +49,19 @@ unset AUTOKEY AUTOCLICK FORCESWITCH FETICK GAMELOG DUMPFRAME BOOTFLOW \
4349
SKIPDRAW CLEARCOL MIPOFF DRAWV SLIVER PSDUMP DUMPMIP DUMPTEX SMPLOG LOCKLOG RTLOG \
4450
DRAWSUM PSISO SKIPPS PSINFO BLITLOG SNDCSV SNDDUMP SNDBACKEND \
4551
FPSCSV AUTOKEYSTOP VCLOCK VCLOCK_MAXD DECLLOG CULLWIND RSLOG NOFOG BLITQUAD RESSCAN ASPFIX ASPLOG PSHIST MIPLIN NOANISO LODMAX \
46-
RTIDLOG DRAWVPS ZSHARELOG XFORMAT CAMLOG HD_SSR_DEBUG VIEWLOG HD_RTPROBE HD_RTPROBE2 HD_RT_STAGE HD_RT_NOTEX HD_RT_PLAIN HD_RT_ONLYCX HD_RT_SLOWBUILD HD_RT_LOG HD_RT_DUMPTAB HD_RT_STRESS HD_COMP HD_MSLAZY HD_REORDER HD_RT_AB HD_RT_FIX HD_RT_POISON FORCERAIN FORCETOD FORCETOD_STATE GPUWIN PASSPROF PASSPROF_MODE GPUVSDUMP
52+
RTIDLOG DRAWVPS ZSHARELOG XFORMAT CAMLOG HD_SSR_DEBUG VIEWLOG HD_RTPROBE HD_RTPROBE2 HD_RT_STAGE HD_RT_NOTEX HD_RT_PLAIN HD_RT_ONLYCX HD_RT_SLOWBUILD HD_RT_LOG HD_RT_DUMPTAB HD_RT_STRESS HD_COMP HD_MSLAZY HD_REORDER HD_RT_AB HD_RT_FIX HD_RT_POISON FORCERAIN FORCETOD FORCETOD_STATE GPUWIN PASSPROF PASSPROF_MODE GPUVSDUMP \
53+
SNDMUTE YAKALAKARE DRAWLIST NODRAW LIMFREE ABTEST PASSPROF_CSV HD_MBLOG HD_RT_DLOG HD_RT_ONLY HD_RTPROBE2_HER
4754

4855
export FIXMAT="${FIXMAT:-1}"
4956
export NOMOVIES="${NOMOVIES:-1}"
5057
export FIXMAT_MODE="${FIXMAT_MODE:-3}"
51-
# SNDSYNC : oyun sesi kendi SANAL zamaninda uretiyor (kare basina 16.67 ms).
52-
# Emulator 60 fps'in altinda kalinca uretim gercek zamanin ~%75'i
53-
# olur ve her tampon turunda yazilmamis bolge kalir -> ses kesilir.
54-
# 1 = oynatmayi oyun hizina bagla (kesinti yok, ses hafif kalinlasir)
55-
# 0 = gercek zamanda cal (dogru perde, arada kesinti)
58+
# SNDSYNC : oynatma hizini oyunun sanal saatinin gercek zamana oranina bagla.
59+
# Saat artik gercek gecen sureyle ilerledigi icin oran normalde 1.000;
60+
# yalnizca uzun bir takilmada kisa sure duser (yazilmamis bolgeyi
61+
# calmamak icin). 0 = hep gercek zamanda cal.
62+
# SNDPLL : eski yazma-imleci servosu (varsayilan KAPALI). Oyun yazdigi yeri
63+
# bizim oynatma imlecimize gore sectigi icin servo hatayi kapatamiyor,
64+
# muzigi 40-50 sn %3 yavas/hizli caldiriyordu (bkz. runtime/audio.m).
5665
export SNDSYNC="${SNDSYNC:-1}"
5766
# GPUVS : kose gölgelendiricisini GPU'da calistir (oyunun kendi bytecode'u
5867
# MSL'ye cevrilir). Olculdu: cizim yolu 34.6 sn -> 2.2 sn,

‎runtime/metal.m‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3748,6 +3748,9 @@ void metal_miplevel_report(void){
37483748
if (!g_tex[i]) continue;
37493749
unsigned lv = (unsigned)g_tex[i].mipmapLevelCount;
37503750
if (lv <= 1) continue;
3751+
/* cizim hedefi: seviyeleri GPU uretir (HD yol yansimasi, generateMipmaps),
3752+
* yuklenmez -- sayilirsa her HD oturumunda yanlis "EKSIK" cikiyordu */
3753+
if (g_tex[i].usage & MTLTextureUsageRenderTarget) continue;
37513754
tot++;
37523755
unsigned want = (lv >= 16u) ? 0xFFFFu : ((1u << lv) - 1u);
37533756
if ((g_tex_lvlmask[i] & want) != want){

0 commit comments

Comments
 (0)