Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:
/ v2 o! C, `! [3 }5 i1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :); |; Y: @$ J8 p- [* o: Y5 t4 N5 V
2. 问题出在 loadChineseStrings() 这个函数上面:
# @/ Y0 y) p3 [" D3 l0 H! N
; n9 Q# k8 u, Q3 I1 J% ?# s; {, l for(k = 0; k<SUBTITLE_NUM; k++)
: Z, [1 y% E4 {3 Z3 T$ E- F {% t) X" S' K2 s/ G& Y' c$ E
//English subtitle
4 \/ s- |: B7 V( T8 O5 R _subbuf[0][k] = (char *)malloc(1024);
4 q9 a g: C- h f) S2 K* C7 ]! J fgets(_subbuf[0][k], 1024, _fp_sub_cn);
( M4 [6 O1 x+ z% T- C$ }9 e- T ^2 X; ]9 x) U+ V3 Y
//Chinese subtitle: F: L3 H% y: \' k; _
_subbuf[1][k] = (char *)malloc(1024);: v6 y- y6 P/ \; I+ t3 ?
fgets(_subbuf[1][k], 1024, _fp_sub_cn);
: A( R. |! L% `0 M/ a9 x9 f/ c) i+ H
//tempbuf = (char *)malloc(1024);
0 _7 l! ~% S3 }; N8 w+ u //fgets(tempbuf, 1024, _fp_sub_cn);- u3 r' q0 V4 b6 L/ f2 X& Z9 n
//_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);
6 X" S" [( g# ]# f. f5 ~ //strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));
2 A9 b2 i, w* T5 T6 D7 M( k7 b$ \. @' ]' u( Q& W+ G8 R
}
% i" L3 ~4 i3 B" r1 z9 K$ V上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |