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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑 8 U# v4 {. U4 i

! G9 G% S- O. F. P7 s7 |3 X这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。
. b6 I: T3 v4 z6 H7 A% r0 Z% i对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数
  t. J. X* g- _
! q+ Q/ Y9 X* h
4 P& A) V+ {8 P$ O( CglGenLists的调用有4处,前3处参数为1,应该不是。
6 M& t- e; {0 g# M7 N! b: T一下是第四处代码,这里应该就是生成字体的地方。0 _9 e* [3 Z9 C7 ?$ Y6 w3 [
从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。0 l7 k2 \0 c& g6 b% c# ]" }
  1. int sub_40BEB0()
    " K& J# `; q3 Q
  2. {
    * j+ C/ w/ a) d+ n, L) V5 ^6 \
  3.   signed int v0; // ebx+ s2 j3 ^& P4 C( A  ~
  4.   int v1; // ecx5 n) o) W! x  @5 W
  5.   float v2; // ST18_4" @5 r: f8 A. X7 A% @$ E+ ^
  6.   float v3; // ST1C_4
    & ?. \5 w. t" C4 h2 p( x
  7.   float v4; // ST20_4
    # m# j" G) h+ ^) H
  8.   float v5; // ST24_4  _0 B. W1 k& R
  9.   int result; // eax1 i( B4 O; D% a8 w

  10. ) X; u: y- ]. L% _8 l3 ]9 R
  11.   v0 = 0;. K( s5 W* U9 |2 z  H. N
  12.   dword_4DF5130 = glGenLists(272);
    ! p+ k& i; O. m# U: Q
  13.   do5 H; ]3 B! L/ c, S# r( G
  14.   {  I: c0 g: j& a7 l8 C0 H( c
  15.     v2 = (double)(v0 % -16) * flt_483450;- v0 e, c3 U' G7 C. `& K
  16.     v3 = (double)(v0 / 16) * flt_483450;
    . q0 O0 b' |( [& |
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);
    ; v. u/ X, @) {/ \6 ~' z
  18.     glBegin(7);. Z5 z. V" ?0 }5 b6 j* K. X
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));. ^( q. J- z2 f9 P& q, H
  20.     glVertex2i(0, 0);1 I6 h0 ?% p6 c/ w' @# E' a- M
  21.     v4 = v2 + flt_483450;* B* K+ ^+ L/ A" t& E* X, a
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));1 g8 ~0 m2 q+ f, v- P) i3 t* E
  23.     glVertex2i(16, 0);" e  ]1 A- r8 b- K6 l( U, u
  24.     v5 = v3 + flt_483454;
    " q9 |, h& p# A' T0 N
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));8 M6 G& v2 i4 ?
  26.     glVertex2i(16, 16);' m6 r4 _) [; S+ h( T' N
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));2 C9 w3 g; g$ k6 b; P
  28.     glVertex2i(0, 16);
    ! ], J# p1 t* j0 a4 I' P5 J' c0 }
  29.     glEnd();
    ! }' o; H0 |! H& v9 c  L* A
  30.     ++v0;
    $ G0 z3 b' `$ j# O
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);
    & X; x  A4 B, Z$ r
  32.     result = glEndList();* u6 h1 X* D4 W% l/ Z
  33.   }. |. a1 a7 t- c! W! V
  34.   while ( v0 < 272 );
    - }- I  y! f( J, m; C7 M$ ]  S
  35.   return result;
    / I& O6 t6 H% G3 ?
  36. }
复制代码
  i  _( W; `7 v. n' ^7 w* s# J; y  F/ T

- j$ s- s( i8 p& _* T对glCallList的调用只有以下一处,8 A  h% [5 M! c$ e+ l* o
这是显示单个字符还是字符串的方法,待以后再确认。6 C4 S( {/ X* `$ G2 ?4 @: e
glCallLists(strlen(&v7), 5121, &v7);, b, G1 S6 o1 B- Y# m
5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。: S1 C4 {' H* n9 t0 x
: {' Z! e+ h8 {* z& n
  1. #define GL_BYTE                           0x1400
    % C  U1 k2 E1 P  D4 q
  2. #define GL_UNSIGNED_BYTE                  0x1401. U$ S1 W+ @6 a! L# R+ f, Y. x
  3. #define GL_SHORT                          0x1402
    9 c* q. p2 j: M8 |
  4. #define GL_UNSIGNED_SHORT                 0x1403
    , {$ \7 F  c# l2 c
  5. #define GL_INT                            0x1404* `# J' _2 N9 F
  6. #define GL_UNSIGNED_INT                   0x1405
    : R( c8 Q) O! ?
  7. #define GL_FLOAT                          0x1406, A. v" z" }$ f$ U& r0 A4 K
  8. #define GL_2_BYTES                        0x1407
    " m* {& a( D6 @1 _8 n( E
  9. #define GL_3_BYTES                        0x1408
    # i3 A# R$ R2 N% U5 X
  10. #define GL_4_BYTES                        0x1409  S* E9 @2 O+ v9 M! O
  11. #define GL_DOUBLE                         0x140A
复制代码
1 S1 G& k. R9 C

" i- M$ n4 ?5 s1 i8 P

  1. ) P  d# g5 @9 E. H
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)
    ( q$ Y% w$ ^5 ^5 q% X* q& ^6 _) ~1 f
  3. {
    . r, s- Z' V+ M* V1 Y" R. H; y! a
  4.   int v5; // ecx
    & Q0 G: S, ?5 l# H  [
  5.   int result; // eax
    $ t1 G% ^6 H8 v# ?0 l% X3 ?
  6.   char v7; // [esp+18h] [ebp-118h]
    % A$ ?( |; F  y5 y
  7.   char *v8; // [esp+118h] [ebp-18h]
    # ]/ f8 S1 L) ^9 N* M1 O) a/ n1 \
  8.   int v9; // [esp+11Ch] [ebp-14h]: x1 ?8 S! \1 f+ I( _, X9 L9 P
  9.   int v10; // [esp+128h] [ebp-8h]2 G1 v0 U% x0 ^; A- F0 F

  10. 6 @7 l8 z  h; y7 b, M
  11.   v10 = v5;
    * \, D$ }5 w4 e" n* d" v9 D: R
  12.   if ( a4 ), T! P& M( q; G& k( a0 Z. j4 ]  A
  13.   {
    % w6 q( K& R# P* c0 M& s
  14.     v8 = &a5;" ~% z6 ?/ r5 u
  15.     sub_41BA00(v5, a4);
    7 f- ^, H& L; g8 V
  16.     v8 = 0;
      ]5 s- V6 A! |8 J( G/ F
  17.     glBlendFunc(770, 771);! x# f6 p) ]) [, x# W
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);
    + M% d  K& }) H+ ~
  19.     glPushMatrix();( S& j* U% C6 \! K5 \1 L$ _2 A
  20.     glLoadIdentity();
    # Y- J! A/ ^- X$ [& e, s  r7 t
  21.     v9 = a1;- G7 i, w* n! P" W; N8 l% U( j0 Y, b6 n
  22.     glTranslated(% H$ v( V& _; G& c! v: n" m  F
  23.       COERCE_UNSIGNED_INT64((double)a1),. w: g: g- @, }
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,
    3 B& \  J  @: H* A  o
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),9 Y- w( l3 `% p: i, `$ v
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,
    - Z- c5 `' A: U9 U5 h1 F. B
  27.       0,) P( j- U, e# t
  28.       0);7 t6 G2 u4 r5 _* q9 N8 Y
  29.     glPushAttrib(0x20000);1 Y% F& a0 P4 Z* R+ ~
  30.     glListBase(dword_4DF5130 + 16);
    " l( U% g! I/ N. z7 `8 ]1 e% y, {
  31.     glCallLists(strlen(&v7), 5121, &v7);, I0 d  [5 w, _
  32.     glPopAttrib();+ ~: e% M/ P4 F" Q0 \
  33.     result = glPopMatrix();
    . P8 i$ p" R) i  m# }6 G  h
  34.   }
    8 ]- Q* j0 n& X8 B% R- p; y
  35.   return result;
    : d  P( Z8 O. b# w) I  _7 G" ~# y; b
  36. }0 n7 t( n- H/ J+ o$ ?3 J: q
复制代码

; N* u0 [: N: z& P3 ~) R! o( t- A8 |
! S: Q3 s' v& a4 r
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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