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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑 ; J( n" n; o% F4 b4 [& b
8 U: `! t5 q1 j1 y! j* C
这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。6 E% G$ H: g5 d9 w% k
对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数7 `. z* {, m: e

3 S' f  D$ W9 h+ Q  J  j
$ a* l( |! n" T, N- YglGenLists的调用有4处,前3处参数为1,应该不是。; z) v" u3 J$ y# M. w3 p7 M$ F
一下是第四处代码,这里应该就是生成字体的地方。5 }( A; }5 U1 o+ n6 z) Y
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。
& S3 Z4 E4 |8 _
  1. int sub_40BEB0()$ w  X& j8 r2 a% w6 `& j" k3 i
  2. {' z# P" _( J, T# ]1 v& _1 L$ F: X
  3.   signed int v0; // ebx
    ; v$ }- K$ u7 i  L& _, c
  4.   int v1; // ecx
    ; x" r4 |9 W1 e" F7 F
  5.   float v2; // ST18_4
    4 G; Q( R6 P1 o1 b1 \* d/ ]
  6.   float v3; // ST1C_4- L" O9 h6 \. H- l
  7.   float v4; // ST20_4
    ) Z4 Q& N, ]  ~, m
  8.   float v5; // ST24_4
    # j9 u* o' J0 o7 y0 R# [9 ]
  9.   int result; // eax% X$ ~6 J0 U. F% D: s# g0 E* N
  10. & C$ \' d8 H+ }" w
  11.   v0 = 0;
    & a# q; m! z8 g; S
  12.   dword_4DF5130 = glGenLists(272);
    9 d( S, S/ v1 k9 p+ A6 `* E
  13.   do
    ' |$ Q: w% I  E
  14.   {3 r! ?* w  J6 H3 Y7 m; w& l. c
  15.     v2 = (double)(v0 % -16) * flt_483450;' g  B# p+ R, }7 L! ~
  16.     v3 = (double)(v0 / 16) * flt_483450;
    4 `4 Y, U/ i% t( ]: I3 V9 S; E
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);
    4 I( u# j) }3 k9 s6 g& d* [
  18.     glBegin(7);; ^5 u$ w/ t% L3 \  f
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));+ P; e: ]" _1 C3 n" ]
  20.     glVertex2i(0, 0);. q1 T' z4 ?/ t. E' T
  21.     v4 = v2 + flt_483450;
    1 a7 U% p$ g3 P4 y  E+ z# b
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));
    # X$ Q$ o, u+ k
  23.     glVertex2i(16, 0);
    % L8 J* s6 q! V& @5 ?, U
  24.     v5 = v3 + flt_483454;
    , b% o0 s9 v. O
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));4 P) u% Z& ~3 a+ h
  26.     glVertex2i(16, 16);
    " y5 H1 J! C( |
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));
    ) @0 C4 d& S: y; o0 z7 @$ m3 m
  28.     glVertex2i(0, 16);# Z; \6 M/ a9 K8 _3 E$ X9 k
  29.     glEnd();
    ; t( }* H$ }2 E
  30.     ++v0;
    " I: `6 K. B5 H- t
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);1 t2 Q; r8 V/ R  W" @! e
  32.     result = glEndList();- ~& `% }% ?0 @
  33.   }
    - J  Q0 f( U7 [- `$ j
  34.   while ( v0 < 272 );
    - ]$ J& q' X; y
  35.   return result;7 A0 o/ Y" Q: l1 ~; z  R
  36. }
复制代码
, o3 ?' m' r! l5 _6 [; ~
" Q& k" b3 ^- L! f% x( v  U. B: T
对glCallList的调用只有以下一处,$ [8 x4 {  c" K& Y- H, U
这是显示单个字符还是字符串的方法,待以后再确认。) Q% [5 r9 y$ o$ O' e" f, z
glCallLists(strlen(&v7), 5121, &v7);
7 V, ]5 p! ^( Q- u4 b5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。4 G0 x/ W3 Y8 M
0 D) G, @  ]3 N
  1. #define GL_BYTE                           0x1400
    ) o: y& M6 {% v9 a$ I: _, \4 P+ _# b
  2. #define GL_UNSIGNED_BYTE                  0x1401# R% q# u$ E3 h% a" u, }. D
  3. #define GL_SHORT                          0x1402  H5 |, a! Y, }4 g
  4. #define GL_UNSIGNED_SHORT                 0x1403
    ) A* J* c+ v' g( E
  5. #define GL_INT                            0x1404
    + }* U) N$ S8 J% {3 V& U% \
  6. #define GL_UNSIGNED_INT                   0x1405
    4 d2 w4 k: T) \* l/ U' W
  7. #define GL_FLOAT                          0x14066 o0 d" z2 M( a4 k* F  M2 U6 T9 x
  8. #define GL_2_BYTES                        0x14070 M% \6 }* z+ _' Q. }
  9. #define GL_3_BYTES                        0x14083 D( K7 c* k( i; C- J2 ^
  10. #define GL_4_BYTES                        0x1409# x- q3 e, g1 m+ X' E
  11. #define GL_DOUBLE                         0x140A
