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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑
! E7 d- w- q1 p0 U8 J5 ^' [& k
; K2 i) w0 z7 i  Z$ x这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。' v# _- F/ X; a7 ]
对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数  O4 n( A  o+ L% X' `1 J
/ L, b2 n2 w. h" t" A- a/ Q
  S! R3 a- J5 g# n. x
glGenLists的调用有4处,前3处参数为1,应该不是。
' J% ^- h( W$ l8 I* [9 P一下是第四处代码,这里应该就是生成字体的地方。9 s+ L8 K" b" u7 r3 i6 r
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。+ t( b5 ~# S6 R+ w- {: s
  1. int sub_40BEB0()
    ( l  j8 D; k- c+ b6 j* Y
  2. {
    / g/ s, v4 \, ?1 R- q
  3.   signed int v0; // ebx
    ( Q* ~$ W  S+ K, s+ C$ u
  4.   int v1; // ecx6 Z2 H9 V. y2 B9 F& v2 c' w. ~
  5.   float v2; // ST18_44 v# n+ _0 W, n) o) e- s
  6.   float v3; // ST1C_40 F# u/ j* ?3 h
  7.   float v4; // ST20_4* W! f% p7 n' i2 S8 c
  8.   float v5; // ST24_4
    7 G* p8 y. I( F) n" E2 ]# v* `& ^
  9.   int result; // eax  \) P0 y6 |; A2 d1 k# [- g4 |

  10. 4 H/ U2 y" ~  J
  11.   v0 = 0;
    ! V& B  z6 i7 }2 U; p: c
  12.   dword_4DF5130 = glGenLists(272);
    ) e' N3 D' L% ]
  13.   do
    ; m  |$ B: U+ z) K  }
  14.   {3 S) L( s; S  O9 P5 K2 r& O! m
  15.     v2 = (double)(v0 % -16) * flt_483450;+ l" v3 s+ T4 \" @
  16.     v3 = (double)(v0 / 16) * flt_483450;* {" q) X% F# j" e
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);+ x' z: C# b3 e: x, M& v: w
  18.     glBegin(7);' }2 Y  a8 y+ y6 R- i3 Y' Q
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));
    / Z6 F0 Z" \' N4 g
  20.     glVertex2i(0, 0);& }5 w; A2 Z2 f; A
  21.     v4 = v2 + flt_483450;
    0 D2 c( |% H, S4 a' b! W
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));
    $ Y) {/ X- {9 `& ?1 j
  23.     glVertex2i(16, 0);
      t; `4 O" R9 J! X! @- r4 U
  24.     v5 = v3 + flt_483454;
    % t# s/ k+ I1 e" _
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));
    + V" F* z* R! r% X* e6 Y& j
  26.     glVertex2i(16, 16);8 T1 [& e# e& O: t2 Y% o
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));4 a; U, {1 k" R# y' V
  28.     glVertex2i(0, 16);
    6 i; F1 y% `, `- L( N
  29.     glEnd();
    , T7 P8 F2 a/ H! y! K: ]+ r
  30.     ++v0;$ T! ?* I; V1 D! @, n$ ~6 a
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);
    3 T  K5 O0 Z3 d
  32.     result = glEndList();$ e) p4 V  e9 ?6 g5 W
  33.   }
    5 U" k" Y( R, d- {% I9 h+ |+ r
  34.   while ( v0 < 272 );8 a8 H) x, [$ I' I" h$ F
  35.   return result;) |8 s" h% M) I# ~8 @
  36. }
复制代码
* a2 g& M, d; n3 D

