新用户登入 登录

萌子岛

  • 2013
  • 4

[其他] 关于学园的存档

360粉丝
L.Emperor 纸玄网MOD制作发布组2011-5-17 20:19 显示全部楼层 |阅读模式
这次的存档文件格式是PNG 我在想这个格式的图片文件是否只是记录了一些参数 而不是像AI3的PP包存档那样封装了模型跟贴图
如此一来自制MOD就要变更源PP包了 很麻烦的呀 要不停的换 或者要不停的增加lst文件啊 真的是很麻烦的说

不知各位觉得如何?
360粉丝
L.Emperor 纸玄网MOD制作发布组2011-5-18 16:52 显示全部楼层
HF上总结的AA存档格式

// ==================================================================
//                Illusion Artificial Academy Savefile
//                           Written by:
//                             MrHands
// ==================================================================
//
// This document explains in clear language the savefile as used by
// Illusion in their latest game, Artificial Academy.
//
// It is intended for modders who want to write external tools.
//
// Save data
// ==================================================================
//
// The PNG standard is a flexible standard. There are a couple of
// tags you have to include to be considered a PNG (IHDR, IDAT and
// IEND), but you can add your own as you like. Image parsers that
// can't recognize simply skip it and move on to the next.
//
// Illusion decided not to use this extension and has instead tacked
// their data at the end of the file. Image parsers read up to the
// IEND tag in the image, while the game knows there is still data
// at the end.
//
// This document is an attempt to reverse engineer the sava data.
//
// To do this, I loaded the PNG image of a character into a hex
// editor and started editing files. Every value I post is in
// hexadecimal, so you can start playing with it on your own. Mod
// makers: I hope this will help you to understand the save file
// format Illusion uses.         
//
// I use the free PSPad Editor for my haxxing. Try it, it has all
// kinds of cool stuff built in.
//
// Concepts
// ==================================================================
//
// Byte: a single chunk of data, contains a value between 0 and 255
//
// Hexadecimal: a system of numbering that has 16 as a base
//
//              Decimal | Hexadecimal
//              ---------------------
//              0       | 0x00
//              10      | 0x0A
//              16      | 0x10
//              120     | 0x78
//              255     | 0xFF
//
// String: a collection of printable characters
//
// Colors
// ==================================================================
//
// There are only a few valid colors for everything. For completion
// sake I have made a list. This is called a "look up table", because
// each data value is an index in a table of colors.
//
// Value   | Looks like
// -------------------------
// 0x00    | Black
// 0x01    | Black
// 0x02    | Dark red
// 0x03    | Orange
// 0x04    | Dark green
// 0x05    | Dark blue
// 0x06    | Dark purple
// 0x07    | Dark gray
// 0x08    | Dark brown
// 0x09    | Red
// 0x10    | Orange
// 0x11    | Green
// 0x12    | Blue
// 0x13    | Pink
// 0x14    | Gray
// 0x15    | Brown
// 0x16    | Dark pink
// 0x17    | Yellow
// 0x18    | Yellow-green
// 0x19    | Light blue
// 0x20    | Darkish purple
// 0x21    | White
// 0x22    | Light brown
// 0x23    | Salmon
// 0x24    | Light yellow
// 0x25    | Light green
// 0x26    | Purple-blue
// 0x27    | Purple
//
// Strings
// ==================================================================
//
// They're encoded in a weird way. They seem to be in
// the exact opposite order you would expect. A is a high value while
// Z is a lower value. Here are the boundaries:
//
// a = 0x9E
// z = 0x85
// A = 0xBE
// Z = 0xA5
//
// This is the page I used to reverse engineer these codes:
//
// http://www.rikai.com/library/kan ... codes.unicode.shtml
//
// As you can see, the codes on the page are in reverse order.
//
// 0xFF is the end of string character. Here's an example string:
//
// B28D B79E 919B 8CFF = MrHands
//
// Format   
// ==================================================================
//
// Enough talking! On to the actual bytes. Keep in mind this savedata
// starts at the first byte AFTER the IEND tag in the save image.

byte header[25];                         // not sure what this does
                                         // however, if you change it, the game
                                         // complains about corrupted data
                                         // so don't touch it
                                         
byte lastname[260];                      // utf-8 or utf-16
                                         // so the size can be 260 ascii
                                         // or 130 japanese chars
                                         
byte firstname[260];

byte personality;                        // 0x00 - 0x14

byte unknown1[7];

byte extracurricular;                    // 0x00 - 0x05

byte unknown2;

byte height;                             // 0x01 - 0x02
byte figure;                             // 0x01 - 0x02
byte headsize;                           // 0x00 - 0xFF

byte breastsize;                         // 0x00 - 0xFF
byte areolasize;                         // 0x00 - 0xFF

byte nipplecolor;                        // 0x00 = pink
                                         // 0x01 = red
                                         // 0x02 = orange
                                         // 0x03 = brown
                                         
byte nippleopacity;                      // 0x00 = transparant, 0xFF = opaque

byte waist;                              // 0x00 = thin, 0xFF = large


byte skincolor;                          // 0x00 = white
                                         // 0x01 = white bikini
                                         // 0x02 = white swimsuit
                                         // 0x03 = white cover swimsuit
                                         // 0x04 = brown
                                         // 0x05 = brown bikini
                                         // 0x06 = brown swimsuit
                                         // 0x07 = brown cover swimsuit
                                         // 0x08 = dark
                                         // 0x09 = dark bikini
                                         // 0x0A = dark swimsuit
                                         // 0x0B = dark cover swimsuit
                                         
byte unknown3;                           // doesn't affect any of the tabs
                                         // on any of the pages
                                         // verified with screenshots

byte eyesize;                            // 0x00 = small
                                         // 0x01 = medium
                                         // 0x02 = large

byte eyebrowshape;                       // 0x00 - 0x10
byte eyebrowthickness;                   // 0x00 - 0x64
byte eyebrowcolor;                       // 0x00 - 0x1B

byte eyeposition;                        // 0x00 = low
                                         // 0x01 = medium
                                         // 0x02 = high
                                         
byte eyeinnercornerposition;             // 0x00 - 0x02
byte eyenarrowness;                      // 0x00 - 0x02
byte eyeoutercornerposition;             // 0x00 - 0x02

byte pupilshape;                         // 0x00 - 0x01
byte pupilsize;                          // 0x00 - 0x01
byte eyecolorleft;                       // 0x00 - 0x1B
byte eyecolorright;                      // 0x00 - 0x1B

byte glasses;                            // 0x00 = none
                                         // 0x01 = thin
                                         // 0x02 = thick
                                         
byte glassescolor;                       // 0x00 - 0x1B

byte hairfront;                          // 0x00 - 0x04

byte hairfrontmirrored;                  // 0x00 = false
                                         // 0x01 = true

byte hairunknown1;                       // possibly connected to hair style
byte hairback;                           // 0x00 - 0x04
                                         // it's quite possible that this is
                                         // not a byte to indicate the back hair
                                         // style, but a word (2 bytes)
                                         // we can't know for sure until we get
                                         // our greasy hands on the full product
                                         
byte hairunknown2;                       // possibly connected to hair style

byte hairsprout;                         // 0x00 = off
                                         // 0x01 = on

byte haircolor;                          // 0x00 - 0x1B

byte voicepitch;                         // 0x00 - 0x04
byte scholasticachievements;             // 0x00 - 0x05
byte agility;                            // 0x00 - 0x05

byte sexualexperience;                   // 0x00 = false
                                         // 0x01 = true            
                                         
// now follow a bunch of untranslated properties
// i don't know what they are in english, so i can't give proper labels :(
// sorry guys
回复 支持 反对

使用道具 举报

360粉丝
L.Emperor 纸玄网MOD制作发布组2011-5-18 17:11 显示全部楼层
本帖最后由 L.Emperor 于 2011-5-18 17:11 编辑

Illusion 人工学园存档文件 作者:MrHands
本文清晰地阐述了I社最新游戏人工学园所使用的存档文件的格式。这些分析结果仅供Mod制作者参考,同时也为打算编写面向低端用户的解析程序的人员提供技术支持。
存档文件
PNG图片标准具有广范的范围,很多编码格式都可以归为PNG,比如IHDR、IDAT、IEND,当然还有很多。不能识别某些PNG的图片浏览器会直接跳过这张图片并来到下一张。
但是I社并没有使用上述情形的PNG作为存档文件,相反他们在PNG图片的尾部上增加了一些所制作角色的数据。所以图片浏览器可以熟练地读到PNG图片的IEND标签,显示出解码后的像素,而游戏程序则知道这其中还有附加在尾部的角色数据。
回复 支持 反对

使用道具 举报

头像被屏蔽
10粉丝
w85702825 禁止访问2011-5-27 07:16 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

360粉丝
L.Emperor 纸玄网MOD制作发布组2011-5-27 11:07 显示全部楼层
回复 w85702825 的帖子

我现在担心的是根本就没有什么衣服 所有人统统制服了
唉 这次的游戏留的自由度空间不够
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 新用户登入

小黑屋|萌子岛

GMT+8, 2025-2-6 12:43 , Processed in 0.323371 second(s), 30 queries , Gzip On, MemCache On.

Copyright 2020  atollmoe©.a2.1.0 All rights reserved. 9+

Copyright 2009  supported by zhixuan© oeo© oko© All rights reserved.Thank you!

快速回复 返回顶部 返回列表