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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑 2 G" A& s7 z6 ?6 C; s

' x, }- x5 V' n. H" p8 x这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。
1 H! u- P% P) @7 E9 Q0 g对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数
+ h1 ?5 \1 [& D1 Q) v/ Z' j/ m
9 q* B8 t$ ?8 n+ i* x! `  ^6 I6 h* X. {+ l% Z1 [! c+ [. L% d& X
glGenLists的调用有4处,前3处参数为1,应该不是。
& l4 w. f7 e# n: {7 H一下是第四处代码,这里应该就是生成字体的地方。* P% z) q& J4 y! u" |
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。# R2 t! A2 [# ?# W; p5 u3 a
  1. int sub_40BEB0()
    ) p* q& R2 D( g* b2 z; H+ x
  2. {
    , V; z0 ~) n$ p3 Y5 V" ~
  3.   signed int v0; // ebx
    5 ], V; E, v9 ~2 ?7 o$ z: o
  4.   int v1; // ecx/ u6 d% }6 R" T6 L" }
  5.   float v2; // ST18_4$ e: ~8 ?) g/ Y: x6 O" g
  6.   float v3; // ST1C_4( J4 a0 B% I! O) L2 U6 l
  7.   float v4; // ST20_43 _, N" G/ n# R' F" c5 ]! o
  8.   float v5; // ST24_4! J8 v8 x% ^! D
  9.   int result; // eax
    2 b- ^3 B" Z0 O2 z/ P- e; O
  10. 7 O, ?# x& V. I7 ~6 R$ k: R
  11.   v0 = 0;
    * A1 \5 G! @; \& r; J3 _% C. c
  12.   dword_4DF5130 = glGenLists(272);
    2 w6 \0 n8 R7 v& r
  13.   do
    : }1 K3 C, i) Y  [+ [6 D
  14.   {' b6 i# u% y3 \' z
  15.     v2 = (double)(v0 % -16) * flt_483450;
    / z( A" m5 i5 ?/ U8 F2 p' r
  16.     v3 = (double)(v0 / 16) * flt_483450;
    5 G! U. W" P6 g
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);3 F3 [  @$ ~4 V
  18.     glBegin(7);
    & n( y4 ?% b$ T* X( @& |
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));
    . T- L5 @8 E; K
  20.     glVertex2i(0, 0);5 W& D8 g; I. |3 A0 V* b. s
  21.     v4 = v2 + flt_483450;4 b7 T* `8 M' H5 z
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));+ O8 ~; F! d( J
  23.     glVertex2i(16, 0);
    & f& i7 P  M  K
  24.     v5 = v3 + flt_483454;
    ( B* U: D1 r! R* n, v/ z
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));
      ^( e. h) P- Z4 ^8 D( O
  26.     glVertex2i(16, 16);5 k) k2 F: t+ Z) b
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));  Q8 y; @" F# |* V
  28.     glVertex2i(0, 16);2 z3 Q7 x" J9 n1 |  {
  29.     glEnd();
    ; D, Y) Y! i! Y/ J3 R
  30.     ++v0;
    3 t' W5 a4 V6 U  q
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);
    6 b( R3 e& N! @6 N2 e) e7 F; g' ]
  32.     result = glEndList();
    - m1 \# a/ s  V
  33.   }2 J/ U" y7 S* f4 f
  34.   while ( v0 < 272 );- i2 T- D7 A' [1 O' B! ~3 \0 G
  35.   return result;
    ) T6 K- \- v# b8 G+ X" k& ^4 O
  36. }
复制代码

* k$ p3 c$ k8 }+ w& l# `: |6 i- Q0 l4 X: r5 ?) |$ W" h5 y
对glCallList的调用只有以下一处,' Z/ R; m9 Q* f
这是显示单个字符还是字符串的方法,待以后再确认。
# g# u. l9 p9 N1 J' j glCallLists(strlen(&v7), 5121, &v7);
( t/ I/ j4 R8 V; Q4 ]5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。. Q, K' }8 R: V8 [! ^
8 F9 A; a9 T: v/ t5 j' e5 C
  1. #define GL_BYTE                           0x1400
    # P# s4 z1 k9 \
  2. #define GL_UNSIGNED_BYTE                  0x1401
    8 |) @' s8 K6 C. F
  3. #define GL_SHORT                          0x1402. y4 a. Y  U( I$ M& o
  4. #define GL_UNSIGNED_SHORT                 0x1403
    / ]$ Q! i6 |/ m( D% f( V
  5. #define GL_INT                            0x1404
    " i% ~/ }( @+ h7 s
  6. #define GL_UNSIGNED_INT                   0x1405
    9 y* P$ K% c1 }6 [0 K) v
  7. #define GL_FLOAT                          0x1406& \; ?) |/ s8 f. ]$ q/ J* Z* A
  8. #define GL_2_BYTES                        0x1407" `4 m; X8 X8 I: S- h" Z! }. ]" J+ v
  9. #define GL_3_BYTES                        0x1408; h4 s: ~# W8 p; d# @, m
  10. #define GL_4_BYTES                        0x1409& @& Z' M. I, C+ {; e
  11. #define GL_DOUBLE                         0x140A
复制代码
3 a% Q0 W0 F- w

! I+ `& P2 C( a
  1. ! H* s' M1 v. N. O+ f# c
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)+ b0 Z) g6 P' d* J# K9 C
  3. {
    7 ?% f% a2 X: z; l5 l
  4.   int v5; // ecx: c& {4 b( D  Y+ u
  5.   int result; // eax
    , o: r1 ~* q& s: B. V* i
  6.   char v7; // [esp+18h] [ebp-118h]3 P. Q$ K% [7 S4 [  T9 e
  7.   char *v8; // [esp+118h] [ebp-18h]
    9 V& C4 u7 w# c6 s
  8.   int v9; // [esp+11Ch] [ebp-14h]
    6 w, d! z& ~1 Q# Z4 _; Y9 M2 w
  9.   int v10; // [esp+128h] [ebp-8h]
    ! j) A7 n) O8 `# h2 K$ n, I' f! a

  10. : f3 X5 C& s, B) d
  11.   v10 = v5;
    2 |. E; w7 V9 b
  12.   if ( a4 )
    9 b2 T# [0 N3 r2 H/ Q" A) P
  13.   {
    , Z* F% |* j4 P. Z+ }' ^
  14.     v8 = &a5;
    2 [  r! O3 e, b! r. L' N3 H
  15.     sub_41BA00(v5, a4);6 i( D, q4 C/ M: Z8 L0 s
  16.     v8 = 0;. b: Q' S' a( B; |. a4 e1 E
  17.     glBlendFunc(770, 771);* s7 Y1 f7 i4 k' d% u  o4 g
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);' H! H. g  y8 l/ O& J
  19.     glPushMatrix();
    ) a0 `5 s& h, k  P9 z( z9 X& K$ A
  20.     glLoadIdentity();) h# d( w' P) p
  21.     v9 = a1;& S. W4 n6 |: R7 V4 A. p: _
  22.     glTranslated(
    " q1 B/ P! k# t  G, B0 k- V
  23.       COERCE_UNSIGNED_INT64((double)a1),
    / Q- n. u/ i! s- v' J
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,9 |' u' c: c. U# d( x) Q
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),  s6 Q' O$ b% u  [2 P. }
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,
    " x& b' j3 |$ \6 ?/ r- n# A
  27.       0,: J; {, j3 \! r: H4 q
  28.       0);( i" H# K5 `* \% x1 l; Q# Z
  29.     glPushAttrib(0x20000);5 [# t" k$ {" e
  30.     glListBase(dword_4DF5130 + 16);' k+ Q! G/ l+ I, z
  31.     glCallLists(strlen(&v7), 5121, &v7);- _' o' \7 J5 G$ }+ m% r
  32.     glPopAttrib();$ @: A( [' N# T0 R( }+ C
  33.     result = glPopMatrix();+ }4 f/ a5 Y; d% q8 v0 |
  34.   }
    1 ~3 ]0 c: e# `* G+ o4 X/ H3 @& p
  35.   return result;
    6 T8 A) Y3 P- ~3 h8 Z
  36. }
    9 f4 W  V3 a3 U& A
复制代码
1 G/ |7 E5 K8 K5 n/ P

$ B' W; ~9 O" l! i- P! \# a# C& [( n3 w2 E* e1 Z9 ^; y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好1 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

高级模式
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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