复制代码
0 R+ }4 z% D/ T+ k" \
* u8 n) w3 `+ V8 z
  1. 4 g+ c; N5 n* u) ~* ]. y/ u& [: m- \
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)
    # ?6 d% ?# i( {; V+ j9 [  U$ |
  3. {5 M& t+ x# A/ Y" g. s0 X# |) j6 `
  4.   int v5; // ecx
    3 j; D! p9 S6 t  |0 B) t) n
  5.   int result; // eax4 l/ @0 Q0 T! f" e9 s7 r2 O
  6.   char v7; // [esp+18h] [ebp-118h]7 ?+ Z6 `! c5 S# x' a
  7.   char *v8; // [esp+118h] [ebp-18h]
    * i2 t. q* c- ^& ~! y
  8.   int v9; // [esp+11Ch] [ebp-14h]
    # ~, U) C+ ?! g4 z+ j) R* m/ T
  9.   int v10; // [esp+128h] [ebp-8h]( l' ?6 V' [$ i( M; V/ a; M
  10. ! L1 d) n* @! x: d0 y3 U
  11.   v10 = v5;
    0 @6 A  h6 S  T/ _8 P+ v: P' q
  12.   if ( a4 )6 l- a, U; v- n; y/ y: g$ x  @
  13.   {
    ) t5 ~7 F' w9 u1 J' H
  14.     v8 = &a5;
    # O7 K2 R8 k6 h# q4 v" f6 {1 z/ I
  15.     sub_41BA00(v5, a4);
    % u. x2 ^& N' @0 J
  16.     v8 = 0;4 d' K- _' u1 X, @0 j  O) e
  17.     glBlendFunc(770, 771);; u$ r0 Q3 n. X5 W, O8 }, e4 H: n2 X8 B+ t
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);
    $ O' ~0 f8 c) M4 s
  19.     glPushMatrix();( j* J/ h# ], o. W; c
  20.     glLoadIdentity();' D0 ]7 E* [9 {* Q5 x
  21.     v9 = a1;
    : J5 ]! D9 Y) ^! I0 b0 N) S7 Q- G
  22.     glTranslated(. D0 d/ O6 u( V" Y4 b
  23.       COERCE_UNSIGNED_INT64((double)a1),
    + V; O2 U" F4 s' l; E7 `  ]
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,
    3 V  c6 L: A: i5 m1 f: }) A
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),! T' k3 m' g# A- g# }! v7 O
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,
    , C' P5 ]1 r6 J# f6 I/ {3 D& |
  27.       0,. N% v5 c8 `/ ^3 e/ P
  28.       0);
    2 S( L0 a4 _# a, f: l/ ^
  29.     glPushAttrib(0x20000);
    ! y  }- L- O6 d4 n3 @+ Y
  30.     glListBase(dword_4DF5130 + 16);
    # y" ^0 ?. n: @. r% c
  31.     glCallLists(strlen(&v7), 5121, &v7);
    7 m# k: Z# z; r
  32.     glPopAttrib();  n. u8 g; T0 {7 X# X$ ]
  33.     result = glPopMatrix();
    " l4 h9 X" w) w5 T1 C2 M2 k1 `
  34.   }+ r0 k# T/ ~' u; G
  35.   return result;
    % }/ o' v  e6 ?& H
  36. }
    * R6 c  I8 [/ ~
复制代码

3 Q# _2 s3 \4 q# j) l/ e) I; E8 c5 F  ~. w% e+ k# v

* [4 T# _8 z+ o5 {1 q( E
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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