Hi, gamadao, shane007, 我刚刚在丁果试了一下,也有黑屏的问题,问题是这样的:
9 n0 x. u9 i) S! a1. 字库大小没有问题,4M的大小丁果和gp2x应该都能处理,毕竟ps模拟器游戏都可以跑的 :)% K* d+ i, Z5 f0 b) y# Z# ~( b
2. 问题出在 loadChineseStrings() 这个函数上面:
1 W" y1 ?( @- F( h% S/ | 8 O6 c' o. b" W. i, J
for(k = 0; k<SUBTITLE_NUM; k++)* G+ t; X4 {- ^: [
{
* n6 k& \+ c5 K' K4 I //English subtitle. [: U' Z: f: m3 K2 K" g1 e2 |
_subbuf[0][k] = (char *)malloc(1024);
' e! ] A6 g7 g& n. t' K8 ] fgets(_subbuf[0][k], 1024, _fp_sub_cn);
& x+ C! X. M# _' s) |) Z" [3 p+ S' L( r
//Chinese subtitle
/ f7 [! o, \+ `0 Y _subbuf[1][k] = (char *)malloc(1024);5 b9 {1 F3 X9 T' g8 z ]. T7 m* F
fgets(_subbuf[1][k], 1024, _fp_sub_cn);5 c/ Y: m9 S( J$ e/ f, T2 A
" e+ O' {. m2 g0 N //tempbuf = (char *)malloc(1024);, A9 I. l: V a5 Z
//fgets(tempbuf, 1024, _fp_sub_cn);9 c( {) b! |5 m) }) M
//_subbuf[1][k] = (char *)malloc(strlen(tempbuf)+1);
5 q" Z9 Y+ B: L3 e- { //strncpy(_subbuf[1][k],tempbuf,strlen(_subbuf[1][k]));
6 @( E$ ?# S% ^6 D) o& ~8 t* C( D$ l
}$ \, s+ I2 z( K9 z
上面这段函数想要把字幕文件完全读入内存,字幕文件有10488行,所以内存被这段循环吃掉了,如果你把text.h中的SUBTITLE_NUM从10488改成100,重新编译一下,就可以看到这个中文字幕70了。这个解决方法不难,字幕文件出来时候分成几个文件就可以了,动态读取,这样就不需要把版大的vb程序重写成c了 :) |