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

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

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

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

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

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

本帖最后由 shane007 于 2023-9-4 18:48 编辑 ) |: Q3 |( p+ j% J" g
! f+ Q, `: h4 J
这是个opengl引擎的游戏,对opengl的初始化是在scream.exe里边完成的。
/ L4 v$ S. S3 I$ }. l, V0 r对于opengl的游戏我们主要关注glGenLists和glCallList这2个函数
/ h7 A3 ~) c3 s) p& c" X) N' Z. _( j$ N5 y2 l
6 ?3 ?$ X1 g- a! I& D3 M# {7 N
glGenLists的调用有4处,前3处参数为1,应该不是。/ _6 S8 u8 v. `% L! {
一下是第四处代码,这里应该就是生成字体的地方。
( V  a1 @' J5 z" g+ L6 ~5 J从代码里可以看出,字体材质长宽各是16各字符,共256个字符,此处要修改。( K: c4 K7 K- d2 C- v3 U! F
  1. int sub_40BEB0()
    5 S# \" F9 I. a+ d2 {  R5 D! _9 ^
  2. {% a. S7 K$ g( J7 j7 h  ]" P
  3.   signed int v0; // ebx- P) ?1 c$ p  [9 V
  4.   int v1; // ecx
    ' ^+ s- Z7 G& W" S3 s% e/ c9 n5 N
  5.   float v2; // ST18_44 u& {3 [1 w! u5 Z
  6.   float v3; // ST1C_4/ I/ L" \- a9 |* }! D4 K( u! P
  7.   float v4; // ST20_48 d/ I5 W. U9 i3 m$ g. s- d' g) e1 ]2 E
  8.   float v5; // ST24_41 v- j; B6 w3 \) p; c
  9.   int result; // eax
    4 @, e, R" L1 V+ _& Z1 J
  10. 9 E  W# E( u- |$ s: I% w
  11.   v0 = 0;9 _* `; |% X& s9 P
  12.   dword_4DF5130 = glGenLists(272);1 U0 |: {  o% T/ ]8 n
  13.   do
    ; N5 c* `% i6 D8 h" {
  14.   {
    3 w( H8 M+ @3 z2 T5 l
  15.     v2 = (double)(v0 % -16) * flt_483450;
    2 ?# f! z0 y: O% Q8 z* h6 A1 b
  16.     v3 = (double)(v0 / 16) * flt_483450;
    9 Q4 n# }, h! \
  17.     glNewList(v1, v0 % 16, v0 + dword_4DF5130, 4864);- O* Q# g! n! l$ W7 S
  18.     glBegin(7);
    1 t# A# a0 J+ X" n
  19.     glTexCoord2f(LODWORD(v2), LODWORD(v3));  z5 d; J% m2 b, d, F; e
  20.     glVertex2i(0, 0);3 _/ ~2 X, T  a' `% ]/ G- m1 ~
  21.     v4 = v2 + flt_483450;
    8 r6 _8 i# n" |
  22.     glTexCoord2f(LODWORD(v4), LODWORD(v3));
    + p9 l! h  ^- S9 E
  23.     glVertex2i(16, 0);
    , N& t1 _" R0 X5 P1 t
  24.     v5 = v3 + flt_483454;
    6 M  ]$ M! `- X" H# k0 J9 M
  25.     glTexCoord2f(LODWORD(v4), LODWORD(v5));' R8 X7 o5 U' Z0 d3 M* L9 j
  26.     glVertex2i(16, 16);
    7 {. H( m+ J9 v' q* U" L
  27.     glTexCoord2f(LODWORD(v2), LODWORD(v5));, O! @0 I% U6 t
  28.     glVertex2i(0, 16);  r+ u) x, o# h4 H
  29.     glEnd();
    & z% v8 S7 o2 j; O+ E
  30.     ++v0;3 s# Y) Q, }: z2 q. r
  31.     glTranslated(0, 1076101120, 0, 0, 0, 0);; g! g( a" D' s& B
  32.     result = glEndList();
    8 {, p7 y) n5 R
  33.   }' N2 r; C8 |2 _7 Y
  34.   while ( v0 < 272 );
    0 ?7 N% ]5 g9 [5 k& u9 W
  35.   return result;
    " N, Z0 o2 u7 n0 P0 i2 X6 @- ~5 _
  36. }
复制代码

9 Z* A& [9 N% S; U3 K/ z9 W7 h, N
对glCallList的调用只有以下一处,4 T1 z6 q1 `3 f; q
这是显示单个字符还是字符串的方法,待以后再确认。
! m0 e# \+ `: B1 ^7 v+ u( o. R# u glCallLists(strlen(&v7), 5121, &v7);
6 d8 s; T7 c; S2 L* O5121为0x1401 ,即 GL_UNSIGNED_BYTE ,是单字节。2 p. _, A* C( s6 [
6 a  r/ `- m" H" u0 L% {- W
  1. #define GL_BYTE                           0x1400, @% M/ d1 b6 ?2 X
  2. #define GL_UNSIGNED_BYTE                  0x14019 O2 O' j1 b0 B5 b2 R& U
  3. #define GL_SHORT                          0x1402
    ; g) v' I% l$ F% @) X
  4. #define GL_UNSIGNED_SHORT                 0x1403
    % u3 E& v  e0 C8 _8 I, {3 i5 N
  5. #define GL_INT                            0x1404" B  Z% R1 O/ |. v
  6. #define GL_UNSIGNED_INT                   0x1405( f8 f2 g# u' [$ D  q; y+ q4 X
  7. #define GL_FLOAT                          0x1406( f% M( p4 s" ?. I* [) o
  8. #define GL_2_BYTES                        0x1407
    & L8 P3 Q# b2 Z& O+ ~
  9. #define GL_3_BYTES                        0x14083 O2 A0 z! z1 }- i+ y, g$ r
  10. #define GL_4_BYTES                        0x1409
    ! ^% ^6 C- G' B+ W0 Q
  11. #define GL_DOUBLE                         0x140A
复制代码
: S' N: n0 U1 w9 }

+ i  Y/ s$ Z: M+ c0 |# A
  1. 5 O' C; Z) g0 `
  2. int __cdecl sub_40BFD0(signed int a1, int a2, int a3, int a4, char a5)
    . K# x7 v" x. H7 _0 M' F7 w
  3. {  `7 `+ Z6 Z0 r' Z6 I8 ]2 A
  4.   int v5; // ecx3 ?) Z; t' S% G4 N
  5.   int result; // eax
    3 f' C; q" P* a
  6.   char v7; // [esp+18h] [ebp-118h]
    - ^. Z$ b( P0 Q2 E5 M- S
  7.   char *v8; // [esp+118h] [ebp-18h]
      }9 U( y7 y$ o# c
  8.   int v9; // [esp+11Ch] [ebp-14h]( F* U) X: {9 I* J/ f; H
  9.   int v10; // [esp+128h] [ebp-8h]8 \3 a. b. K0 c/ ~" g# j. y
  10. ( j& u7 `) H5 Z$ T9 U+ Q* b
  11.   v10 = v5;: u  i1 x8 [$ F
  12.   if ( a4 )
    % O+ K) N( L% ~# n1 H1 ~
  13.   {
    ; U( ^0 m% D7 u; g; X6 G! m
  14.     v8 = &a5;
    $ x" P# c" }8 N+ }9 w6 h
  15.     sub_41BA00(v5, a4);
    # }5 ?( X; m( B/ B7 k
  16.     v8 = 0;) A% i# i' e7 H+ G: i* b3 K
  17.     glBlendFunc(770, 771);# E; o0 j- w* K
  18.     glBindTexture(3553, dword_4DF3BC4[8 * a3]);+ y% }0 x  Y2 F7 ?! r2 M/ c
  19.     glPushMatrix();% w: {! F! [: m9 I  }# S1 C
  20.     glLoadIdentity();0 v) B% M; i5 L' Q9 ^
  21.     v9 = a1;
    ' V5 Q+ V/ }& z2 D
  22.     glTranslated(7 x5 y. r+ n$ k/ j' y; y
  23.       COERCE_UNSIGNED_INT64((double)a1),
    0 s: Y4 Z: k' {" D4 J1 C6 J/ s
  24.       COERCE_UNSIGNED_INT64((double)a1) >> 32,! P9 y3 R, d/ Y. [" I7 G" U
  25.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)),8 u7 w; r: d7 _
  26.       COERCE_UNSIGNED_INT64((double)(dword_4DF8B68 - a2)) >> 32,: `' g2 N! A: J4 \: L& U# W
  27.       0,
    % h, A0 Z" V; x
  28.       0);& p1 N" D8 b6 G: d0 ~: U, Y
  29.     glPushAttrib(0x20000);: g# n8 T1 J& i: g8 G9 D& _- X
  30.     glListBase(dword_4DF5130 + 16);
    9 \6 g$ a0 Y9 w" w" O& X
  31.     glCallLists(strlen(&v7), 5121, &v7);5 M' g. X  P) O' V+ T; ^
  32.     glPopAttrib();7 ~9 T7 [: i6 X* E, `
  33.     result = glPopMatrix();
    8 e+ g8 C/ s7 V
  34.   }4 W2 O3 D" E% v' h
  35.   return result;( g( A" h7 z- u( x9 v
  36. }
    # {) Y/ g1 @5 X, ^: d9 |6 r6 B
复制代码
4 v* B" z1 M7 a+ V
! y' Y& D% Y) d& x) R

8 @: c7 d: u$ Y9 I
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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