关于图档问题。之前用网友的程序导出的图片,默认的调色版是08的黄昏色。特别是在出生点灵堂,看着很不舒服。

由于C++的能力不足,我又不知道怎么改他的。最关键的默认读取08号cpg。读了很久的源代码始终不知道怎么改~

之前也不理解为什么他要全部拼成json之后一次性导出全部图片,那是相当的花时间。

主要参考的两篇文章

https://blog.csdn.net/qq_37543025/article/details/88377553

https://www.cnblogs.com/CG7/archive/2004/01/13/12237395.html


项目地址是:

https://github.com/mversace/CrossGateRemastered


导出的一些信息tilemap丢失了。实际上都是有作用的。


于时我居然自己想写一个。node版本的。。

有点后悔,要在js里面处理大量的二进制 十六进制 位运算,确实很头疼。node buffer又是存的 Uint8Array

硬着头皮干。


首先还得理解,各种调色板的含义。从二进制文件读取图片信息,原始图片信息,解密算法,填色,再导出。

graph_info.bin 和 graph.bin的理解。


目前已经可以读取到图片信息和原始图片信息。根据图片信息可以找到图片的地址,得到原始图片数据。再进行解密。


解压,解压算法好像不太对。。

我解出来的图片明显太大了。肯定是哪里出了问题。

还差读取调色板和填色的步骤。。

不过如果能够实现的话,

那么就可以直接运算魔力宝贝bin文件了。这样的话,其实可以畅想的就很多了,虽然我已经不想再复刻魔力了。不过,里面的游戏系统知识还是有用的。包括可怕的二进制文件。


折腾了一下c#,通过修改debug的目标路径,也算是可以调试了。到时候再监听对比一下数据应该就可以了。

最后直接把08的替换掉,想要的信息只要稍微改动一下源代码就好了。把想要的调色板改成08就行了。。


调色板来控制白天00() 傍晚01(发橙色) 黑夜02(发蓝色) 凌晨03(有点发青色)

我觉得黑夜的颜色最好看。灵堂似乎永远都采用黑夜。


11月25日

终于解决了。

经过调试发现,原来调色板是用了unordered_map无序存储的。默认begin就是08。

在define.h,添加默认读取的调色板

__declspec(selectany) std::string defaultCgp = "palet_03.cgp";

将getCGImage.cpp中 改成:

unsigned char *pCgp = _uMapCgp.find(defaultCgp)->second.data();
strCgpName = _uMapCgp.find(defaultCgp)->first;


终于完美解决了~


node 方面 感觉看到了胜利的曙光。。


终于!!!成功了。不过颜色不大对


11月26日 14:22

泪流满面,终于~~

其实透明好像不太好。在有一些调色板下,一些像素会丢失。这也是个问题。也就是还得保留黑色,之后再去除黑色背景?

后面只要再完善一下就行了。


11月28日更新

有些图还是有问题,程序目前还有bug~


0条评论