Comments (6)
WzLib has supported text encoding for future use. -> 3da9499
from wzcomparerr2.
Hmm.. that's interesting. If you can find the exact hex code for that '?' character really indicates, that would be helpful.
from wzcomparerr2.
Interesting...
I find out the bytes by tracing the source code.
GMS v.179 string.wz, position: 3413826
using (var fs = File.OpenRead(@"C:\Users\-\Desktop\string.wz")) {
var br = new BinaryReader(fs);
fs.Position = 3413826;
br.ReadByte();
int size = br.ReadSByte(); //-24
size = -size; //negative size -> ascii chars, positive -> unicode chars.
var buffer = br.ReadBytes(size);
byte mask = 0xAA; //GMS does not encrypted now, simple XOR with mask.
for(int i=0;i<size;i++) {
buffer[i] ^= mask++;
}
// print hex bytes
string.Join(" ", buffer.Select(b=>b.ToString("x2"))).Dump();
// print decoded strings.
Encoding.ASCII.GetString(buffer).Dump();
Encoding.Default.GetString(buffer).Dump(); //Simplified Chinese on my laptop
Encoding.GetEncoding(949).GetString(buffer).Dump(); //Korean code page
Encoding.GetEncoding(1252).GetString(buffer).Dump(); //West European code page
}
Output:
41 72 63 61 6e 65 20 53 79 6d 62 6f 6c 3a a0 4c 61 63 68 65 6c 65 69 6e
Arcane Symbol:?Lachelein
Arcane Symbol:燣achelein
Arcane Symbol:쟊achelein
Arcane Symbol: Lachelein
The ?
is a0H (1010 0000b)
here.
WcR2 treat them as ANSI string so weird chars appeared on respective Windows systems. 😆
Is there a better way to decode these string? or, always use ASCII Encoding like Lab?
from wzcomparerr2.
Are there pros and cons to using ASCII compared to ANSI?
from wzcomparerr2.
I am almost sure that GMS client use CP1252 fixed instead of local Ansi encoding.
According to Wiki-CP1252, char a0H
means nbsp
here, so it is rendered normally in game.
Further, variant MS clients use a suitable encoding as their default Encoding, to decode ansi strings in wz, regardless of your system language and code page.
ASCII is a primitive encoding where only contains a charset of 126 chars. A character out of range will be decoded as a fallback char ?
.
It's necessary to add more configuration to WzLib. I've no idea how to automaic recognize which version of wz file you are loaded. 😂
from wzcomparerr2.
@Kagamia In the 182→183 update of today it is fixed. No idea why it didn't affect in-game...
from wzcomparerr2.
Related Issues (20)
- 最新的 20230914 build 无法渲染 KMST 1.2.1161 的任何地图 HOT 4
- QuickView NPC Tooltip Render doesn't display NPCs with an outlinked Default thumbnail HOT 1
- MapRenderer: transparency not applied to background color (argb) selection HOT 9
- MapRender: png output on maps with transparent objects HOT 3
- KMS和KMST客户端比对后有部分新增图片未输出到对比档案 HOT 2
- 对比客户端的文件,感觉好像把每个文件都对比了一下 HOT 2
- Add CuttableCount display support in QuickView HOT 1
- 帧动画合成GIF的问题,每一帧的位置有偏差 HOT 5
- Spine does not account for phaseAtlas HOT 2
- All png files are not saved HOT 6
- MapRender 在高于 1920 x 1080 分辨率的显示器下,不会以 1920x1080 的分辨率窗口化 HOT 5
- 武器伤害上限加入单位 HOT 1
- 只会出现在 BUFF 中的技能 500061002 中的数值 #strX 无法正确被解析,能否将技能效果说明的部分隐藏 HOT 2
- 最新KMS客户端1.2.388中NPC功能文字颜色变了,希望maprender也能相应变色。 HOT 1
- KMST 1170 到 1171 更新文件有特别变化 HOT 5
- WzPatcher 希望加入跳过更新前校验检查功能 HOT 1
- KMST 1.2.1172 的活动地图渲染不正确 HOT 5
- 将林之灵的武器和副武器更改成“记忆长杖”以及“飞越”
- CMS V207 的 WorldMap177 渲染不正常 HOT 1
- KMST 1.2.173: Certain Skill Tooltips give an error HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wzcomparerr2.