Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:/ N5 G7 O# Q! h" {' T
1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :)0 w, F. F0 s2 V D6 C
2. 问题出在 loadChineseStrings() 这个函数上面:8 k2 h. ]; z: K- m, s
% ^' G9 N9 q8 ? for(k = 0; k<SUBTITLE_NUM; k++)3 a' T4 e3 l4 v1 z( }! t/ y( K2 E4 F/ W
{
, n# ]/ N$ k3 I/ C //English subtitle
2 R+ G5 |: d8 P" j4 H$ F2 a5 `- Q. F5 s' \ _subbuf[0][k] = (char *)malloc(1024);" @5 ]: r, i+ ^9 {( x5 \4 X
fgets(_subbuf[0][k], 1024, _fp_sub_cn);1 l/ F) ?) r6 t. o3 B' o ~
4 `* x( c) E1 W2 ^7 m% |' h //Chinese subtitle
1 R7 P, ]! b& x& h- x" L _subbuf[1][k] = (char *)malloc(1024);% [( {- O. B( @- h/ L
fgets(_subbuf[1][k], 1024, _fp_sub_cn);
# k/ ?1 [: ~ w, ~2 E y1 f
$ T4 Z% K% c% ?1 ? //tempbuf = (char *)malloc(1024);
) K( C4 y2 i8 m6 ^1 o% Q //fgets(tempbuf, 1024, _fp_sub_cn);8 y4 _6 @2 `" g$ n- A
//_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);
/ V }* i8 N' g; X //strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));
3 |" W1 a; Y; z3 w+ T
2 r3 l5 H$ b- h+ n1 @ }: |& L' @7 [" f6 F( [
上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |