Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:3 }0 E. Z# [7 u* Z
1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :)
+ H* \+ l( n& J2. 问题出在 loadChineseStrings() 这个函数上面:. }3 m+ h' ~$ P- ^- ]+ i* c% l- V( c
" {: X: I2 R3 R% T+ t& T
for(k = 0; k<SUBTITLE_NUM; k++)
# B7 y! Q' }: q0 l) x {
9 K( j6 F$ e1 K //English subtitle
5 N4 w0 J) @1 S5 W _subbuf[0][k] = (char *)malloc(1024);8 H4 x0 ^2 {9 s; W3 j+ E
fgets(_subbuf[0][k], 1024, _fp_sub_cn);3 C. L3 w. S6 r6 B/ A
' G3 l4 f* y/ @# C2 @: q) T( f& k
//Chinese subtitle
' g- |9 W6 ?$ t$ r+ M+ T& I _subbuf[1][k] = (char *)malloc(1024);) L: b! H% k8 {( y7 J8 \
fgets(_subbuf[1][k], 1024, _fp_sub_cn);" U+ |; p* r3 ^0 N
- l1 j% Q3 j. e7 c1 ]4 i( o2 M) c8 M
//tempbuf = (char *)malloc(1024);
" p' j$ t) C% q3 A* o0 v, @/ B! h //fgets(tempbuf, 1024, _fp_sub_cn);" u1 r) l$ r. D c' N
//_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);
: ~. a% }6 z$ d; p' K/ h //strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));2 n: G6 P3 b- N) r
X( N! ^! {, q& R: G O }
0 P, }7 c# F" q8 V! s上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |