Clang
Open in Telegram
یه کانال شخصیه برای تمرین C. این کانال مثل یک دفترچه یادداشته واسه من، نه یک جایی که محتواش رو تضمین کنم برای همه همچنین سعی کنید نکاتی که اینجا میگم رو با افراد حرفه ای به اشتراک بزارید و به چالش بکشید، من از خدامه بهتر شم. https://t.me/ccismywife
Show more225
Subscribers
No data24 hours
+47 days
+330 days
Data loading in progress...
Similar Channels
No data
Any problems? Please refresh the page or contact our support manager.
Tags Cloud
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
September '26
September '26
+7
in 1 channels
August '26
+8
in 0 channels
Get PRO
July '26
+2
in 0 channels
Get PRO
June '26
+4
in 0 channels
Get PRO
May '26
+1
in 0 channels
Get PRO
April '26
+1
in 0 channels
Get PRO
March '260
in 0 channels
Get PRO
February '26
+8
in 0 channels
Get PRO
January '26
+3
in 0 channels
Get PRO
December '25
+15
in 1 channels
Get PRO
November '25
+10
in 0 channels
Get PRO
October '25
+22
in 0 channels
Get PRO
September '25
+123
in 1 channels
Get PRO
August '250
in 0 channels
Get PRO
July '25
+20
in 0 channels
Get PRO
June '250
in 0 channels
Get PRO
May '25
+83
in 1 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 10 September | 0 | |||
| 09 September | 0 | |||
| 08 September | +4 | |||
| 07 September | +1 | |||
| 06 September | +1 | |||
| 05 September | +1 | |||
| 04 September | 0 | |||
| 03 September | 0 | |||
| 02 September | 0 | |||
| 01 September | 0 |
Channel Posts
اوضاع اینترنت افتضاحه، برق نداریم، آب کمه و معمولاً قطعه، برق اینقدر قطع و وصل میشه که دستگاه ها رو میسوزونه، همه چیز داره گرون تر میشه، خونه و ماشین داشتن آرزو شده، پیش نیاز های اولیه زندگی رو به دست آوردن اینجا شده نماد موفقیت، حرف بزنی جرمه، لایک کنی جرمه، اعتراض کنی باید بمیری، کل دنیا ایرانیارو آدم حساب نمیکنن، زندگی کردن کلا قسطی شده و...
اون وقت یک عده حروم زاده میان میگن نه شما میخواین لخت شین، یا میگن باید تحمل کنید تا پیشرفت کنیم...
یک بار شد یک چیزی نسبت به سال قبل بهتر یا ارزون تر باشه؟
لطفاً اگه عرزشی اینجا هست لفت بده، موندن توی این کانال برات حرامه برادرم، سر پل اون دنیا خفتت میکنم....
#دلنوشته
| 2 | 🤍 @allsaverbot | 88 |
| 3 | اینجا جایی هست که اگه پروژه ای دارید و خودتون نوشتید و میخواید همکاری پیدا کنید یا به فرد علاقه مندی کمک کنید میتونید عضو شید و خودتونو ثابت کنید. قدیم شاید توی استک اور فلو یک کپی میکردیم استفاده میکردیم و مهم نبود، چون اکثر الگوریتم هارو خودمون مینوشیتم، ولی الاً فرق یک برنامه نویس واقعی با کسی که صرفاً بلده پرامپت بده اینه که:
1. یا خودش کامل الگوریتم هارو نوشته و درک کرده
2. یا از AI کمک گرفته و یاد گرفته، که این موضوع اصلاً ایرادی نداره؛ به شرطی که واقعاً یاد بگیره.
3. یا دقیقاً و خط به خط میدونه چیزی که AI براش ساخته چیه(میفهمه چی نوشته و نمیگه: اوکی کار میکنه! به من ربطی نداره دستش بزنم)) و بخش های خاصی ازش رو خودش توسعه میده.
_________________
اینکه بگیم کلاً از AI استفاده نکنیم به نظرم حرف مسخره ای هستش، چون چیزیه که داره فراگیر میشه(شده) و اگه سیگما بازی بخوایم در بیاریم و بگیم نه به AI فقط ریسرچ، به شدت نسبت به کسی که هم از AI استفاده میکنه و هم از سایر منابع آنلاین یا کتاب ها، به شدت عقب میمونیم... | 87 |
| 4 | No text... | 0 |
| 5 | No text... | 0 |
| 6 | میدونم به تخمتون نیست ولی دیشب فهمیدم اونا CodecID نبودن... fileTypeId بودن. یعنی عملاً کدک ها همونایی بود که نوشتم، و هر fileTypeID نماینده یک فایل صوتی، یا فایل دیگه اس که ممکنه ربطی به کدک ID نداشته باشن. گفتم #اطلاعات_غلط ندم. | 2 |
| 7 | No text... | 0 |
| 8 | 🎹تحلیل فرمت XVAG(فرمت صوتی sony برای بازی های PS3 به بعد)
دارم روی فرمت XVAG کار میکنم و قصد دارم اگه تونستم یک ابزار براش بسازم. ابزار هایی برای بازکردن و تبدیل XVAG به فایل(های) صوتی قبلاً طراحی شدن. ولی ابزاری برای ساخت XVAG ایجاد، یا به صورت رسمی منتشر نشده. توی این مسیر چالش های متفاوتی وجود داره به طوری که حتی نمیتونیم با اطمینان بگیم دقیقاً Header فایل چه ساختاری داره. ابزاری مثل Vgmstreamهم صرفاً تونسته بخش هایی از Header رو بفهمه. منم تونستم به یک دید خوب نسبت به فایل برسم ولی هنوز در حد ساخت ابزار کامل نیست. نهایتاً بتونم برای هر بازی یک نسخه بسازم.
🤔رویکرد
قبل از هر کاری اول باید یک بازی رو به عنوان Target در نظر بگیریم؛ دقت فایل های XVAG برای بازی های مختلف تفاوت هایی دارن ولی ساختار کلی یکسانه. بازی که من در نظر گرفتم (TLOU2R_PC) هستش. بعد از اینکه با vgmstream فایل های صوتی بازی رو به wav تبدیل کردم با کدکی تحت عنوان ATRAC9 رو به رو شدم که یک مدتی درگیر این بودم آیا کتابخانهای وجود داره که باهاش بشه PCM رو به ATRAC9 انکود کرد یا خیر(حتی AI هم توی این بخش کمکی نکرد بهم نامرد)
ولی متاسفانه چیزی پیدا نکردم، چون این کدک اختصاصی Sony هستش و مستند نشده. ولی خوشبخاته یک سری ابزار Sony SDK لو رفته بود که مهم ترینش برای من at9tool بود(تنها چیزی هم که پیدا کردم همین بود😅). ولی این ابزار فایل xvag نمیسازه، بلکه یک فایل at9 میسازه. فایل at9 یک جور فایل با RIFF هستش که یک جورایی شبیه WAV هستش ولی شخصی سازی شده و کدکش هم ATRAC9 هستش.
تحلیل اولیه رو با بررسی کد های vgmstream انجام دادم و یک دید خوب بهم نسبت به فایل گرفتم. ولی کافی نبود، چون بعضی از بخش هارو یا نادیده میگرفت، یا از رویکرد های محافظه کارانه ای برای Parse فایل استفاده میکرد. همین باعث شد که وارد فاز مهندسی معکوس خود بازی بشم😵💫
💻مهندسی معکوس؟
بله، بازی رو باید تحلیل بکنم. مشکلی هم که هست این بازی از دیباگ شدن متنفره و منم یکم سعی کردم ولی نتونستم راهی برای دور زدن سیستمش پیدا کنم؛ ولی هدفم کرک بازی نبود(بازی که خودش کرک شده)، پس با خودم گفتم میخوام اون بخشی رو پیدا کنم که فایل XVAG رو باز میکنه. برای همین CreateFileW رو هوک کردم. Call stack رو بررسی کردم و در نهایت به تابعی رسیدم که فایل رو Parse میکنه. با کلی پارگی تهش
👀به چی رسیدم؟
از نظر تشخیص Header میشه گفت به چیز خاصی نرسیدم هنوز و vgmstream کارش کاملاً درسته. فهمیدم بازی وقتی Header رو میخونه(32 بایت) عملاً بخش هایی ازش رو نادیده میگیره یا حد اقل توی این تابع ازشون استفاده نمیکنه. تنها چیزی که ازش مطمئن شدم این بود که آفست 0xc از فایل قطعاً یک uint32 هستش؛ توضیح نمیدم چطور چون طولانی میشه.
ولی خب چیزی که ازش مطمئن شدم:
📁یک دید کلی نسبت به XVAG
این فایل یک Container منعطف صوتی برای بازی های PlayStation هستش که توسط بازی هایی مثل GOW3 و TLOU2R و... مورد استفاده قرار گرفته. فایل از یک Header با اندازه 32 بایت مجموعه از Chunkها و داده صوتی تشکیل شده. Chunk ها خودشون شامل Magic و payloadSize هستن. یعنی اندازه هر Chunk متفاوته. بازی ها میتونن Chunk های مختلفی اضافه و استفاده کنن. بازی از کدک های PCMوATRAC9 پشتیبانی میکنه ولی خود فایل XVAG از کدک های مختلفی پشتیبانی میکنه: Opus,AAC,SVAG,VAG,Mp3 و در نهایت ATRAC9. همچنین چند تا CodecId هم دیدم که نتونستم بفهمشون.
🙏در نهایت باید بگم که من گشتم و از AI هم پرسیدم، ولی نتونستم موردی پیدا کنم که بتونه XVAG بسازه یا حتی دقیق Parse کنه. شما اگه میشناسید بگید بهم لطفاً چون پای تحلیلش دارم اذیت میشم.
وقتی همه چیز اوکی شه، هم ابزارو میسازم، هم فایل رو مستند میکنم، فقط بازی های مختلف رو چک کنم که زمانبره. فعلاً تمرکز روی همین TLOU2R هستش.
#ماد_صوتی #XVAG #PC | 32 |
| 9 | 🎹تحلیل فرمت XVAG(فرمت صوتی sony برای بازی های PS3 به بعد)
دارم روی فرمت XVAG کار میکنم و قصد دارم اگه تونستم یک ابزار براش بسازم. ابزار هایی برای بازکردن و تبدیل XVAG به فایل(های) صوتی قبلاً طراحی شدن. ولی ابزاری برای ساخت XVAG ایجاد، یا به صورت رسمی منتشر نشده. توی این مسیر چالش های متفاوتی وجود داره به طوری که حتی نمیتونیم با اطمینان بگیم دقیقاً Header فایل چه ساختاری داره. ابزاری مثل Vgmstreamهم صرفاً تونسته بخش هایی از Header رو بفهمه. منم تونستم به یک دید خوب نسبت به فایل برسم ولی هنوز در حد ساخت ابزار کامل نیست. نهایتاً بتونم برای هر بازی یک نسخه بسازم.
🤔رویکرد
قبل از هر کاری اول باید یک بازی رو به عنوان Target در نظر بگیریم؛ دقت فایل های XVAG برای بازی های مختلف تفاوت هایی دارن ولی ساختار کلی یکسانه. بازی که من در نظر گرفتم (TLOU2R_PC) هستش. بعد از اینکه با vgmstream فایل های صوتی بازی رو به wav تبدیل کردم با کدکی تحت عنوان ATRAC9 رو به رو شدم که یک مدتی درگیر این بودم آیا کتابخانهای وجود داره که باهاش بشه PCM رو به ATRAC9 انکود کرد یا خیر(حتی AI هم توی این بخش.
ولی متاسفانه چیزی پیدا نکردم، چون این کدک اختصاصی Sony هستش و مستند نشده. ولی خوشبخاته یک سری ابزار Sony SDK لو رفته بود که مهم ترینش برای من at9tool بود(تنها چیزی هم که پیدا کردم همین بود😅). ولی این ابزار فایل xvag نمیسازه، بلکه یک فایل at9 میسازه. فایل at9 یک جور فایل با RIFF هستش که یک جورایی شبیه WAV هستش ولی شخصی سازی شده و کدکش هم ATRAC9 هستش.
تحلیل اولیه رو با بررسی کد های vgmstream انجام دادم و یک دید خوب بهم نسبت به فایل گرفتم. ولی کافی نبود، چون بعضی از بخش هارو یا نادیده میگرفت، یا از رویکرد های محافظه کارانه ای برای Parse فایل استفاده میکرد. همین باعث شد که وارد فاز مهندسی معکوس خود بازی بشم😵💫
💻مهندسی معکوس؟
بله، بازی رو باید تحلیل بکنم. مشکلی هم که هست این بازی از دیباگ شدن متنفره و منم یکم سعی کردم ولی نتونستم راهی برای دور زدن سیستمش پیدا کنم؛ ولی هدفم کرک بازی نبود(بازی که خودش کرک شده)، پس با خودم گفتم میخوام اون بخشی رو پیدا کنم که فایل XVAG رو باز میکنه. برای همین CreateFileW رو هوک کردم. Call stack رو بررسی کردم و در نهایت به تابعی رسیدم که فایل رو Parse میکنه. با کلی پارگی تهش
👀به چی رسیدم؟
از نظر تشخیص Header میشه گفت به چیز خاصی نرسیدم هنوز و vgmstream کارش کاملاً درسته. فهمیدم بازی وقتی Header رو میخونه(32 بایت) عملاً بخش هایی ازش رو نادیده میگیره یا حد اقل توی این تابع ازشون استفاده نمیکنه. تنها چیزی که ازش مطمئن شدم این بود که آفست 0xc از فایل قطعاً یک uint32 هستش؛ توضیح نمیدم چطور چون طولانی میشه.
ولی خب چیزی که ازش مطمئن شدم:
📁یک دید کلی نسبت به XVAG
این فایل یک Container منعطف صوتی برای بازی های PlayStation هستش که توسط بازی هایی مثل GOW3 و TLOU2R و... مورد استفاده قرار گرفته. فایل از یک Header با اندازه 32 بایت مجموعه از Chunkها و داده صوتی تشکیل شده. Chunk ها خودشون شامل Magic و payloadSize هستن. یعنی اندازه هر Chunk متفاوته. بازی ها میتونن Chunk های مختلفی اضافه و استفاده کنن. بازی از کدک های PCMوATRAC9 پشتیبانی میکنه ولی خود فایل XVAG از کدک های مختلفی پشتیبانی میکنه: Opus,AAC,SVAG,VAG,Mp3 و در نهایت ATRAC9. همچنین چند تا CodecId هم دیدم که نتونستم بفهمشون.
🙏در نهایت باید بگم که من گشتم و از AI هم پرسیدم، ولی نتونستم موردی پیدا کنم که بتونه XVAG بسازه یا حتی دقیق Parse کنه. شما اگه میشناسید بگید بهم لطفاً چون پای تحلیلش دارم اذیت میشم.
وقتی همه چیز اوکی شه، هم ابزارو میسازم، هم فایل رو مستند میکنم، فقط بازی های مختلف رو چک کنم که زمانبره. فعلاً تمرکز روی همین TLOU2R هستش.
#ماد_صوتی #XVAG #PC | 1 |
| 10 | 🎹تحلیل فرمت XVAG(فرمت صوتی sony برای بازی های PS3 به بعد)
دارم روی فرمت XVAG کار میکنم و قصد دارم اگه تونستم یک ابزار براش بسازم. ابزار هایی برای بازکردن و تبدیل XVAG به فایل(های) صوتی قبلاً طراحی شدن. ولی ابزاری برای ساخت XVAG ایجاد، یا به صورت رسمی منتشر نشده. توی این مسیر چالش های متفاوتی وجود داره به طوری که حتی نمیتونیم با اطمینان بگیم دقیقاً Header فایل چه ساختاری داره. ابزاری مثل Vgmstreamهم صرفاً تونسته بخش هایی از Header رو بفهمه. منم تونستم به یک دید خوب نسبت به فایل برسم ولی هنوز در حد ساخت ابزار کامل نیست. نهایتاً بتونم برای هر بازی یک نسخه بسازم.
🤔رویکرد
قبل از هر کاری اول باید یک بازی رو به عنوان Target در نظر بگیریم؛ دقت فایل های XVAG برای بازی های مختلف تفاوت هایی دارن ولی ساختار کلی یکسانه. بازی که من در نظر گرفتم (TLOU2R_PC) هستش. بعد از اینکه با vgmstream فایل های صوتی بازی رو به wav تبدیل کردم با کدکی تحت عنوان ATRAC9 رو به رو شدم که یک مدتی درگیر این بودم آیا کتابخانهای وجود داره که باهاش بشه PCM رو به ATRAC9 انکود کرد یا خیر(حتی AI هم توی این بخش.
ولی متاسفانه چیزی پیدا نکردم، چون این کدک اختصاصی Sony هستش و مستند نشده. ولی خوشبخاته یک سری ابزار Sony SDK لو رفته بود که مهم ترینش برای من at9tool بود(تنها چیزی هم که پیدا کردم همین بود😅). ولی این ابزار فایل xvag نمیسازه، بلکه یک فایل at9 میسازه. فایل at9 یک جور فایل با RIFF هستش که یک جورایی شبیه WAV هستش ولی شخصی سازی شده و کدکش هم ATRAC9 هستش.
تحلیل اولیه رو با بررسی کد های vgmstream انجام دادم و یک دید خوب بهم نسبت به فایل گرفتم. ولی کافی نبود، چون بعضی از بخش هارو یا نادیده میگرفت، یا از رویکرد های محافظه کارانه ای برای Parse فایل استفاده میکرد. همین باعث شد که وارد فاز مهندسی معکوس خود بازی بشم😵💫
💻مهندسی معکوس؟
بله، بازی رو باید تحلیل بکنم. مشکلی هم که هست این بازی از دیباگ شدن متنفره و منم یکم سعی کردم ولی نتونستم راهی برای دور زدن سیستمش پیدا کنم؛ ولی هدفم کرک بازی نبود(بازی که خودش کرک شده)، پس با خودم گفتم میخوام اون بخشی رو پیدا کنم که فایل XVAG رو باز میکنه. برای همین CreateFileW رو هوک کردم. Call stack رو بررسی کردم و در نهایت به تابعی رسیدم که فایل رو Parse میکنه. با کلی پارگی تهش
👀به چی رسیدم؟
از نظر تشخیص Header میشه گفت به چیز خاصی نرسیدم هنوز و vgmstream کارش کاملاً درسته. فهمیدم بازی وقتی Header رو میخونه(32 بایت) عملاً بخش هایی ازش رو نادیده میگیره یا حد اقل توی این تابع ازشون استفاده نمیکنه. تنها چیزی که ازش مطمئن شدم این بود که آفست 0xc از فایل قطعاً یک uint32 هستش؛ توضیح نمیدم چطور چون طولانی میشه.
ولی خب چیزی که ازش مطمئن شدم:
📁یک دید کلی نسبت به XVAG
این فایل یک Container منعطف صوتی برای بازی های PlayStation هستش که توسط بازی هایی مثل GOW3 و TLOU2R و... مورد استفاده قرار گرفته. فایل از یک Header با اندازه 32 بایت مجموعه از Chunkها و داده صوتی تشکیل شده. Chunk ها خودشون شامل Magic و payloadSize هستن. یعنی اندازه هر Chunk متفاوته. بازی ها میتونن Chunk های مختلفی اضافه و استفاده کنن. بازی از کدک های PCMوATRAC9 پشتیبانی میکنه ولی خود فایل XVAG از کدک های مختلفی پشتیبانی میکنه: Opus,AAC,SVAG,VAG,Mp3 و در نهایت ATRAC9. همچنین چند تا CodecId هم دیدم که نتونستم بفهمشون.
🙏در نهایت باید بگم که من گشتم و از AI هم پرسیدم، ولی نتونستم موردی پیدا کنم که بتونه XVAG بسازه یا حتی دقیق Parse کنه. شما اگه میشناسید بگید بهم لطفاً چون پای تحلیلش دارم اذیت میشم.
#ماد_صوتی #XVAG #PC | 1 |
| 11 | 🎹تحلیل فرمت XVAG(فرمت صوتی sony برای بازی های PS3 به بعد)
دارم روی فرمت XVAG کار میکنم و قصد دارم اگه تونستم یک ابزار براش بسازم. ابزار هایی برای بازکردن و تبدیل XVAG به فایل(های) صوتی قبلاً طراحی شدن. ولی ابزاری برای ساخت XVAG ایجاد، یا به صورت رسمی منتشر نشده. توی این مسیر چالش های متفاوتی وجود داره به طوری که حتی نمیتونیم با اطمینان بگیم دقیقاً Header فایل چه ساختاری داره. ابزاری مثل Vgmstreamهم صرفاً تونسته بخش هایی از Header رو بفهمه. منم تونستم به یک دید خوب نسبت به فایل برسم ولی هنوز در حد ساخت ابزار کامل نیست. نهایتاً بتونم برای هر بازی یک نسخه بسازم.
🤔رویکرد
قبل از هر کاری اول باید یک بازی رو به عنوان Target در نظر بگیریم؛ دقت فایل های XVAG برای بازی های مختلف تفاوت هایی دارن ولی ساختار کلی یکسانه. بازی که من در نظر گرفتم (TLOU2R_PC) هستش. بعد از اینکه با vgmstream فایل های صوتی بازی رو به wav تبدیل کردم با کدکی تحت عنوان ATRAC9 رو به رو شدم که یک مدتی درگیر این بودم آیا کتابخانهای وجود داره که باهاش بشه PCM رو به ATRAC9 انکود کرد یا خیر(حتی AI هم توی این بخش.
ولی متاسفانه چیزی پیدا نکردم، چون این کدک اختصاصی Sony هستش و مستند نشده. ولی خوشبخاته یک سری ابزار Sony SDK لو رفته بود که مهم ترینش برای من at9tool بود(تنها چیزی هم که پیدا کردم همین بود😅). ولی این ابزار فایل xvag نمیسازه، بلکه یک فایل at9 میسازه. فایل at9 یک جور فایل با RIFF هستش که یک جورایی شبیه WAV هستش ولی شخصی سازی شده و کدکش هم ATRAC9 هستش.
تحلیل اولیه رو با بررسی کد های vgmstream انجام دادم و یک دید خوب بهم نسبت به فایل گرفتم. ولی کافی نبود، چون بعضی از بخش هارو یا نادیده میگرفت، یا از رویکرد های محافظه کارانه ای برای Parse فایل استفاده میکرد. همین باعث شد که وارد فاز مهندسی معکوس خود بازی بشم😵💫
💻مهندسی معکوس؟
بله، بازی رو باید تحلیل بکنم. مشکلی هم که هست این بازی از دیباگ شدن متنفره و منم یکم سعی کردم ولی نتونستم راهی برای دور زدن سیستمش پیدا کنم؛ ولی هدفم کرک بازی نبود(بازی که خودش کرک شده)، پس با خودم گفتم میخوام اون بخشی رو پیدا کنم که فایل XVAG رو باز میکنه. برای همین CreateFileW رو هوک کردم. Call stack رو بررسی کردم و در نهایت به تابعی رسیدم که فایل رو Parse میکنه. با کلی پارگی تهش
👀به چی رسیدم؟
از نظر تشخیص Header میشه گفت به چیز خاصی نرسیدم هنوز و vgmstream کارش کاملاً درسته. فهمیدم بازی وقتی Header رو میخونه(32 بایت) عملاً بخش هایی ازش رو نادیده میگیره یا حد اقل توی این تابع ازشون استفاده نمیکنه. تنها چیزی که ازش مطمئن شدم این بود که آفست 0xc از فایل قطعاً یک uint32 هستش؛ توضیح نمیدم چطور چون طولانی میشه.
ولی خب چیزی که ازش مطمئن شدم:
📁یک دید کلی نسبت به XVAG
این فایل یک Container منعطف صوتی برای بازی های PlayStation هستش که توسط بازی هایی مثل GOW3 و TLOU2R و... مورد استفاده قرار گرفته. فایل از یک Header با اندازه 32 بایت مجموعه از Chunkها و داده صوتی تشکیل شده. Chunk ها خودشون شامل Magic و payloadSize هستن. یعنی اندازه هر Chunk متفاوته. بازی ها میتونن Chunk های مختلفی اضافه و استفاده کنن. بازی از کدک های PCMوATRAC9 پشتیبانی میکنه ولی خود فایل XVAG از کدک های مختلفی پشتیبانی میکنه: Opus,AAC,SVAG,VAG,Mp3 و در نهایت ATRAC9. همچنین چند تا CodecId هم دیدم که نتونستم بفهمشون.
🙏در نهایت باید بگم که من گشتم و از AI هم پرسیدم، ولی نتونستم موردی پیدا کنم که بتونه XVAG بسازه یا حتی دقیق Parse کنه. شما اگه میشناسید بگید بهم لطفاً چون پای تحلیلش دارم اذیت میشم.
#ماد_صوتی #XVAG #PC | 6 |
| 12 | 💉 جاساز کردن اطلاعات اختصاصی توی Format بدون اینکه Parser اصلی دچار خطا بشه
داشتم روی ساختار فایلهای XVAG کار میکردم؛ فرمتی اختصاصی واس PlayStation. اول تصورم این بود که XVAG صرفاً یه Container ساده با ساختار و کدکهای مشخصه و بعضی بازیها بنا به نیازشون یهسری داده اختصاصی بهش اضافه میکنن، بدون اینکه قالب اصلی یا Parser بهم بریزه.
ولی ظاهراً داستان پیچیدهتره و حتی بعضی Codecها هنوز کامل مهندسی معکوس نشدن؛ یا شاید زمانی قرار بوده پشتیبانی بشن و عملاً استفاده نشدن و واسه همین توی هیچ بازی استفاده نشدن که کسی تلاشی برای مهندسی معکوسشون بکنه. هنوز دارم تحلیلش میکنم و بعداً دانستههام رو کامل مستند میکنم، اگه پشیمون نشدم.
🤔 اما، چطور میشه اطلاعات اختصاصی به یک فایل اضافه کرد، بدون اینکه Parser اصلی خراب بشه؟
شاید کمتر کسی به این مورد فکر کرده باشه، ولی این یکی از راه هایی هست که میشه داده هارو هم پنهان فرستاد طوری که توسط ناظران یک فایل عادی باشه(بر اساس اون فرمت که چقدر معروف باشه) و هم میتونه رمزگذاری شده باشه.
این موضوع حتی میتونه برای قرار دادن دادهای استفاده بشه که از دید یک Parser عادی اصلاً وجود نداره یا اهمیتی نداره(البته توی موارد پیچیده تر حرفه ای ها ترجیح میدن اتفاقاً توسط Parser مورد پردازش قرار بگیره و متاسفانه من حرفه ای نیستم که یک فایل wav بدم توی VLC اجرا کنید و به سیستمون دسترسی بگیرم:) ).
وقتی در سطح Byte یک Format طراحی میشه، حالتهای زیادی داریم؛ ولی سادهش کنیم:
1️⃣ ساختار کاملاً Static
مثلاً Parser میدونه:
4 بایت Version، بعد 2 بایت Flags و بعد 255 بایت Data.
هیچ Size یا Offsetی وجود نداره. فایل کاملاً خشکه.
اینجا در بعضی فرمتها میشه داده رو انتهای فایل اضافه کرد، چون Parser اصلاً به اون قسمت نمیرسه؛ مگر اینکه Size رو هم بررسی کنه.
2️⃣ ساختار Type + Data
هر TypeID اندازه مشخصی داره و Parser پشت سر هم دادهها رو میخونه، البته شاید شامل size باشه ولی آفست ناریم.
اینجا بسته به رفتار Parser شاید بشه از یک Type مناسب استفاده کرد، شاید هم اصلاً نشه. حتی اگر بشه، اون Type نباید باعث رفتار عجیب و زشت پارسر بشه.
3️⃣ فایلِ دارای Header + Offset + Size
این رایجترین و منعطفترین حالته.
معمولاً فایل Magic، Header، جدول اطلاعات Chunkها و بعد دادههای اصلی داره. برای هر Chunk هم چیزهایی مثل Offset و Size ذخیره میشه.
اینجا دو چیز مهمه:
✅ ساختار کلی فایل رو بشناسیم؛ نه لزوماً معنی تکتک بایتها، بلکه جای Header، جدولها، Offsetها و Sizeها.
✅ جایی پیدا کنیم یا حتی اگه تونسیتم بسازیم(با دست بردن توی قابلیت هایی که قابل فایل در اختیار ما قرار میده) که Parser اصلی به داده ما نرسه یا بتونه بدون مشکل ازش عبور کنه.
📀 فایل خیالی CUST
برای توضیح، یک Format فرضی به اسم CUST طراحی کردم.
فرض کنید بعد از Header یک جدول ChunkInfo داریم که Offset و Size هر Chunk رو مشخص میکنه و...
اگر بین جدول و اولین Chunk فضای قابل استفاده وجود داشته باشه، میشه داده اختصاصی رو اونجا قرار داد و Offsetهای Chunkها رو Update کرد، بدون اینکه خود Chunkها تغییر کنن.
امااا...
فایل Checksum داره؛ هم برای Chunkها و هم برای کل فایل. پس بعد از تغییر ساختار باید Checksumها دوباره طبق الگوریتم خود Format محاسبه بشن؛ الگوریتمی که مثلاً با مهندسی معکوس بهش رسیدیم.
داده اختصاصی هم بهتره ساختار خودش رو داشته باشه؛ حداقل Size، و در صورت نیاز Magic و همین حرفا...
💡 چه کنیم؟
اول ساختار فایل رو پیدا میکنیم و مشخص میکنیم Parser دقیقاً چه بخشهایی رو میخونه و Offset و Size هر Chunk از کجا میاد.
بعد یک فضای امن پیدا میکنیم؛ مثلاً بین ChunkInfoها و اولین Chunk، یا هر بخشی که خارج از محدودهای باشه که Parser به عنوان داده اصلی میشناسه.
داده اختصاصی رو اونجا قرار میدیم، بعد Offsetهای Chunkهایی که جابهجا شدن رو Update میکنیم.
در آخر هم باید Checksum رو از 0 تا Size-8 محاسبته کنیم و توی 8 بایت انتهایی بزاریم. تلگرام محدوده و بیش از این نمیتونم توضیح بدم.
داستان حتی میتونه پیچیدهتر بشه:
مثلاً Checksum هر Chunk فقط به خود Chunk وابسته نباشه و Offset یا ChunkInfo مربوط به اون هم وارد محاسبه بشه. اینجا Update Chunkinfo نجاتتون نمیده به راحتی.
کد نذاشتم چون هدف این پست توضیح مفهوم بود، نه پیادهسازی.
آره برادر، تصویر با AI ساخته شده صرفاً برای اینکه راحت تر ساختار CUST قابل درک باشه و CUST از Custom میاد و جنبه آموزشی/ تستی داره و توی دنیای واقعی قرار نی استفاده بشه.
#جالب | 230 |
| 13 | No text... | 108 |
| 14 | دارم روی بعضی از فایل های موتور RAGE کار میکنم و میشه معنی پارگی رو اینجا فهمید، Telltale شوخی بود... | 141 |
| 15 | دارم روی بعضی از فایل های موتور RAGE کار میکنم و میشه معنی پارگی رو اینجا فهمید، Telltale شوخی بود... | 1 |
| 16 | یک سال پیش یک کاری کردیم گزارشم دادیم ولی پیگیری صورت نگرفت الا تازه مدتیه مد شده...
لاشیا میدونستم پیگیری نمیکنید از راه دیگه اقدام میکردم، حالا بفرما تحویل بگیر، sp بی sp | 4 |
| 17 | این کد توی فارسی سازی بازی هایی که از rtl پشتیبانی نمیکنن خیلی مفید و مهمه، کد من نیست از استک اور فلو پیداش کردم، فقط برای پروژه TelltaleLocalizationTool(منظورم این نیست) یک سری تغییرات توش اعمال کردم. بعداً مستندات ابزار TelltaleLocalizationTool هم به اشتراک میزارم فعلاً درگیر یک کار دیگه ام، فقط در همین حد بگم:
روی نسخه اندروید بازی WD3NF(یا هر بازی که از MSV6 و D3dtx9 و landb استفاده میکنه)، فایل های landb و font و d3dtx رو کامل باز کردم و توی C# پیاده سازی کردم و تبدیلات لازم(تبدیل fnt به font یا dds به d3dtx یا...) رو اوکی کردم. تجربه جالبی بود، هر چند هنوز کاملش نکردم یکمش مونده تا تکمیل بشه و فارسی سازی بازی رو ساده کنم.
اگرم به ماد بازی علاقه دارید، حتماً C# یاد بگیرید چون اکثر ابزار ها با این زبان نوشته شدن.
به یادگیری ساخت ماد برای بازی ها ادامه میدم و مطالبی در این باره منتشر میکنم.
#نکته: توی اکثر پروژه های فارسی سازی، به این کد نیاز دارید(جدا از بحث ساخت فونت های اختصاصی!)
با تشکر از شایان عدالت منش بابت پیاده سازی الگوریتم | 175 |
| 18 | این کد توی فارسی سازی بازی هایی که از rtl پشتیبانی نمیکنن خیلی مفید و مهمه، کد من نیست از استک اور فلو پیداش کردم، فقط برای پروژه TelltaleLocalizationTool(منظورم این نیست) یک سری تغییرات توش اعمال کردم. بعداً مستندات ابزار TelltaleLocalizationTool هم به اشتراک میزارم فعلاً درگیر یک کار دیگه ام، فقط در همین حد بگم:
روی نسخه اندروید بازی WD3NF(یا هر بازی که از MSV6 و D3dtx9 و landb استفاده میکنه)، فایل های landb و font و d3dtx رو کامل باز کردم و توی C# پیاده سازی کردم و تبدیلات لازم(تبدیل fnt به font یا dds به d3dtx یا...) رو اوکی کردم. تجربه جالبی بود، هر چند هنوز کاملش نکردم یکمش مونده تا تکمیل بشه و فارسی سازی بازی رو ساده کنم.
اگرم به ماد بازی علاقه دارید، حتماً C# یاد بگیرید چون اکثر ابزار ها با این زبان نوشته شدن.
به یادگیری ساخت ماد برای بازی ها ادامه میدم و مطالبی در این باره منتشر میکنم.
با تشکر از شایان عدالت منش بابت پیاده سازی الگوریتم | 1 |
| 19 | این مدت مسافرت بودم واسه همین هیچ مطلبی یا اشاره ای به به پروژه Telltale localization نداشتم. چیزی هم طبق برنامه ام البته پیش نرفت، فقط توی این سفر یک سری چیزارو فهمیدم که کاشکی نمیفهمیدم و همون افکار قبلی رو داشتم دربارشون...
بگذریم، به زودی سعی میکنم ادامه بدم دوباره پروژه باحال(باحال برای من) فارسی سازی بازی ها و تحلیلشون رو ادامع بدم و... | 31 |
| 20 | راستشو بخواید من دانشگاه نرفتم، ولی درباره بعضی از استادا چیزایی شنیدم که با خودم میگم یک نفر چقدر میتونه عقده ای باشه و مادر****؟ خدا رحم کرد اینا استادن قاضی نیستن، مثلاً کار از دستشون بر میاد برای کمک ولی میگن نمیتونم یا اصلا درس نمیدن و سوالاتی میارن کت خودشونم ممکنه نفهمن چی گفتن و مدام لج میکنن و اذیت میکنن و میگن اگه فکر میکنید استادتون سخت گیره سخت در اشتباهید و بعداً میفهمید مدیریتون از استادتون سخت گیر تره چون امنیت شغلی استادتون رو نداره و همین چرتو پرتا و خودشون یک جوری دست بالا میگیرن انگار نوبل دارن و خفن تر از اونا نیست.
بدیهی هستش که منظورم همه استادا نیست و عده قلیلی هستن که اینقدر کسکشن... باور کنید آدمایی پیدا میشه که یا رشتشون یک چیز دیگه اس یا اصلا دانشگاه نرفتن ولی کارایی میتونن بکنن که همین استادای گنده گوز پشماشون بریزه... والا... دلم پر بود، دو سه مورد ازشون رو دیدم این مدت و تنها تریبونم همینجا بود.... #دلنوشته | 184 |
