{"id":352,"date":"2018-03-03T01:46:44","date_gmt":"2018-03-02T17:46:44","guid":{"rendered":"https:\/\/flandre-scarlet.moe\/blog\/?p=352"},"modified":"2018-08-31T00:32:38","modified_gmt":"2018-08-30T16:32:38","slug":"remember11-%e8%a7%a3%e5%8c%85","status":"publish","type":"post","link":"https:\/\/flandre-scarlet.moe\/blog\/352\/","title":{"rendered":"Remember11 \u89e3\u5305"},"content":{"rendered":"<p>r11 \u7684\u5c01\u5305\u662f afs \u683c\u5f0f\u7684\uff0c\u5c01\u5305\u6ca1\u6709\u538b\u7f29\u548c\u52a0\u5bc6\uff0c\u5728\u5c01\u5305\u5934\u90e8\u6709\u6587\u4ef6\u7684\u504f\u79fb\u548c\u5927\u5c0f\uff0c\u5c01\u5305\u5c3e\u90e8\u6709\u5404\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u4ee5\u53ca\u5176\u4ed6\u4e00\u4e9b\u4fe1\u606f\u3002<\/p>\n<ul>\u6240\u6709\u5c01\u5305\u4e2d\u542b\u6709\u4ee5\u4e0b\u7c7b\u578b\u6587\u4ef6\uff1a<\/p>\n<li>bip: lzss \u538b\u7f29\u6216\u672a\u538b\u7f29\u7684\u591a png \u7ec4\u5408\u6587\u4ef6<\/li>\n<li>t2p: lzss \u538b\u7f29\u7684 tim2 \u6587\u4ef6\uff0ctim2 \u53ef\u8f6c\u4e3a bmp \u6587\u4ef6<\/li>\n<li>adx: \u539f\u59cb ogg \u6216 wav \u58f0\u97f3\u6587\u4ef6<\/li>\n<p><!--more--><\/p>\n<h1>afs \u76f8\u5173\u7ed3\u6784<\/h1>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">typedef struct\r\n{\r\n    char       Magic&#x5B;4];\r\n    int        FileCount;\r\n    AFS_ENTRY *Entries;\r\n} AFS_HEADER;\r\n\r\ntypedef struct      \/\/ \u7d27\u8ddf\u6587\u4ef6\u5934\u7684\u7d22\u5f15\r\n{\r\n    int Offset;\r\n    int Length;\r\n} AFS_ENTRY;\r\n\r\ntypedef struct      \/\/ \u5c01\u5305\u5c3e\u90e8\u7684\u7d22\u5f15\u4fe1\u606f\r\n{\r\n    char FileName&#x5B;32];\r\n    char UnknownBytes&#x5B;16];\r\n} AFS_INDEX;<\/pre>\n<\/p>\n<h1>t2p \u76f8\u5173\u7ed3\u6784<\/h1>\n<p>\u89e3\u538b\u540e\u5f97\u5230 tim2 \u6587\u4ef6\u3002<\/br>tim2 \u6587\u4ef6\u7ed3\u6784\u5982\u4e0b\uff0c\u4e0e bmp \u7c7b\u4f3c\u7684\u4e24\u4e2a\u6570\u636e\u7ed3\u6784\uff0c32 \u4f4d\u8272\u7684\u60c5\u51b5\u4e0b\u540e\u9762\u8ddf\u968f 4 \u5b57\u8282\u7684\u50cf\u7d20\u4fe1\u606f\u3002<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">typedef struct\r\n{\r\n\tchar           FileId&#x5B;4]; \/\/ ID of the File (must be 'T', 'I', 'M' and '2') \r\n\tunsigned char  FormatVersion; \/\/ Version number of the format \r\n\tunsigned char  FormatId; \/\/ ID of the format \r\n\tunsigned short Pictures; \/\/ Number of picture data \r\n\tchar           Reserved&#x5B;8]; \/\/ Padding (must be 0x00) \r\n} TIM2_FILEHEADER;\r\n\r\ntypedef struct\r\n{\r\n\tunsigned long  TotalSize; \/\/ Total size of the picture data in unsigned chars \r\n\tunsigned long  ClutSize; \/\/ CLUT data size in unsigned chars \r\n\tunsigned long  ImageSize; \/\/ Image data size in unsigned chars \r\n\tunsigned short HeaderSize; \/\/ Header size in unsigned chars \r\n\tunsigned short ClutColors; \/\/ Total color number in CLUT data \r\n\tunsigned char  PictFormat; \/\/ ID of the picture format (must be 0) \r\n\tunsigned char  MipMapTextures;\/\/ Number of MIPMAP texture \r\n\tunsigned char  ClutType; \/\/ Type of the CLUT data \r\n\tunsigned char  ImageType; \/\/ Type of the Image data \r\n\tunsigned short ImageWidth; \/\/ Width of the picture \r\n\tunsigned short ImageHeight; \/\/ Height of the picture \r\n\tunsigned char  GsTex0&#x5B;8]; \/\/ Data for GS TEX0 register \r\n\tunsigned char  GsTex1&#x5B;8]; \/\/ Data for GS TEX1 register \r\n\tunsigned long  GsRegs; \/\/ Data for GS TEXA, FBA, PABE register \r\n\tunsigned long  GsTexClut; \/\/ Data for GS TEXCLUT register \r\n} TIM2_PICTUREHEADER;\r\n\r\n\/\/ \u5176\u4e2d ClutType \u5177\u4f53\u53d6\u503c\u5982\u4e0b\uff1a\r\n\/\/ 01   16 \u4f4d\u76f4\u63a5\u989c\u8272\u6587\u4ef6\r\n\/\/ 02   24 \u4f4d\u76f4\u63a5\u989c\u8272\u6587\u4ef6\r\n\/\/ 03   32 \u4f4d\u76f4\u63a5\u989c\u8272\u6587\u4ef6 \r\n\/\/ 04   4 \u4f4d\u7d22\u5f15\u6587\u4ef6\uff0816\u8272\uff09\r\n\/\/ 05   8 \u4f4d\u7d22\u5f15\u6587\u4ef6\uff08256\u8272\uff09\r\n\r\n\/\/ ImageType \u53d6\u503c\u5982\u4e0b\uff1a\r\n\/\/ 00 \u65e0\u8c03\u8272\u677f\r\n\/\/ \u7d22\u5f15\u989c\u8272\u6587\u4ef6\u65f6\r\n\/\/ \u9ad8\u56db\u4f4d\r\n\/\/ \t \t0 \u91c7\u7528 CSM1 \u8c03\u8272\u677f\r\n\/\/\t \t1 \u91c7\u7528 CSM2 \u8c03\u8272\u677f\r\n\/\/ \u4f4e\u56db\u4f4d\r\n\/\/ \t \t1 16\u4f4d\u8272\u8c03\u8272\u677f\r\n\/\/ \t\t2 24\u4f4d\u8272\u8c03\u8272\u677f\r\n\/\/ \t\t3 32\u4f4d\u8272\u8c03\u8272\u677f<\/pre>\n<\/p>\n<h1>bip \u76f8\u5173\u7ed3\u6784<\/h1>\n<p>\u8be5\u7ed3\u6784\u8ddf\u968f\u5728 &#8220;EMUARC__&#8221; \u6807\u5fd7\u4e4b\u540e\uff0c\u4e4b\u540e\u7d27\u8ddf png \u56fe\u7247\u6570\u636e<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">typedef struct\r\n{\r\n\tchar   Magic&#x5B;8];\t\t\/\/ &quot;PNGFILE2&quot;\r\n\tint    PartWidth;\r\n\tint    PartHeight;\r\n\tshort  FullWidth;\r\n\tshort  FullWidthThumb;\r\n\tshort  FullHeight;\r\n\tshort  FullHeightThumb;\r\n\tint    PartSize;\t\t\/\/ header + pngfile\r\n\tchar   FileNameWithDirectory&#x5B;64];\r\n\tchar   Unknown&#x5B;16];\r\n\tint    PicOffsetX;\r\n\tint    PicOffsetY;\r\n\tint    PicWidth;\r\n\tint    PicHeight;\r\n} PNG_PACK_TYPE2;<\/pre>\n<\/p>\n<p>\u538b\u7f29\u540e\u7684 bip \u7ecf\u89e3\u538b\u53ef\u5f97\u5230<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">typedef struct\r\n{\r\n\tTIM2_FILEHEADER    Tim2FileHeader;\r\n\tTIM2_PICTUREHEADER Tim2PicHeader;\r\n\tchar               Magic&#x5B;8];\t\t\/\/ &quot;PNGFILE3&quot;\r\n\tint                PartWidth;\r\n\tint                PartHeight;\r\n\tshort              FullWidth;\r\n\tshort              FullWidthThumb;\r\n\tshort              FullHeight;\r\n\tshort              FullHeightThumb;\r\n\tint                PartSize;\t\t\/\/ header from magic + pngfile\r\n\tchar               FileNameWithDirectory&#x5B;64];\r\n\tchar               Unknown&#x5B;16];\r\n\tint                PicOffsetX;\r\n\tint                PicOffsetY;\r\n\tint                PicWidth;\r\n\tint                PicHeight;\r\n} PNG_PACK_TYPE3;<\/pre>\n<p>\u8be5\u7ed3\u6784\u4e5f\u662f\u4e00\u4e2a\u8ddf\u968f\u4e00\u4e2a\u51fa\u73b0\uff0c\u4f46\u662f\u7ed3\u6784\u7684\u8d77\u59cb\u5730\u5740\u8981\u5bf9\u9f5016\u5b57\u8282\u7684\u6587\u4ef6\u504f\u79fb\u3002<\/br>\u8be5\u6570\u636e\u7ed3\u6784\u4e4b\u540e\u540c\u6837\u8ddf\u968f png \u56fe\u7247\u6570\u636e\u3002<\/p>\n<p>bip \u91cc &#8220;EMUARC__&#8221; \u6807\u5fd7\u524d\u7684\u6587\u4ef6\u5934\u7ed3\u6784\u4e2d\u8fd8\u6709\u4e9b\u5b57\u6bb5\u542b\u4e49\u4e0d\u592a\u6e05\u695a\uff0c\u4ee5\u540e\u6837\u672c\u591a\u4e86\u518d\u8865\u5145\u5427hhhh<\/p>\n<p><a href=\"https:\/\/github.com\/Kerisa\/ExtractGames\/tree\/master\/AFS\" rel=\"noopener\" target=\"_blank\">\u4ee3\u7801\u5730\u5740<\/a> \u6e23\u4ee3\u7801\u89c1\u7b11\u4e86_(:\u0437\u300d\u2220)_<\/p>\n","protected":false},"excerpt":{"rendered":"<p>r11 \u7684\u5c01\u5305\u662f afs \u683c\u5f0f\u7684\uff0c\u5c01\u5305\u6ca1\u6709\u538b\u7f29\u548c\u52a0\u5bc6\uff0c\u5728\u5c01\u5305\u5934\u90e8\u6709\u6587\u4ef6\u7684\u504f\u79fb\u548c\u5927\u5c0f\uff0c\u5c01\u5305\u5c3e\u90e8\u6709\u5404\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u4ee5&#8230; <\/p>\n<div class=\"read-more navbutton\"><a href=\"https:\/\/flandre-scarlet.moe\/blog\/352\/\">\u9605\u8bfb\u66f4\u591a<i class=\"fa fa-angle-double-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,31],"tags":[48,26,27,30],"class_list":["post-352","post","type-post","status-publish","format-standard","hentry","category-unpacking","category-reverse-engineering","tag-galgame","tag-kid","tag-remember11","tag-30"],"_links":{"self":[{"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/posts\/352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/comments?post=352"}],"version-history":[{"count":0,"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/posts\/352\/revisions"}],"wp:attachment":[{"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/media?parent=352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/categories?post=352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flandre-scarlet.moe\/blog\/wp-json\/wp\/v2\/tags?post=352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}