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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑
) z: w- K! |" v& Q4 v4 B; _) b& S
8 \+ e+ y2 j2 M( P% b' A3 D这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。+ `) |( y9 \$ c9 j. r7 E' o
对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数
4 e" `; P( J$ m) _! @4 n% V, v6 G$ c( b8 _3 R) r
9 Q, H. `+ t* `9 o
glGenLists的调用有4处,前3处参数为1,应该不是。
/ E7 }5 ?. ^& E! D! _/ F1 t一下是第四处代码,这里应该就是生成字体的地方。! m% }+ Z: P0 n; ~3 B8 y
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。
) \# [# y6 [2 ?: ~( P/ o
  1. int sub_40BEB0()
    8 Z$ Q# w+ w1 n5 l6 V0 |9 m" q
  2. {( g: _$ C! x: g" X( p
  3.   signed int v0; // ebx
    ' D: `8 [" y. a  @! P( m
  4.   int v1; // ecx
    / O5 d+ S/ [2 r. B0 F  j( G( K7 g
  5.   float v2; // ST18_4
    0 |! J( ^2 r0 L5 G" m0 k  W# S7 F
  6.   float v3; // ST1C_4
    3 M% ~6 C1 D5 p* v: K( a5 P3 o& x
  7.   float v4; // ST20_4
    $ K3 E/ ~# q9 W. Q  w
  8.   float v5; // ST24_4) x5 ~& R: N# O2 g9 N% k
  9.   int result; // eax. Z, X/ G3 S% ^4 O+ a1 ^/ @/ b* j1 i' K
  10. 0 m& ~; [" x$ M' v
  11.   v0 = 0;
    7 [+ Z5 L- S. \8 {% _  d! R
  12.   dword_4DF5130 = glGenLists(272);
    , s& M; H  ^8 c
  13.   do
    ( Y+ L9 b: p; Z  c/ v& l. B
  14.   {' n' X' e8 E8 U
  15.     v2 = (double)(v0 % -16) * flt_483450;; p% a" h* C( F4 k+ V
  16.     v3 = (double)(v0 / 16) * flt_483450;0 `3 m: ]& R3 ^3 }4 ^' p/ U& L
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);
    " i1 S: A3 Z# W' p7 a6 t
  18.     glBegin(7);
    : y+ E; k4 J; k9 k8 Z7 }
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));0 ]$ g, p, V9 r1 d- b* n2 n
  20.     glVertex2i(0, 0);
    ! r2 s$ h0 m3 u" X; T2 S6 D3 x
  21.     v4 = v2 + flt_483450;
    & H: E) f/ c9 X; F
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));
    - @1 V# T; _: s
  23.     glVertex2i(16, 0);
    ( U! B6 K% J3 D; K( ^( c3 D
  24.     v5 = v3 + flt_483454;
    : J* h$ g# D( J' B' P6 h9 g& P
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));
    # v: G) c/ m$ d/ V; @
  26.     glVertex2i(16, 16);5 F9 I7 S) I5 W4 [' d* V2 h" c
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));
    ! s# S. g" r5 `1 q* x) j6 T
  28.     glVertex2i(0, 16);
    & c5 O. j/ e$ d4 f" o; k
  29.     glEnd();' C' ?6 Q# g$ Z( v* X& E
  30.     ++v0;
    2 L. n* O5 E8 R  U7 O( \
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);( K1 v: x. L* ^, X0 U
  32.     result = glEndList();
    ' J2 K+ {6 r7 N& |. q
  33.   }
    ( J8 {& m) \% S6 s: G( g
  34.   while ( v0 < 272 );& N7 q. x4 z+ l
  35.   return result;
    & n3 S- I' T4 p8 R3 T
  36. }
复制代码

# K2 v: Q" Z7 Q( E
2 ~/ R6 T( L  g  Z  L对glCallList的调用只有以下一处,
% ]" N  {$ j/ y' B这是显示单个字符还是字符串的方法,待以后再确认。* `/ h6 W1 O) f5 B! n
glCallLists(strlen(&v7), 5121, &v7);& @) Z4 R1 Q* D; m9 o% l
5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。
6 \, c8 u$ Z: R# n$ d- a) B) q5 n" W( L/ E  K: l+ ]% {
  1. #define GL_BYTE                           0x14002 O& c7 G9 S4 s0 `. R7 W
  2. #define GL_UNSIGNED_BYTE                  0x1401! x9 \0 F& M! C9 f
  3. #define GL_SHORT                          0x1402
    & `  U5 D+ J1 [# u7 A& a9 A
  4. #define GL_UNSIGNED_SHORT                 0x1403' ~( ]  r' V% c+ T$ W5 K% }3 O
  5. #define GL_INT                            0x14045 O* @$ b4 D- M+ c
  6. #define GL_UNSIGNED_INT                   0x1405/ I* t8 J. l# H/ w8 d5 h
  7. #define GL_FLOAT                          0x14061 A, X: Q4 \& a9 v* i. s
  8. #define GL_2_BYTES                        0x1407% F# v) a* i' h: R7 L0 |6 x0 q3 f; [
  9. #define GL_3_BYTES                        0x1408
    ; R2 F' K1 K) O2 {; [% j7 ^6 h
  10. #define GL_4_BYTES                        0x1409
    5 R1 i" g( E, j" @$ X1 q
  11. #define GL_DOUBLE                         0x140A
复制代码
5 C' Y9 s7 }9 N! A5 C1 W+ a
# `3 i8 H0 r& v+ Z+ C# f0 ]1 i

  1. " f4 W$ @7 t% Q9 C& H# W
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)! c" o4 c  e0 c9 w( r0 X$ L' A
  3. {
    # ?# Y1 c4 q: r1 s( O  N* f& I
  4.   int v5; // ecx3 ]) O- y3 s% F& C) ?2 ^" L' d1 U
  5.   int result; // eax
    + P4 i9 |! Y. v* h; U# ?! ^, H. M: ^
  6.   char v7; // [esp+18h] [ebp-118h]* `4 X* v5 b' C0 j+ B
  7.   char *v8; // [esp+118h] [ebp-18h]
    # _/ M" |8 u! _  B* u
  8.   int v9; // [esp+11Ch] [ebp-14h]
    # S# s& a) r$ i! g
  9.   int v10; // [esp+128h] [ebp-8h]; U, ?& H% G1 z7 ^

  10. " Q# |1 J! Y& G
  11.   v10 = v5;" m8 k, J1 s8 g
  12.   if ( a4 )" X5 }9 y/ U( v+ o
  13.   {
    % O# l0 S4 s) Y/ r+ I; Y8 x
  14.     v8 = &a5;
    4 a% ]$ v6 V3 ]2 o+ R
  15.     sub_41BA00(v5, a4);
    4 u$ q' s+ k+ G3 X( P, s6 {
  16.     v8 = 0;3 ^1 o; I8 z2 {/ f. }% M( W1 ]3 c
  17.     glBlendFunc(770, 771);
    : H( T0 n, N1 v5 _" h- r- B
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);
    0 K, z1 I/ s+ ^6 |/ @" Y7 l
  19.     glPushMatrix();
    . u' `- X  M! p; t# f
  20.     glLoadIdentity();
    " {& r- @* ~0 v; g4 Q2 A
  21.     v9 = a1;
    " G& u7 o# @! m: d+ y& M1 ?
  22.     glTranslated(, o5 Q+ E( k! O% v7 x- b7 k( f
  23.       COERCE_UNSIGNED_INT64((double)a1),* W, C1 i1 _' k3 u
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,
    ( A' h3 n. ^* U- r: f/ \
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),
    9 \$ M- H7 L4 Q) Z& i$ y
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,, Q0 W: I! {; j8 n% O
  27.       0,8 D: X5 A: }) {% Z- i  M
  28.       0);
    7 [. M, l4 O  @% K2 N
  29.     glPushAttrib(0x20000);! E% w4 o/ N& \; s; S* @* Z
  30.     glListBase(dword_4DF5130 + 16);4 P/ d; i0 H+ G; U0 v" j7 v
  31.     glCallLists(strlen(&v7), 5121, &v7);+ f1 `6 I4 c& \8 X. u1 y$ E9 h
  32.     glPopAttrib();
    / b- n' E' U. o0 D. K  [$ M) z
  33.     result = glPopMatrix();
    ) O( k8 F) l: p# \* o  B! z4 w
  34.   }3 d+ [/ r! ~, Z
  35.   return result;7 Y* ?: \  P8 I7 q+ Y9 a
  36. }
    ( @2 l$ _) |" R- T6 z1 e. e/ Q
复制代码

  w) a, t) P, T
  s6 K9 L. ~# i5 n" h% q. v3 s7 S5 w5 u8 N5 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

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