设为首页收藏本站官方微博

建议 【Opengl游戏汉化 #4】 惊恐鬼屋导演剪辑版(Scratches Directors Cut)字幕显...

[复制链接]
查看: 791|回复: 3
打印 上一主题 下一主题

[建议] 【Opengl游戏汉化 #4】 惊恐鬼屋导演剪辑版(Scratches Directors Cut)字幕显...

跳转到指定楼层
楼主
发表于 2023-8-27 11:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

【Opengl游戏汉化 #4】 惊恐鬼屋导演剪辑版(Scratches Directors Cut)字幕显...

本帖最后由 shane007 于 2023-9-4 18:48 编辑 - i- Q9 C, ?) u4 S: N+ ^7 S
: S& x3 p" `: S* V1 c/ W
这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。
8 u3 W. J1 c; ~+ a* h- @对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数) ~) K& Z' P. R8 u" o& ^+ ]  r

) Y% W! R0 h$ k# t7 z, k  M; D9 g
glGenLists的调用有4处,前3处参数为1,应该不是。
7 ^3 t/ }* w0 G; a0 W7 o' _一下是第四处代码,这里应该就是生成字体的地方。) h/ G( |; Z, E8 f+ {( Q
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。
5 C$ s1 y0 I, b2 p' [* K: C. L) Z8 C9 I
  1. int sub_40BEB0()
    ' D0 W6 D) @$ b: E# U
  2. {
    ( K; i2 D, U/ z% \
  3.   signed int v0; // ebx, i- \! s3 v0 P+ \5 I
  4.   int v1; // ecx
    ! N  [4 X2 T; x
  5.   float v2; // ST18_4
    3 O2 e: c  x% L- `5 T# d. Q
  6.   float v3; // ST1C_4
    3 v6 c$ |6 |6 g5 O5 f  F; D$ w
  7.   float v4; // ST20_4
    6 V9 I3 x& L+ \. x
  8.   float v5; // ST24_46 l# {6 ~- ]( G1 [( m1 L
  9.   int result; // eax# s4 C+ c$ a% K) J9 G+ b! w, E: `

  10. " j- ~6 B3 n- `9 p6 k9 ~
  11.   v0 = 0;9 V8 G# e& z. ~
  12.   dword_4DF5130 = glGenLists(272);
    6 m! @% T% \* J0 ^  P+ F
  13.   do7 v# R- F8 ^1 A$ j
  14.   {0 H, a- s) W" [) \  e8 Q
  15.     v2 = (double)(v0 % -16) * flt_483450;+ t: t  K8 _! [: i5 `- C% Y2 w2 q
  16.     v3 = (double)(v0 / 16) * flt_483450;- _6 Y7 B; f; q4 ^6 z
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);
    $ n, |( b1 ]" b5 Y3 P: i  |! ~
  18.     glBegin(7);4 r& N) Z1 ]$ ?! g) a0 K' u
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));
    4 R1 T6 H! C: b! {( p
  20.     glVertex2i(0, 0);+ b- Q* \& f' l0 Z& _; P
  21.     v4 = v2 + flt_483450;
    1 ?2 @0 M2 y0 e$ q) A/ Z
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));
    ! M; W) g; P, y2 d
  23.     glVertex2i(16, 0);
    % M& K8 w: k8 K' u6 ?0 w
  24.     v5 = v3 + flt_483454;7 m) W& R" u9 r* Q# x7 r
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));% J; b( v* g. z) ~6 i
  26.     glVertex2i(16, 16);
    ) A8 V* a8 r" e: w' j9 k- D
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));
    % [7 h( L! O" e+ d
  28.     glVertex2i(0, 16);
    9 E8 u8 O8 E; P& [/ ^8 R/ V
  29.     glEnd();
    - T5 {0 y; ?2 Y6 [. v: R* i: q6 g' t
  30.     ++v0;
    , U" X, [3 k9 V2 z9 R
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);
    ( J+ k  c" ]0 e4 v% i
  32.     result = glEndList();. Q, X/ {1 e9 h
  33.   }+ k/ M  B( s4 u
  34.   while ( v0 < 272 );
    + _5 l; w6 Y9 y) p- Y  D8 f
  35.   return result;
    ( O" W0 S  W/ V% n/ o* p' W
  36. }
复制代码

6 J4 G+ `& m! @* y( I
1 T0 b8 |+ l9 N5 Y2 x6 ^对glCallList的调用只有以下一处,
' O5 E: |  R. e* S  D4 V) @这是显示单个字符还是字符串的方法,待以后再确认。
# C& a, i# k. e% ]& J+ v glCallLists(strlen(&v7), 5121, &v7);
( I- R/ |- s7 e5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。8 T' Q5 ^9 d  M, N, N
0 P4 l5 Z6 \2 r- W, h: C& ^
  1. #define GL_BYTE                           0x1400
    0 M2 z3 B% d* q7 l
  2. #define GL_UNSIGNED_BYTE                  0x1401; F2 p: I" {5 `- k
  3. #define GL_SHORT                          0x14025 [7 v' y, x: s  _
  4. #define GL_UNSIGNED_SHORT                 0x1403& _+ G* G- n- Y% l1 t$ f9 L) f
  5. #define GL_INT                            0x1404
    # |8 U/ H5 p& y$ T! o
  6. #define GL_UNSIGNED_INT                   0x14051 \4 f% ~8 H+ d3 y% l
  7. #define GL_FLOAT                          0x14064 f- j  m7 s' R+ U- N5 |; m  h
  8. #define GL_2_BYTES                        0x1407
    7 Q" a! a( D5 Y5 n
  9. #define GL_3_BYTES                        0x14083 b8 s% I( U$ T( v1 Z. ?
  10. #define GL_4_BYTES                        0x1409
      I* n( C2 n9 ]) |
  11. #define GL_DOUBLE                         0x140A
复制代码
/ }4 h# T3 A& X4 B$ q( i
5 f/ J! l; y& Z4 a, Y* q! N$ H7 n
  1. & b) Q3 w, ^- d, D4 t
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5): F3 r5 R, |1 E6 M; e7 K
  3. {
    . V3 g. t* T! ?
  4.   int v5; // ecx
    - X0 V& S) C0 m: |. H* A
  5.   int result; // eax
    1 L$ u9 i" N2 [9 y) E- H
  6.   char v7; // [esp+18h] [ebp-118h]/ z% K$ t1 w5 W. }/ s
  7.   char *v8; // [esp+118h] [ebp-18h]3 g$ F2 L$ Y, R0 b* I6 S
  8.   int v9; // [esp+11Ch] [ebp-14h]* m* z, K7 V* o
  9.   int v10; // [esp+128h] [ebp-8h]* G* @% X- i0 V5 [+ `6 k
  10. , ^, B1 h- ~2 N, F7 i# X
  11.   v10 = v5;( w& T7 k& J  i/ I* j2 y
  12.   if ( a4 )
    9 o- Z$ x4 u9 V4 c
  13.   {
    4 R& M4 o/ y0 U* ?- h
  14.     v8 = &a5;
    3 q  ~8 \! a" Z. J# J5 l- o8 R+ ~
  15.     sub_41BA00(v5, a4);
    0 t. n9 q0 G- k( {' n& K( k
  16.     v8 = 0;2 a) l: N( c' d: C7 ~& {- o
  17.     glBlendFunc(770, 771);7 B# o4 F6 a0 }: n: o2 Q$ g* A; l
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);
    1 @' E' ?4 ~1 W& o+ a# n
  19.     glPushMatrix();
      H* P) H5 {; J  {' E) I5 f
  20.     glLoadIdentity();  ~3 w+ X3 a8 H8 `/ I6 y# _$ F
  21.     v9 = a1;% y8 T! R6 w* u
  22.     glTranslated(
    9 A4 `2 I3 }) x3 f* Z: x3 v; n
  23.       COERCE_UNSIGNED_INT64((double)a1),
    & |2 S/ u# D, o7 F+ [) u& N
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,
    3 |, w0 _0 J6 u0 i
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),4 A- V. K, z' [- y  _8 d
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,
    5 X2 W, r, L0 Y* K& Q; n. X
  27.       0,+ I' X& {) I3 N
  28.       0);& k3 k& d3 _; X+ S  E$ x& D+ n
  29.     glPushAttrib(0x20000);9 u' w' R' y) P1 J2 J3 S# ^2 g
  30.     glListBase(dword_4DF5130 + 16);+ h1 p/ V+ `8 w, \: C
  31.     glCallLists(strlen(&v7), 5121, &v7);
    4 {: l8 S. K* i
  32.     glPopAttrib();( _+ s& h) y- f- Y
  33.     result = glPopMatrix();7 X6 Z: O, w( A
  34.   }3 Z. {+ u% T+ h
  35.   return result;+ w# V8 g' O- J$ F. U% A
  36. }
    2 `. v; G+ D* K9 w4 |! F
复制代码

( X$ Y# o' U! R* w: |3 Q+ ?* p& Z, Q4 X1 I/ g

3 t0 t% s- L( G7 |7 G! {0 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

地板
发表于 2024-9-4 15:27 | 只看该作者
会不会很恐怖很吓人啊
回复 支持 反对

使用道具 举报

板凳
发表于 2024-8-4 23:27 | 只看该作者
这项目得有十几年了吧,还有戏吗?
回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2023-9-4 18:49 | 只看该作者
顶上来,顶上来
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表