& H6 Q& A+ t' Z% `对glCallList的调用只有以下一处,
  W* m+ F/ p; L( r$ O这是显示单个字符还是字符串的方法,待以后再确认。! S! h  ?  w0 o
glCallLists(strlen(&v7), 5121, &v7);
- B: E9 J$ \9 h; g5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。0 q2 W* j7 J& H/ P! t5 d! e

7 m( p  z5 R+ T5 @% |
  1. #define GL_BYTE                           0x1400
    9 n* B: |- t- _: i* ~. f
  2. #define GL_UNSIGNED_BYTE                  0x1401
    : C8 K& o6 h6 i# @/ ^/ ^, R8 [
  3. #define GL_SHORT                          0x14026 e1 Q' i; K; _& Y- {
  4. #define GL_UNSIGNED_SHORT                 0x1403
    + {( o9 z* O8 H) }9 {
  5. #define GL_INT                            0x1404
      V. D  ?" p( J1 V7 t! s
  6. #define GL_UNSIGNED_INT                   0x1405) c  J+ R" ?0 b- u1 ]/ Z# x* [. K
  7. #define GL_FLOAT                          0x1406
    ; S+ Z( W3 F- [4 ?' w# v& C( e
  8. #define GL_2_BYTES                        0x1407' k0 R) x/ t1 Z! e% u
  9. #define GL_3_BYTES                        0x1408
    0 X1 T7 R, h% [, |( w/ P0 ^+ I1 k
  10. #define GL_4_BYTES                        0x14098 b# H8 I4 }3 _! m
  11. #define GL_DOUBLE                         0x140A
复制代码

6 R+ W+ ?/ ~+ z  K. C, o' H; \2 t( L* l
  1. ! U! k6 g# b+ h
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)
    7 b- k. d$ ]3 ~
  3. {( {/ X9 O& v. w0 Z1 ~
  4.   int v5; // ecx+ O3 C8 V  D! H3 B
  5.   int result; // eax; S# z5 j6 r# x4 J4 f
  6.   char v7; // [esp+18h] [ebp-118h]
    6 p2 f% ~7 P  H3 r) D. O' S
  7.   char *v8; // [esp+118h] [ebp-18h]
    - d+ L0 s/ d# {6 k
  8.   int v9; // [esp+11Ch] [ebp-14h]
    5 m4 d4 T; b' p9 g" n) N
  9.   int v10; // [esp+128h] [ebp-8h]
    / S9 t: f" A/ j6 \
  10. $ @3 B1 V2 }8 g4 {0 H
  11.   v10 = v5;: _9 D( y8 {. ?8 t( P1 V
  12.   if ( a4 )& D0 k2 n2 q* Y; b) m
  13.   {8 {' a( q- {# \; o7 j/ I
  14.     v8 = &a5;" D! m+ X* I/ H3 ?7 j
  15.     sub_41BA00(v5, a4);
    8 z! I4 Z. E+ f, N$ W8 L8 N2 c* }, b$ J
  16.     v8 = 0;
    0 a/ V4 {. F3 \$ y1 j% ^
  17.     glBlendFunc(770, 771);
    4 O- \& N$ {0 l
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);* m1 H/ l" q2 W, K
  19.     glPushMatrix();- L5 t: `. }" P  D- q
  20.     glLoadIdentity();7 k7 I0 F8 q% q% S
  21.     v9 = a1;
    , y8 ~/ {  {- C  A
  22.     glTranslated(
    ; k, ]! p3 F2 F8 H8 Z" _
  23.       COERCE_UNSIGNED_INT64((double)a1),
    3 t6 {/ M, r4 k8 ?, K# L
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,
    ! Z4 W5 `1 W" O; q8 k5 w% o) N
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),
    + E5 Q( Y* N: ~! }/ D/ q% u
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,
    3 ?* P- V# a. [* W9 g, r3 a8 Z
  27.       0,
    ; W5 _2 q# n. E9 |, a- D* A* l' H
  28.       0);  ~0 A. m* P. |) i. R- S9 r0 B
  29.     glPushAttrib(0x20000);* V9 g5 a9 @7 o& k
  30.     glListBase(dword_4DF5130 + 16);
    % ~& s; u* ]. C0 B5 v
  31.     glCallLists(strlen(&v7), 5121, &v7);& g3 d. Y/ @) B4 a* E- O, \
  32.     glPopAttrib();, V  v7 R# G3 b# ]1 m
  33.     result = glPopMatrix();( T4 O( w- A4 U) A7 O8 R
  34.   }
    2 P  L9 L- H, o0 W1 L6 c
  35.   return result;
    + f$ p! L9 H% d; \+ {
  36. }
    & }, X1 p/ M& s; h/ ^. j
复制代码

+ j% ?2 P! Z) n8 U
5 D* y% O5 U! D9 R; ?5 j5 {0 U/ ]$ S- o
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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