Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:2 G' M- w8 o! Q5 f% s4 r; v
1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :)
- z8 d) \' M: C6 u. v' Q0 W2. 问题出在 loadChineseStrings() 这个函数上面:
) \# Y- x. L1 |6 S! Q
- \8 n0 G( P" C# F8 I for(k = 0; k<SUBTITLE_NUM; k++)) u1 w$ _5 u& s, f m* R V
{
, V! M- {8 ?3 b1 k //English subtitle( L2 X/ }% ]6 X1 J8 r% J' m
_subbuf[0][k] = (char *)malloc(1024);0 ]4 q9 f* l7 s
fgets(_subbuf[0][k], 1024, _fp_sub_cn);
* L' O: A1 c$ Q# ]) _, Q; n+ ^% u1 K% Z& j# \
//Chinese subtitle0 R4 L9 ? |) S" d1 o7 W- f3 P
_subbuf[1][k] = (char *)malloc(1024);) H) U; ~2 h5 B: w0 g; Z) j3 {
fgets(_subbuf[1][k], 1024, _fp_sub_cn);
( X# q& R3 g; y% ]* ^. I7 R5 d
; o6 p. Z1 R) N //tempbuf = (char *)malloc(1024);
. @9 W- [9 ^7 }; G8 k* X( C* m //fgets(tempbuf, 1024, _fp_sub_cn);
1 p9 [# n' G* L$ o2 \4 C- R' g& ^ //_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);, D2 h' m/ l, Q+ d9 w* Z6 Q2 f% s6 k
//strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));
7 H2 h% | I% T8 N/ `
0 `* ^5 y) N: y* h, f8 s }* S+ Q T6 J% f! v( W1 L+ N, j3 ~ U
上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |