Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:/ ]( W% u& q' P2 J, J& W& m
1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :)
3 E! i- q6 v/ D7 }! d2. 问题出在 loadChineseStrings() 这个函数上面:
6 ^5 E5 g3 }, R1 {' V' r ' o7 M' a7 w9 `4 L
for(k = 0; k<SUBTITLE_NUM; k++). C: \& m7 H7 m" R
{2 e2 P: Q" [9 Z' K* c4 c7 Q
//English subtitle
* b1 p0 b& g! e1 }8 G" L _subbuf[0][k] = (char *)malloc(1024);
~' l) `0 f' Z; J: S' ~) { fgets(_subbuf[0][k], 1024, _fp_sub_cn);
% W6 c) ^; G* ~5 o. s
3 M3 M( q+ \9 W! J% ?# ?& H& |$ R //Chinese subtitle3 h9 U3 N1 m3 ]. O$ \
_subbuf[1][k] = (char *)malloc(1024);1 \5 u3 m$ \: z- y h w k
fgets(_subbuf[1][k], 1024, _fp_sub_cn);/ y T- C" `4 j$ [' T- R
/ h0 U" A* u* V. f. @ //tempbuf = (char *)malloc(1024);) k' i) k2 }9 Q- z& B
//fgets(tempbuf, 1024, _fp_sub_cn);/ F! ]% R2 x$ L# Q- E) C) |
//_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);
# O2 k) w7 r& z2 m //strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));+ r( l X7 }& k# L- b9 h
; Q# W8 D- \5 x% A( m3 V }: C- ?, ^' u- ` j& ~- T) \
上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |