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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑
. {. [4 n& U; c8 y; r
5 h# a* q3 H* s1 d7 i& O* T这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。$ |( t- D* U9 A& D/ U9 Q$ @6 i
对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数
! g- D- K1 E" h% d9 X0 a! y3 f. \, e, X9 z: a4 H( O. ~. g- t
" U9 Q) @  G) S" H. P$ J4 O
glGenLists的调用有4处,前3处参数为1,应该不是。
! r$ Q" _0 U# D一下是第四处代码,这里应该就是生成字体的地方。$ l3 Z0 C5 K1 |8 s
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。
0 B+ a! Y/ }% B6 _8 l# _9 T& N
  1. int sub_40BEB0()  _: ?) d. Y( e7 m
  2. {
    1 N& C/ Y$ b$ J; Z6 Q2 P
  3.   signed int v0; // ebx, Q1 c! ~+ J+ B. c. q4 ?, J* ^
  4.   int v1; // ecx
    % m6 a, `9 p5 z
  5.   float v2; // ST18_4
    9 z1 ]* k  m: H1 X- v; x
  6.   float v3; // ST1C_4
    , V8 W" A  \  v( J" @) A- T7 E: t
  7.   float v4; // ST20_49 @# z& W& K# S) r
  8.   float v5; // ST24_48 Q# n0 X, r+ P. `
  9.   int result; // eax. L) O  e3 t6 i  p

  10. $ R1 i; G9 V5 B! Q9 D( F
  11.   v0 = 0;
    8 y, n) f9 }) r3 v9 V5 L
  12.   dword_4DF5130 = glGenLists(272);( I) f& T9 f' U! p
  13.   do
      g* t( c, |* g" y5 I% d
  14.   {1 J3 C% O7 z4 F9 A
  15.     v2 = (double)(v0 % -16) * flt_483450;
    # D5 O/ e: s% S0 w3 Y, S: Y- P7 H! J
  16.     v3 = (double)(v0 / 16) * flt_483450;/ G7 l: H5 J+ T! b* i! f/ H: J6 Q- ~
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);
    $ \1 K7 y% d' }# S. S
  18.     glBegin(7);# x- r( S! _: S, l5 b! p3 M' ^' j
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));" q; ^% r6 y% `, w0 g! Z' f
  20.     glVertex2i(0, 0);
    6 |- W7 {) X( m
  21.     v4 = v2 + flt_483450;6 u( Y# ]# o1 u/ |1 ~- Q
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));& q/ a( z% V+ o0 K' e3 O
  23.     glVertex2i(16, 0);, j- c. p+ ^' b. \% @
  24.     v5 = v3 + flt_483454;1 e+ _* ?1 @) @7 x( q( C3 O
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));
    9 J1 S8 y: t: X) b. `% A  x
  26.     glVertex2i(16, 16);$ Q5 k6 }+ C1 w7 s
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));9 ~  w5 `$ B+ n7 q
  28.     glVertex2i(0, 16);
    ( G# p& z: S8 o- ~) W
  29.     glEnd();
    " m7 ]( O0 J: H' p' x. z+ a  f6 b
  30.     ++v0;5 A: l/ m! f# F9 k7 U: ^- d) R
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);% m' H6 C, I4 @' B8 J
  32.     result = glEndList();
    1 C# j' o; E1 \  J1 z: ~) Q
  33.   }  N% V4 e7 D0 e% `: _
  34.   while ( v0 < 272 );. O$ s. ]6 \: H1 x* r
  35.   return result;
    - r. l% e9 @6 I3 M0 Z
  36. }
复制代码
, E8 s3 k1 ^, e- G8 A6 O! S
4 r$ Z% o. r6 _9 \$ N
对glCallList的调用只有以下一处,% e- E% b, D, E/ S( `
这是显示单个字符还是字符串的方法,待以后再确认。
0 ^. A5 R( z# t/ W- M glCallLists(strlen(&v7), 5121, &v7);
5 {/ p* ^* v& m% f5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。
3 O1 ]& t( ~% @: G7 Q9 f+ G
# O6 p7 }4 X: ?9 X9 W7 u" t
  1. #define GL_BYTE                           0x1400: s+ n8 {8 v) ]; T$ u- `) C
  2. #define GL_UNSIGNED_BYTE                  0x1401
    5 f/ }: d7 n. W1 x. i
  3. #define GL_SHORT                          0x14025 @3 T. q8 e2 u9 s4 y: ]5 P
  4. #define GL_UNSIGNED_SHORT                 0x1403, q# a( m: T/ P- _. w7 }
  5. #define GL_INT                            0x1404
    - `3 {% s, ?3 [4 c. B
  6. #define GL_UNSIGNED_INT                   0x14051 J. [. m! z+ ^  x
  7. #define GL_FLOAT                          0x1406, f, T& r, J4 k* f  e$ }; l* g" O
  8. #define GL_2_BYTES                        0x1407
    ( I# F$ H, O6 c6 E" t
  9. #define GL_3_BYTES                        0x1408$ k3 K/ z1 a! E. _5 P% Y7 f
  10. #define GL_4_BYTES                        0x1409/ z8 \  h0 W7 J, w$ k$ W7 Y
  11. #define GL_DOUBLE                         0x140A
复制代码
& ~2 N4 j, S0 U, z
& v. r" |5 g. j0 S- _! z

  1. 3 p. x1 C& V6 a2 u
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)
    ! e  J# R; K  K( P, g; k
  3. {
    3 ?  v' `- X1 R. d
  4.   int v5; // ecx
    - X' Y' w( f. v) ]! N" f3 y
  5.   int result; // eax
    5 H! L( `1 u' k+ v8 Q8 }$ R
  6.   char v7; // [esp+18h] [ebp-118h]+ Z3 B$ u! t: c4 N6 l5 y% o
  7.   char *v8; // [esp+118h] [ebp-18h]
    + O; c" L0 @+ y7 n
  8.   int v9; // [esp+11Ch] [ebp-14h]
    8 T6 j: a/ v. D- K8 Y
  9.   int v10; // [esp+128h] [ebp-8h]- F# d/ e% k3 P6 E$ T* Z  {- G
  10. ( s; i- \. M6 }6 R% R
  11.   v10 = v5;
    9 l& @- S# l: Y% p3 f
  12.   if ( a4 ), q' Z  u$ c5 W% V' P" a. h
  13.   {
    , c  ^/ d+ y) Z: e6 g; K! @5 w3 ~
  14.     v8 = &a5;
    " B* F/ ^2 Q3 Z' W! E5 b
  15.     sub_41BA00(v5, a4);: G& s" G( d  \( K
  16.     v8 = 0;& s& [9 j* E3 K- d
  17.     glBlendFunc(770, 771);
    - R3 v- l/ U# `
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);
    / h* |. G1 e+ `4 `* n
  19.     glPushMatrix();
    / Z( a. A  ]4 V. w7 t9 ^5 @
  20.     glLoadIdentity();0 T  n* j8 J! ]; J6 b
  21.     v9 = a1;
    / N7 q* C7 R' W2 `
  22.     glTranslated(0 N+ t2 m5 z. S5 r
  23.       COERCE_UNSIGNED_INT64((double)a1),
    ! o, A' T3 y- F1 }2 G
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,6 F$ U4 C' |  f& ~7 B+ R
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),
    1 t/ _' x* H' H; g+ r1 X
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,
    0 q7 m. I, P/ ]* t
  27.       0,
    ' `7 s  N' `7 t8 s' ~% f
  28.       0);2 s2 ~/ P/ Q4 B
  29.     glPushAttrib(0x20000);3 x5 N" \2 b/ l; F9 S- u1 v
  30.     glListBase(dword_4DF5130 + 16);
    - s* g' ?7 c! m8 x) m! s
  31.     glCallLists(strlen(&v7), 5121, &v7);1 c# O: ~. ]- D8 b- L7 m# C% ^
  32.     glPopAttrib();
    * a2 k# {0 q4 E9 q* _. _7 P
  33.     result = glPopMatrix();
    - a, ^+ v% p; |& H9 i: m- a' Q( I
  34.   }
    ) D' \% O9 @- ?; w& i
  35.   return result;1 p! S. h, k7 T! T) Q5 X
  36. }
    $ D. O/ s+ I/ i+ R) M+ k1 m% t
复制代码

% ~7 {2 {1 ~( Z) [$ J9 ^/ X* s! _/ k: u4 ~0 L. K0 W- @- j* X
4 h# N% z: R- C: U( m  E
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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