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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑 : O8 e( ?" \3 j  q- t$ ^) B3 K
7 Q. y6 {3 Y# B; b: i# b1 |" A* @4 _
这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。5 d" {& {+ f- A& B3 d+ c% x/ F
对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数
$ e  Y; ?# w4 c2 c5 z) o6 p2 X5 M  d/ S

/ n, S4 i1 s. T* a8 }glGenLists的调用有4处,前3处参数为1,应该不是。. T; O! ?$ {" |. k& l! s- m
一下是第四处代码,这里应该就是生成字体的地方。
9 D( V4 b5 ?& b5 y; p从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。
6 f4 Y$ ?& ?( h; X" S
  1. int sub_40BEB0()9 V. u3 k& A# D4 Y2 {  B- ~. w
  2. {4 ]' n* J$ u& C7 v' z* v
  3.   signed int v0; // ebx5 q! n+ l$ t( {6 L5 W
  4.   int v1; // ecx
    4 z5 h# E6 E5 c8 D/ Y
  5.   float v2; // ST18_4
    1 l6 `/ P' q/ t
  6.   float v3; // ST1C_45 `1 U! \# l5 w
  7.   float v4; // ST20_4
    " ?+ f$ ~9 I2 r! D$ y8 \0 y; u
  8.   float v5; // ST24_4. r8 P; V+ W2 H7 ?
  9.   int result; // eax7 C9 M& a  w, N" n+ k
  10. # s  G# O; e6 ]* L& t
  11.   v0 = 0;
    4 ~  |* z' c; B: q8 G, |- D! X2 p
  12.   dword_4DF5130 = glGenLists(272);
    * Z, ^$ p) [$ m; D7 C& ?9 P$ {
  13.   do
    $ B  H# n. g% W4 d$ Z8 `
  14.   {9 u+ y6 ~0 m5 l
  15.     v2 = (double)(v0 % -16) * flt_483450;
    : j* j' a, o! r3 n; s% d
  16.     v3 = (double)(v0 / 16) * flt_483450;0 R* M8 L& S/ ^. E2 R" D0 j/ w- i
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);
    0 c8 @+ q3 G, v( Z4 H  A
  18.     glBegin(7);1 Q* |/ f7 f+ b
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));4 D; a! |# |& p  b+ t
  20.     glVertex2i(0, 0);/ _: X+ z7 D% o
  21.     v4 = v2 + flt_483450;
    ! y7 O# D- l1 _* h/ p3 w
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));
    , z# U" h  r: y# F
  23.     glVertex2i(16, 0);/ G3 ^' c) M5 t7 O# k
  24.     v5 = v3 + flt_483454;
    * @% A$ \; b- w8 C8 d" \
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));/ `9 E. t0 w" a+ A$ j, L
  26.     glVertex2i(16, 16);
    , ?$ \2 ^' w2 Y, W" V% |
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));9 y3 [% H# C  G3 ~5 n4 L5 r) k
  28.     glVertex2i(0, 16);& p+ ^- W  S6 Z/ j# K
  29.     glEnd();& R9 G% F8 K. U  `
  30.     ++v0;
    4 o$ k2 u) C/ a+ k
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);+ U3 N' B9 l9 B/ S- s# {0 y
  32.     result = glEndList();
    ) ~2 T: S/ V1 a
  33.   }9 b- O+ b$ o3 f, U: ]: |0 w4 ~8 \
  34.   while ( v0 < 272 );2 V7 @# k; E" y# N6 _
  35.   return result;5 P% Z% p) G, |; n, H
  36. }
复制代码
, j: \, Z8 t- g' v

4 A" |. M: i' \# r对glCallList的调用只有以下一处,) ^' {' ?. J. t( T; h1 B2 H) j
这是显示单个字符还是字符串的方法,待以后再确认。
: q5 P) z& A8 P( j: T2 H glCallLists(strlen(&v7), 5121, &v7);
$ x( r7 h: r9 U! c/ X- H. D9 G5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。
; u' Q$ j! }& o- T3 F: [; H8 i+ M
+ U* B8 ]( b  @. Q. ]: Y0 o$ s* P' c! e. g
  1. #define GL_BYTE                           0x14009 V5 a* `8 P2 I
  2. #define GL_UNSIGNED_BYTE                  0x1401
    6 S/ @$ c& M. T6 c+ i6 H
  3. #define GL_SHORT                          0x1402! N, o! i) A: F) n
  4. #define GL_UNSIGNED_SHORT                 0x1403
      ^: @( d0 T  j% A4 ~8 Y' v3 M
  5. #define GL_INT                            0x1404
      i) S( d$ q' B  {$ [
  6. #define GL_UNSIGNED_INT                   0x1405) }" |! p0 S8 Z' ^7 C9 L: j( s
  7. #define GL_FLOAT                          0x1406# V" [7 t5 u  n$ V+ o
  8. #define GL_2_BYTES                        0x14079 `- W# W) W) a9 F( y4 a/ r( }
  9. #define GL_3_BYTES                        0x1408
    . |* d! Z3 {# h: a8 Q
  10. #define GL_4_BYTES                        0x1409
    ; a: _# ^6 X5 O1 x
  11. #define GL_DOUBLE                         0x140A
复制代码
6 Y7 m/ }9 [9 L; a; k

5 k: [0 ~$ R) z  N( \

  1. ; {7 F, f3 H. T: _" @- N
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)& x$ p% d. a2 Q/ i( l5 \/ _
  3. {# o% r- A; b' \( O
  4.   int v5; // ecx1 O2 I5 Z; K2 g6 T7 m
  5.   int result; // eax
    ! d0 e6 f) w' Y; Z/ b0 P) {; }7 e9 f
  6.   char v7; // [esp+18h] [ebp-118h]1 O3 J# n: E. `% {( b3 F  a
  7.   char *v8; // [esp+118h] [ebp-18h]
    5 d' T) o( W$ m4 ~+ T, a9 m
  8.   int v9; // [esp+11Ch] [ebp-14h]% w  A. {8 B. U4 z
  9.   int v10; // [esp+128h] [ebp-8h]8 M  g9 d3 d4 [' }. h) k, U
  10. ( ~# b6 M6 z% z/ ]# O2 g) v
  11.   v10 = v5;7 L& t" m& f' L/ O. A1 P
  12.   if ( a4 )
    . U  {. l1 [/ N# Y' u5 ?
  13.   {
    1 R9 E, C+ h* l1 a0 ?4 Y
  14.     v8 = &a5;
    / i$ W# ]6 W" z/ ?
  15.     sub_41BA00(v5, a4);( S; l; }1 |& c
  16.     v8 = 0;
    # z2 G* O$ Z: }. L9 Y" n
  17.     glBlendFunc(770, 771);% h, t1 H+ u( }* h, g5 `8 G! ?2 ~$ W. t5 z* ~
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);. d5 i9 W9 o2 N: k8 Y3 |
  19.     glPushMatrix();1 a# B- H5 k9 X# T
  20.     glLoadIdentity();1 _5 Z4 J7 o  j* @
  21.     v9 = a1;/ y" H- K7 T# N  [  y5 T
  22.     glTranslated(
    7 z1 N  ]0 _8 D. d2 i
  23.       COERCE_UNSIGNED_INT64((double)a1),2 Y7 Y( G/ G3 V' M- k5 v
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,
    1 x" j& Q6 b& s+ l& q1 Z7 ~
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),7 h1 M( w. j# o3 A4 s7 D5 i
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,% F* Y, W! o% X- q1 \
  27.       0,; Y, |! H! @- ]& P3 a8 S  E! K; g) e3 y
  28.       0);
    5 b& Z5 p( X4 }4 [- o2 K0 a
  29.     glPushAttrib(0x20000);; z3 S- k) E! n9 |7 c; H
  30.     glListBase(dword_4DF5130 + 16);' E  U6 \/ M8 e, k' M/ I+ ?
  31.     glCallLists(strlen(&v7), 5121, &v7);
    2 u6 D7 y* n" e" g
  32.     glPopAttrib();
    - d% g: W# w' w# C
  33.     result = glPopMatrix();
    ( t' N1 s. o7 n: e# I( |
  34.   }
    1 G1 R" B9 O/ C$ g
  35.   return result;
    4 `9 a  T% S0 b0 M( `
  36. }7 x) k' D* M  \, J
复制代码

  {# g8 l- O; S0 w
  r- U4 y% v( v% O" K: b. t) L% ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

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