Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:
* v# F! s: S# Q1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :)
4 O" G/ x3 }+ u$ x4 X2. 问题出在 loadChineseStrings() 这个函数上面:
, A5 Q% m) z: ^) X* z0 @ - ?( A; }5 G+ c
for(k = 0; k<SUBTITLE_NUM; k++)2 t# o9 \. V' ?5 ^* a5 Z
{
8 J1 {1 w d, F9 x //English subtitle, Y6 @+ k! C J; \! v
_subbuf[0][k] = (char *)malloc(1024);9 u/ n# E W L! q' D( v
fgets(_subbuf[0][k], 1024, _fp_sub_cn);
- O+ S% H H( ?# Q, r- O2 N9 V9 ^9 Y4 A' N X( @. b' w
//Chinese subtitle3 O& ~5 d4 J, Y* j6 x5 o4 u; R: ~
_subbuf[1][k] = (char *)malloc(1024);! q* ?) ~) @# F& A$ j# H
fgets(_subbuf[1][k], 1024, _fp_sub_cn);
2 {+ [8 t" ~3 T) s& d
5 N F5 R4 M9 c0 D; _ //tempbuf = (char *)malloc(1024);
3 t" f& {$ G: I C/ ]; u$ a //fgets(tempbuf, 1024, _fp_sub_cn);
4 }: {8 \9 c \& T" P8 E //_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);9 Y9 x P; k" W1 X) g
//strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));
6 ^' x& y$ I# X, z' a8 S( Q
, G% k7 n% t2 y5 X$ }- u }
) q- B; Y0 _: J* n9 d5 I# r8 ^ }上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |