Jump to content

Search the Community

Showing results for tags 'Help'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Visual Novels Discussion
    • Visual Novel Talk
    • Recommendations
    • Walkthroughs
    • Game Technical FAQs & Solutions
  • Development Boards
    • Creative Corner
    • Fan Translation Discussion
    • Translation Projects
    • Original VN Projects
  • Fuwanovel Community
    • Introduce Yourself
    • Members' Lounge
    • Help Us Out: Active Tasks
    • Community Coordination and Feedback
  • Other Discussion
    • Anime/Manga Talk
    • General Discussion
    • Gaming Talk
    • The Coliseum of Chatter


  • AwesomeCurry Blog
  • The Geek Clinic
  • Dev Boards Updates
  • Fabulous on Fuwa
  • Phase 10
  • Project Recruitment
  • The thoughts of an idiot
  • Disearnestly Disearnest
  • fgf
  • tay pls
  • Novel21's Blog
  • FinalChaos' Blog
  • Moeblog
  • Clephas' VN home
  • Mon Chérie, Ma Chérie
  • Lino Does Stuff Too You Know
  • Mr Poltroon's Random Codswallop
  • The Ramblings of a Recluse
  • Anime Was A Mistake
  • Mana
  • fun2novel's Funtime Hour
  • fun2novel's Spoiler Hour
  • On A Rainy Day
  • Satsuki's Bombard Zone
  • In The Clouds
  • The Writing in Visual Novels
  • RCL's Blog
  • Sanahtlig's Corner
  • Kaguya Does VNs
  • Rooke's ramblings
  • Thoughts of a Rookie
  • anigatari
  • solidbatman vs. Metal Gear Solid
  • Lovin' my Vita Loca
  • Unwonted Studios
  • Pursuing Western Genres for VNs
  • Soloist
  • Random knowledges
  • Rapscallions' Quarter
  • B L O G B O Y S
  • Suika's Space
  • Kitty's Ramblings
  • YandereGirl Blogging & VN Reviews
  • Decay's musings
  • Fuwalegends ~ As told by Fidget Queen
  • starlessn1ght's random stuff
  • Chronopolis' VN Blog
  • firecat's Blog
  • Godline Games
  • AKISEKAI's Blog
  • Shikomizue's Random Game Reviews
  • kingsize male enhancement
  • kingsize male enhancement
  • mattwoods' Blog
  • Zealty
  • Rains' VN and Anime Weather Report
  • Black Rabbit's Coffee Shop
  • The Bookshelf
  • re:Edit
  • MekaMeka Time
  • Seems Legit
  • FuwaReviews Team
  • Micchy's dumpster
  • The Month In Reviews
  • 'What's a tsundere?'
  • solidbatman's Gaming Blog
  • Kaguya does touhou
  • Kaguya Writes Things
  • The Better Than Bad It's Good Blog
  • Random stories of Clephas
  • Imgur reviews
  • Zalor's Seminar
  • The Katawa Shoujo Ultimate Analysis
  • Dergonu's blog
  • CeruleanGamer's Blogs on Visual Novels with Gameplay!
  • Whining
  • Arc's VN Talk
  • Divided by Rei
  • The Utterly Hopeless Blog
  • The Right Way To Pack Large Appliances like Experienced Packers and Movers Firms
  • Holy Church of Incoherence (Fuwa Branch)
  • Jitaku Keibiin: No Longer Human
  • Pretty Cure on Fuwanovel
  • Forgetful Fuwa
  • one piece online game
  • Kawasumi's music dungeon
  • John Smith's blog
  • Vn ramblings
  • Dank Mango's
  • Aizen's Rambling Corner
  • The Freditorial
  • Keaton's Terrible Blog
  • Gunpla Blog
  • Many optimists evaluation organization shifting as growth of enterprise
  • Packers and Movers in Noida Employing the particular alternatives of merely
  • Packers and Movers in Hyderabad Specialist packers and moving organizations companies
  • Buy Rakhi Online | Send Rakhi Online to India | Rakhi n Gifts
  • Send Rakhi's Online to india via rakhigiftsideas.net ...
  • Reviews and Rants
  • Uncensored and honest reviews
  • Li-Fei's Indie VN Musings
  • Some random blog
  • I am an artist of backgrounds
  • Reading Ginharu Very Slowly
  • Daily Musings
  • The VN dev sector
  • About jewelry wholesale online shop
  • Berny Hales
  • Aimer beaucoup
  • Alei Translation's Blog
  • sm's Random VN Rants
  • hide photos and videos
  • protect smart phones
  • phone security
  • Social Justice with Sana-chan
  • Tyrviews
  • Exposing Matriarchal Norms in Visual Novels
  • Endless Days, Sleepless Nights
  • need some visual novel to play
  • koresuchan
  • Finding A Really Perfect Jersey Display Cases
  • SJWs leave us gamers & otakus alone & leave what we love alone
  • VNDBReview
  • Daydreamer's Thoughts & Reviews
  • Animelovers345
  • New Jersey Devil's Top 2011 Pick Adam Larsson Is Hurt
  • Internet marketing could be the act of promoting over the Internet.
  • Non chan's moe corner
  • Wholesale Halloween Costumes
  • EVN Chronicles
  • Maggie's journal
  • avoid adidas pas cher femme using an
  • DLC pandora disney uk characters
  • because winter ugg clearance boots is here
  • Nobody Cares: The Blog
  • Biased Reviews and Painful Truths
  • Ranzo's Rancid Ramblings
  • Akshay Attempts Reviews
  • In a halting way
  • VNs, Streamers, and Exercise!
  • Chuuni Philosophy
  • Mitch and Gaming
  • Senior's Trash
  • Discount Nfl Jerseys - Youth Basketball Jerseys Cheap
  • Weiterfechten's Clockworks
  • Anti-Blonde Blog
  • That feeling when someone doesn't mod "le Watakushi"
  • Phantom Visual Novel Reviews
  • Maggie's fics
  • New Balance Shoes Review
  • Adidas Supernova Distinct Running Shoes for People
  • Adidas Commander Lite TD Golf ball Shoe Review
  • The Kyonyuu Kingdom
  • Word Line Divergence
  • Ramaladni's Gift
  • Review of VNs that I have a physical copy of, including pictures of the physical copy
  • Emi´s wastebucket
  • Banter with Asonn.
  • A Closer Look
  • Learning How To Learn Series
  • Kuu's Words Manufactory
  • DivinityCure's Logs
  • onoramblings
  • Bad VN gossip blog
  • Monthly physical visual novel news
  • Lemurian Ruins
  • VN Thoughts
  • Exploring Visual Novels [Pixels, Polygons, Prose VN Feed]
  • Orglings of an Alpacaman
  • A compilation of quality VN from 2000 to 2018
  • Visual Novel Game Reviews
  • HentaiReviews.moe
  • Kickstarters and delays for physical releases
  • Former Spammer's Ramblings
  • Hypnotherapy for Smoking Cessation
  • Benefits of Industrial Cleaning
  • Infinity Hole
  • Welcome To... Chichester 1 : The Spy Of America And The Long Vacation
  • Chaos;Head Review
  • Clephas' VN home
  • Tsujidou San virgin road
  • Critically Subjective


  • Community Calendar




My Anime List (MAL)



Anime News Network (ANN)

Steam Username

Japanese language

Development skill

Found 214 results

  1. So I'm trying to play Tantei Opera Milky Holmes 2 on PSP. I tried many version of PPSSPP, Textractor and VNR, but I couldn't find any working hook codes, so I tried reading the memory with Cheat Engine, but once again, I couldn't find any region in the memory the text on screen would be copied to. But I found that each text has a code written before it in the memory e.g. ARS2100120. Then I also found a region in the memory which updates to the text code corresponding to the text currently on screen. The question is, can I even do anything with that, like search for that code and copy what ever is after that until it hits 00 which indicates the start of another text code?
  2. 武者前五重境界:武士镜、武徒境、武师镜、武宗镜、武王镜,武尊,神武镜 帝王镜 灵者前四重境界:灵士镜、灵师镜、灵宗镜、灵王镜 ,灵圣 Please Help me translate this
  3. Sorry if this is messy, as I'm new to this forum. I'm programming a VN where my MC will find people based on where she locates herself on a map of her school. Example: She can go to "rooftop or cafeteria", and there she will find someone at a random stat percentage of chance. I need to program how to click on that location on a image that will be static onto the screen until you make a choice, then program the percentage for a person to greet her there. Can someone help me work this out? Thanks in advance! ;w;
  4. Hi. I would like to translate Muv-Luv (Steam version) into my native language (polish). However, I can't get to the game archives. I tried different tools from the web, but they all didn't work with Steam version. Could someone help me get to them? Thanks in advance for help.
  5. I know nothing about game design, coding, programming, it Japanese, but I wanted to try my hand at translating a game to get better at all of the above. My problem is I don't even know where to start. I have the game, and the archive files are right there, but they arent in any format. They're just blank. I have no idea where to even start, if this is even the right place to start. Help? Or just a nudge? Anything is better than the blind fumbling I'm doing now.
  6. Hello, I am interested in managing/creating a fan translation group but I'm unsure where to start and what I should know. I'd appreciate some advice from fellow fuwanovel members! I'm not very fluent with my Japanese but I'd love to help in aspects such as illustration. I can make a mascot design for our group, Icons for the members, Logo, etc for the blog and social media. I'd like to make a group with a fun friendly atmosphere where we can build a bond with each other!
  7. Hi guys, I'm a inexperienced translator trying to figure out how to extract the script from Astronaut's Nukige "Erect!" and I'm running into some problems (I'm not really good at technical issues). The game files are .gxp which I was able to extract using asmodean's tool, but inside the bincode.gxp is a moacode.mwb file . Using hex editor it's obvious that's where all of the dialogue for the game goes, but I can't figure out how to extract it. I look it up in the old data extraction thread and learn that their later games use the .mwb as a zlib file....I tried using some zlib tools to extract it but it seems like it's not a zlib file in this game. This has been mentioned before by Yasminkov If anyone can point me in the right direction I would really appreciate it, thanks.
  8. Hi guys, I'm doing a translation of Starless and I managed to decrypt the routes, I think, from the .arc file. My problem is that I don't know how to edit the .mjo files, or convert them to .txt to see the dialogs. I would really appreciate your help with this, thanks in advance. PD: The engine is Majiro.
  9. I was trying to put a Maximum of Input Letter Word, but I don't know what code, reach I replace and find the Letter Cap, It only stuck at this image here: https://imgur.com/a/eBJCpUC Also I want to find where to edit the font size textbox, coding is so hard, so can you help me?
  10. need help extracting

    I'm not going to lie, I basically can't wrap my head around stuff like extracting unless it's super easy. I have this ysbin.ypf visual novel that I assume runs on Yu-Ris that I want to extract. I have no idea how to extract this at all, so I'm begging for your humble help. Aikagi Files: https://drive.google.com/open?id=1ri4FmOteiG_Vbo17dAk6miPxT4IRRKHJ Thanks for your help (if you happen to help me)!
  11. I have just edited some scripts, and images out from the .dat file modify them, and create a patch.dat or patch8.dat file, and I opened it. It doesn't work, can you tell why?, I was wondering if this is the same method as Kirikiri, and I dunno what Source Engine is the game "Niizuma Lovely x Cation". It might soon I will be creating a translation project for the Hibiki Work's VN.
  12. I am trying to edit some images in kirikiri file for translation, I just successfully convert the .tlg to any image like .bmp .png and .jpeg/.jpg, but after editing I don't know how to convert it back, I try to search on google but nothing shows, so If anything you can help just post in the comment, I'm trying to Translate the game PRETTY X CATION, tnx in advance
  13. Hello all. As of right now I'm in the process of creating a fan translation patch for Clover Day's! I've run into a bit of an issue though as I'm new to the translating gig. So here's what I have. I can read and write japanese just fine, so there's no issue there. However, extracting the text to replace with the english alphabet is becoming a problem. Clover day's files consist of .xp3's primarily. I've used Garbro to extract a scenario file which I believe should hold the actual text. Opening this with notepad++ reveals a wall of (what appears to be) encrypted or compressed text. SO I gave up on using Garbro and went along to try out krkrextractor. Then I followed the intstructions of making sure the krkr exe and dll file are in the game directory, however the krkr main menu doesn't open. SO, in the end I'm back to square one. I can't extract anything to edit and repack. Any advice? *also tried xp3tools but dear christ cmd absolutely hates me.... invalid syntax and unaccessible folders for days....
  14. Hi, I'm new to VN. My friend was the one introduce me to vn (katawa,majikoi,muv-luv etc) and I understand that not all visual novel are translated (princess lover,shuffle essence+,kimi ga nozomu eien and this vn about fencing) -removed- Oh, and don't worry about not understanding Japanese's lang, I have VNR (just in case). Thank you.
  15. Hey guys, So after seeing how big Tasogare no Sinsemilla is, I decided that it may be better to train in the mountains with much, much shorter VNs first. I want to see if I can tackle Summer Surprise, which runs on the Artemis Engine. I'm able to extract the resources and edit the scripts, but how do I repackage it into the root.pfs.xx archive? I've looked around, and there aren't very many resources for the Artemis Engine, and GARbro doesn't create those archives. Thanks for any help and advice you can provide!
  16. Hello, I decided to perhaps try my hand at translation after reading several untranslated VNs. I added the "tl project" and "recruiting" tags, since I hope to turn this into a project. I've tried using various xp3 tools and even GARbro, but there seems to be some encryption I can't figure out. Games made by the same developer before and after this game released do have encryption schemes in GARbro. Could someone lend me a hand at extracting the scripts? Thank you! Oh, and here's a download link for my xp3 file: https://drive.google.com/file/d/1HSQwMDiMJj96CAAMZCGEQ3SCspKPuARu/view?usp=sharing
  17. Hey there, I am planning to create a new visual novel project and I need volunteers to do the art~ You won't be getting paid, but will be given credits for your art. The visual novel I'm planning to make has a dark story to it~ So I need somebody who can draw with that sort of dark style~ Email me at haibaraaino@gmail.com and send me your sample artwork. I will reply to your email ~ *The visual novel I'm creating will not be for commercial purposes, and will not involve any sort of payment. Thank you very much. EXAMPLE ART: (for reference) ~
  18. Ok this project was started in December 2017. I just wanna know if it is completed or is it abandoned?
  19. Hello, I've recently started to translate Toradora! Portable in French ( https://forums.fuwanovel.net/topic/22082-recruiting-toradora-portable-french-translation/ ) and I need to know how to pack the .so files of the translation into the game. The only thing we found is this compiler on Github : https://github.com/xyzz/taiga-aisaka but we don't have any idea on how to use it ! If someone does please contact me on Discord : 123321mario#1337 or on this forum ! If you know something else on this game that can help us, please let us know !
  20. PAK repacking

    So I'm trying to repack PAK files that I took apart using Crass. The game is 堕淫フォーカス~パック~, from Heat-Soft / Eroro /2009 The only 2 real tools i've found with potential chances are ACpack32 and Filepack32, but I can't seem to get ACpack to work from some reason and Filepack32 is as far as I can tell, extinct from the internet (all links are rapidshare = dead) . The other tool I've tried is createSRPak, but the files made though it are unreadable by the game. I posted a similar question on the Data Extraction thread, and as of now the only leads i've got are the Crass code Nanashi3 got me: #include <windows.h> #include <tchar.h> #include <crass_types.h> #include <acui.h> #include <cui.h> #include <package.h> #include <resource.h> #include <cui_error.h> #include <utility.h> #include <stdio.h> /* 接口数据结构: 表示cui插件的一般信息 */ struct acui_information IPAC_cui_information = { NULL, /* copyright */ NULL, /* system */ _T(".PAK .WST"), /* package */ _T("1.0.3"), /* revision */ _T("痴汉公贼"), /* author */ _T("2009-3-29 23:09"), /* date */ NULL, /* notion */ ACUI_ATTRIBUTE_LEVEL_UNSTABLE }; /* 所有的封包特定的数据结构都要放在这个#pragma段里 */ #pragma pack (1) typedef struct { s8 magic[4]; /* "IPAC" */ u16 index_entries; u16 unknown; } PAK_header_t; typedef struct { s8 name[32]; u32 unknown; u32 offset; u32 length; } PAK_entry_t; typedef struct { s8 magic[4]; /* "IEL1" */ u32 length; } iel1_header_t; /* 20 bytes header 1024 bytes palette width * height * 3 dib data width * height alpha */ typedef struct { s8 magic[4]; /* "IES2" */ u32 unknown; /* "IES2" */ u32 width; u32 height; u32 bits_count; u32 reserved[3]; } ies2_header_t; struct key { s32 low; s32 high; }; typedef struct { s8 magic[4]; /* "WST2" */ u32 reserved[2]; u16 adpcm_fmt_parameter[14]; } wst_header_t; #pragma pack () static void *my_malloc(DWORD len) { return malloc(len); } static inline unsigned char getbit_le(unsigned char byte, unsigned int pos) { return !!(byte & (1 << pos)); } static DWORD lzss_decompress(unsigned char *uncompr, DWORD uncomprlen, unsigned char *compr, DWORD comprlen) { unsigned int act_uncomprlen = 0; /* compr中的当前字节中的下一个扫描位的位置 */ unsigned int curbit = 0; /* compr中的当前扫描字节 */ unsigned int curbyte = 0; unsigned int nCurWindowByte = 0xfee; unsigned int win_size = 4096; BYTE win[4096]; memset(win, ' ', nCurWindowByte); while (1) { /* 如果为0, 表示接下来的1个字节原样输出 */ BYTE flag; if (curbyte >= comprlen) break; flag = compr[curbyte++]; for (curbit = 0; curbit < 8; curbit++) { if (getbit_le(flag, curbit)) { unsigned char data; if (curbyte >= comprlen) goto out; if (act_uncomprlen >= uncomprlen) goto out; data = compr[curbyte++]; uncompr[act_uncomprlen++] = data; /* 输出的1字节放入滑动窗口 */ win[nCurWindowByte++] = data; nCurWindowByte &= win_size - 1; } else { unsigned int copy_bytes, win_offset; unsigned int i; if (curbyte >= comprlen) goto out; win_offset = compr[curbyte++]; if (curbyte >= comprlen) goto out; copy_bytes = compr[curbyte++]; win_offset |= (copy_bytes >> 4) << 8; copy_bytes &= 0x0f; copy_bytes += 3; for (i = 0; i < copy_bytes; i++) { unsigned char data; if (act_uncomprlen >= uncomprlen) goto out; data = win[(win_offset + i) & (win_size - 1)]; uncompr[act_uncomprlen++] = data; /* 输出的1字节放入滑动窗口 */ win[nCurWindowByte++] = data; nCurWindowByte &= win_size - 1; } } } } out: return act_uncomprlen; } static int ipac_decompress_iel1(iel1_header_t *iel1, DWORD iel1_len, BYTE **ret_buf, DWORD *ret_len) { BYTE *uncompr, *compr; DWORD uncomprLen, comprLen, actlen; uncomprLen = iel1->length; uncompr = (BYTE *)malloc(uncomprLen); if (!uncompr) return -1; compr = (BYTE *)(iel1 + 1); comprLen = iel1_len - sizeof(*iel1); actlen = lzss_decompress(uncompr, uncomprLen, compr, comprLen); if (actlen != uncomprLen) { free(uncompr); return -1; } *ret_buf = uncompr; *ret_len = actlen; return 0; } /********************* WST *********************/ /* 封包匹配回调函数 */ static int IPAC_WST_match(struct package *pkg) { s8 magic[4]; if (pkg->pio->open(pkg, IO_READONLY)) return -CUI_EOPEN; if (pkg->pio->read(pkg, magic, sizeof(magic))) { pkg->pio->close(pkg); return -CUI_EREAD; } if (memcmp(magic, "WST2", 4)) { pkg->pio->close(pkg); return -CUI_EMATCH; } return 0; } /* 封包资源提取函数 */ static int IPAC_WST_extract_resource(struct package *pkg, struct package_resource *pkg_res) { BYTE *wst_buf; u32 wst_buf_len; if (pkg->pio->seek(pkg, 0, IO_SEEK_SET)) return -CUI_ESEEK; if (pkg->pio->length_of(pkg, &wst_buf_len)) return -CUI_ELEN; wst_buf = (BYTE *)malloc(wst_buf_len); if (!wst_buf) return -CUI_EMEM; if (pkg->pio->read(pkg, wst_buf, wst_buf_len)) { free(wst_buf); return -CUI_EREAD; } pkg_res->raw_data = wst_buf; pkg_res->raw_data_length = wst_buf_len; return 0; } /* 资源保存函数 */ static int IPAC_WST_save_resource(struct resource *res, struct package_resource *pkg_res) { WAVEFORMATEX wav_header; DWORD riff_chunk_len, fmt_chunk_len, data_chunk_len; char *riff = "RIFF"; char *id = "WAVE"; char *fmt_chunk_id = "fmt "; char *data_chunk_id = "data"; char *hack_info = "Hacked By 痴汉公贼"; WORD adpcm_para[16]; BYTE *data_chunk; wst_header_t *wst2; BYTE *wst_buf = (BYTE *)pkg_res->raw_data; DWORD wst_buf_len = pkg_res->raw_data_length; if (res->rio->create(res)) return -CUI_ECREATE; wst2 = (wst_header_t *)wst_buf; /* 这个应该是还原为ADCM以后的结果 */ /* 00441E00 01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10 00 ....D?..?..... */ wav_header.wFormatTag = 2; /* ADPCM */ wav_header.nChannels = 2; wav_header.nSamplesPerSec = 0xac44; wav_header.nAvgBytesPerSec = 0xac44; /* ADPCM是4:1压缩,因此ac44的4倍就是0x2b110了 */ wav_header.nBlockAlign = 0x800; wav_header.wBitsPerSample = 4; wav_header.cbSize = 32; adpcm_para[0] = 0x07f4; adpcm_para[1] = 0x0007; memcpy(&adpcm_para[2], wst2->adpcm_fmt_parameter, sizeof(wst2->adpcm_fmt_parameter)); data_chunk = (BYTE *)(wst2 + 1); data_chunk_len = wst_buf_len - sizeof(*wst2); data_chunk_len &= ~(wav_header.nBlockAlign - 1); fmt_chunk_len = 16 + 2 + wav_header.cbSize; riff_chunk_len = 4 + (8 + fmt_chunk_len) + (8 + data_chunk_len); if (res->rio->write(res, (char *)riff, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, &riff_chunk_len, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, id, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, fmt_chunk_id, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, &fmt_chunk_len, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, &wav_header, sizeof(wav_header))) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, adpcm_para, sizeof(adpcm_para))) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, data_chunk_id, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, &data_chunk_len, 4)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, data_chunk, data_chunk_len)) { res->rio->close(res); return -CUI_EWRITE; } if (res->rio->write(res, hack_info, strlen(hack_info))) { res->rio->close(res); return -CUI_EWRITE; } res->rio->close(res); return 0; } /* 封包资源释放函数 */ static void IPAC_WST_release_resource(struct package *pkg, struct package_resource *pkg_res) { if (pkg_res->raw_data) { free(pkg_res->raw_data); pkg_res->raw_data = NULL; } } /* 封包卸载函数 */ static void IPAC_WST_release(struct package *pkg, struct package_directory *pkg_dir) { pkg->pio->close(pkg); } /* 封包处理回调函数集合 */ static cui_ext_operation IPAC_WST_operation = { IPAC_WST_match, /* match */ NULL, /* extract_directory */ NULL, /* parse_resource_info */ IPAC_WST_extract_resource, /* extract_resource */ IPAC_WST_save_resource, /* save_resource */ IPAC_WST_release_resource, /* release_resource */ IPAC_WST_release /* release */ }; /********************* PAK *********************/ /* 封包匹配回调函数 */ static int IPAC_PAK_match(struct package *pkg) { s8 magic[4]; if (pkg->pio->open(pkg, IO_READONLY)) return -CUI_EOPEN; if (pkg->pio->read(pkg, magic, sizeof(magic))) { pkg->pio->close(pkg); return -CUI_EREAD; } if (memcmp(magic, "IPAC", 4)) { pkg->pio->close(pkg); return -CUI_EMATCH; } return 0; } /* 封包索引目录提取函数 */ static int IPAC_PAK_extract_directory(struct package *pkg, struct package_directory *pkg_dir) { PAK_header_t PAK_header; PAK_entry_t *index_buffer; unsigned int index_buffer_length; if (pkg->pio->seek(pkg, 0, IO_SEEK_SET)) return -CUI_ESEEK; if (pkg->pio->read(pkg, &PAK_header, sizeof(PAK_header))) return -CUI_EREAD; pkg_dir->index_entries = PAK_header.index_entries; index_buffer_length = pkg_dir->index_entries * sizeof(PAK_entry_t); index_buffer = (PAK_entry_t *)malloc(index_buffer_length); if (!index_buffer) return -CUI_EMEM; if (pkg->pio->read(pkg, index_buffer, index_buffer_length)) { free(index_buffer); return -CUI_EREAD; } pkg_dir->directory = index_buffer; pkg_dir->directory_length = index_buffer_length; pkg_dir->index_entry_length = sizeof(PAK_entry_t); return 0; } /* 封包索引项解析函数 */ static int IPAC_PAK_parse_resource_info(struct package *pkg, struct package_resource *pkg_res) { PAK_entry_t *PAK_entry; PAK_entry = (PAK_entry_t *)pkg_res->actual_index_entry; strcpy(pkg_res->name, PAK_entry->name); pkg_res->name_length = -1; /* -1表示名称以NULL结尾 */ pkg_res->raw_data_length = PAK_entry->length; pkg_res->actual_data_length = 0; /* 数据都是明文 */ pkg_res->offset = PAK_entry->offset; return 0; } /* 封包资源提取函数 */ static int IPAC_PAK_extract_resource(struct package *pkg, struct package_resource *pkg_res) { BYTE *compr, *uncompr, *actbuf; DWORD uncomprlen, comprlen, actlen; comprlen = pkg_res->raw_data_length; compr = (BYTE *)malloc(comprlen); if (!compr) return -CUI_EMEM; if (pkg->pio->readvec(pkg, compr, comprlen, pkg_res->offset, IO_SEEK_SET)) { free(compr); return -CUI_EREADVEC; } if (pkg_res->flags & PKG_RES_FLAG_RAW) { pkg_res->raw_data = compr; return 0; } if (!memcmp(compr, "IEL1", 4)) { if (ipac_decompress_iel1((iel1_header_t *)compr, comprlen, &uncompr, &uncomprlen)) { free(compr); return -CUI_EUNCOMPR; } free(compr); compr = NULL; actbuf = uncompr; actlen = uncomprlen; } else { uncompr = NULL; uncomprlen = 0; actbuf = compr; actlen = comprlen; } if (!memcmp(actbuf, "IES2", 4)) { ies2_header_t *ies2 = (ies2_header_t *)actbuf; BYTE *save_buf; DWORD save_len; if (ies2->bits_count == 24) { BYTE *rgba; actlen = ies2->width * ies2->height * 4; rgba = (BYTE *)malloc(actlen); if (!rgba) { free(actbuf); free(compr); return -CUI_EMEM; } BYTE *rgb = actbuf + 0x420; BYTE *p_alpha = rgb + ies2->width * ies2->height * 3; BYTE *p_rgba = rgba; for (unsigned int y = 0; y < ies2->height; y++) { for (unsigned int x = 0; x < ies2->width; x++) { BYTE alpha = *p_alpha++; p_rgba[0] = (rgb[0] * alpha + 0xff * ~alpha) / 255; p_rgba[1] = (rgb[1] * alpha + 0xff * ~alpha) / 255; p_rgba[2] = (rgb[2] * alpha + 0xff * ~alpha) / 255; p_rgba[3] = alpha; rgb += 3; p_rgba += 4; } } if (MyBuildBMPFile(rgba, actlen, NULL, 0, ies2->width, 0 - ies2->height, 32, &save_buf, &save_len, my_malloc)) { free(rgba); free(actbuf); free(compr); return -CUI_EMEM; } free(rgba); } else { if (MyBuildBMPFile(actbuf + 0x420, actlen - 0x420, (BYTE *)(ies2 + 1), 0x400, ies2->width, 0 - ies2->height, ies2->bits_count, &save_buf, &save_len, my_malloc)) { free(actbuf); free(compr); return -CUI_EMEM; } } free(actbuf); uncompr = save_buf; uncomprlen = save_len; pkg_res->replace_extension = _T(".IES2.bmp"); pkg_res->flags |= PKG_RES_FLAG_REEXT; // } else if (!lstrcmpi(pkg->extension, _T(".IES"))) { } else if (strstr(pkg_res->name, ".IES")) { BYTE *save_buf; DWORD save_len; #if 0 // if (MyBuildBMPFile(actbuf + 0x420, actlen - 0x420, actbuf + 0x20, 0x400, *(DWORD *)actbuf, if (MyBuildBMPFile(actbuf + 0x414, actlen - 0x414, NULL, 0, *(DWORD *)actbuf, 0 - *(DWORD *)(actbuf + 4), *(DWORD *)(actbuf + 8), &save_buf, &save_len, my_malloc)) { free(actbuf); return -CUI_EMEM; } #else if (!memcmp(actbuf, "BM", 2)) { pkg_res->raw_data = compr; pkg_res->raw_data_length = comprlen; pkg_res->actual_data = actbuf; pkg_res->actual_data_length = actlen; return 0; } else if (*(DWORD *)(actbuf + 8) == 24) { DWORD width = *(DWORD *)actbuf; DWORD height = *(DWORD *)(actbuf + 4); BYTE *rgba; actlen = width * height * 4; rgba = (BYTE *)malloc(actlen); if (!rgba) { free(actbuf); free(compr); return -CUI_EMEM; } BYTE *rgb = actbuf + 0x414; BYTE *p_alpha = rgb + width * height * 3; BYTE *p_rgba = rgba; for (unsigned int y = 0; y < height; y++) { for (unsigned int x = 0; x < width; x++) { BYTE alpha = *p_alpha++; p_rgba[0] = (rgb[0] * alpha + 0xff * ~alpha) / 255; p_rgba[1] = (rgb[1] * alpha + 0xff * ~alpha) / 255; p_rgba[2] = (rgb[2] * alpha + 0xff * ~alpha) / 255; p_rgba[3] = alpha; rgb += 3; p_rgba += 4; } } if (MyBuildBMPFile(rgba, actlen, NULL, 0, width, 0 - height, 32, &save_buf, &save_len, my_malloc)) { free(rgba); free(actbuf); free(compr); return -CUI_EMEM; } free(rgba); } else { if (MyBuildBMPFile(actbuf + 0x414, actlen - 0x414, NULL, 0, *(DWORD *)actbuf, 0 - *(DWORD *)(actbuf + 4), *(DWORD *)(actbuf + 8), &save_buf, &save_len, my_malloc)) { free(actbuf); free(compr); return -CUI_EMEM; } } #endif free(actbuf); uncompr = save_buf; uncomprlen = save_len; pkg_res->replace_extension = _T(".IES.bmp"); pkg_res->flags |= PKG_RES_FLAG_REEXT; } pkg_res->raw_data = compr; pkg_res->raw_data_length = comprlen; pkg_res->actual_data = uncompr; pkg_res->actual_data_length = uncomprlen; return 0; } /* 资源保存函数 */ static int IPAC_PAK_save_resource(struct resource *res, struct package_resource *pkg_res) { if (res->rio->create(res)) return -CUI_ECREATE; if (pkg_res->actual_data && pkg_res->actual_data_length) { if (res->rio->write(res, pkg_res->actual_data, pkg_res->actual_data_length)) { res->rio->close(res); return -CUI_EWRITE; } } else if (pkg_res->raw_data && pkg_res->raw_data_length) { if (res->rio->write(res, pkg_res->raw_data, pkg_res->raw_data_length)) { res->rio->close(res); return -CUI_EWRITE; } } res->rio->close(res); return 0; } /* 封包资源释放函数 */ static void IPAC_PAK_release_resource(struct package *pkg, struct package_resource *pkg_res) { if (pkg_res->actual_data) { free(pkg_res->actual_data); pkg_res->actual_data = NULL; } if (pkg_res->raw_data) { free(pkg_res->raw_data); pkg_res->raw_data = NULL; } } /* 封包卸载函数 */ static void IPAC_PAK_release(struct package *pkg, struct package_directory *pkg_dir) { if (pkg_dir->directory) { free(pkg_dir->directory); pkg_dir->directory = NULL; } pkg->pio->close(pkg); } /* 封包处理回调函数集合 */ static cui_ext_operation IPAC_PAK_operation = { IPAC_PAK_match, /* match */ IPAC_PAK_extract_directory, /* extract_directory */ IPAC_PAK_parse_resource_info, /* parse_resource_info */ IPAC_PAK_extract_resource, /* extract_resource */ IPAC_PAK_save_resource, /* save_resource */ IPAC_PAK_release_resource, /* release_resource */ IPAC_PAK_release /* release */ }; /* 接口函数: 向cui_core注册支持的封包类型 */ int CALLBACK IPAC_register_cui(struct cui_register_callback *callback) { /* 注册cui插件支持的扩展名、资源放入扩展名、处理回调函数和封包属性 */ if (callback->add_extension(callback->cui, _T(".PAK"), NULL, NULL, &IPAC_PAK_operation, CUI_EXT_FLAG_PKG | CUI_EXT_FLAG_DIR)) return -1; if (callback->add_extension(callback->cui, _T(".WST"), _T(".wav"), NULL, &IPAC_WST_operation, CUI_EXT_FLAG_PKG)) return -1; return 0; } For starters, If anyone happens to have a copy of Filepack32.exe please re-upload it to someplace. Edit: I got adpack32 to work, and it doesn't support this specific type of PAK. I'm really lost now. If anyone has suggestions or tips I would appreciate it greatly, these PAK and Noa archives have been driving me crazy for a few days now.
  21. So I've been trying to do a localization for Yosuga No Sora (VN), and the archive type this game uses is .noa. My main goal right now is to edit the image files inside (which are .eri files), repack the files into a noa archive and get it to work. I've found out about noa32 and attempted to unpack->repack the noa files with it, but once I create a new archive and replace the original file, the game doesn't read any of the data inside the archive (ex: When I make a new noa archive with image data, the parts where it's supposed to show those images just turn up blank) I've even tried to simply unpack the archive then repack it without modifying anything, but the same problem occurs. The only hint I have as of now is that the newly created noa archive(with no modification of content) is 10mbs smaller than the original (265mb -> 255mb), so I can only assume that something goes missing in the process of unpacking or repacking. Any help would be greatly appreciated, I'm seriously at a complete loss for what to do at this point. Ps: I'm currently doing this under japanese locale settings, and my operating system is windows 10.
  22. Hello, I'm trying to make a patch of a game called Hatsukare Ecchi, but for some reason, I can't seem to make a patch it will read. When I use any programme other than KrkrExtract it ignores the file, but when I do use it, I get this error: What should I do? Any help is appreciated, thank you! (Sorry if the answer is somewhere on here, I tried looking it up and couldn't find anything. ^^;;)
  23. First off, I'm new to this forum, but i can't seem to solve my problems so I'm desperately making an account to try and solve all this. i apologize if i posted in the wrong forum. I'm attempting to translate "Torikago no Marriage" also known as Birdcage Marriage or 鳥籠のマリアージュ. The game was developed by Kalmia8. is listed to use the KiriKiri2 engine. VNDB page: https://vndb.org/v13849 First off: I am translating the .png images i have extracted from the game's data.xp3 with a nekopara bms script (http://aluigi.altervista.org/papers/bms/others/nekopara.bms), krkrextract is an absolute nightmare to work with and this script worked just fine. all the images extract as png. no fancy files to work with. but when repacking (i have tried this with krkrextract, it worked that one time, as well as the old xp3-tools) i thought xp3-tools didn't work due to how old it was, so i tried krkrextract and...? hooray! the same error. something about startup.tjs not being found. and who would have known...? there isn't a startup.tjs in data.xp3, neither is it anywhere else. Second off: People say that all the text is stored in scenario.xp3 with all the ks files... well guess what? this game doesn't even have a scenario.xp3! not even a single one of the files in any xp3 for the game has a damn ks file. and this is the same case for "Kami-sama nante yondenai!" which is also a game by Kalmia8, however, Fashioning Little Miss Lonesome, a game which was actually localized, did have all the files i'm missing. good to note that the games still ran with scripts so they are somewhere Third off: I heard that the missing tjs file error can be solved by removing the checks for the files, which could ultimately solve my problem regarding the missing non-existent file. but it involves editing a ks file. guess who doesn't have the ks file? other things to note, when the .xp3.sig files for the xp3 files are removed from the folder (as well as the tpm, which i heard was part of the protection), the game still runs. nothing stopped the game from running until i removed the original data.xp3 which didn't prompt an error for startup.tjs, only my modified data.xp3 prompted the error to show. I tried listing as much information as I can about the problem. I really hope someone can come over to this post and bless me with some help. this is driving me insane.
  24. Hello, Im starting a new fan TL project. The engine is siglus engine, I used siglus extract to unpack the scene.cpk file which resulted in two types of files: .ss and .txt. My question is, what to do next? I tried editing the txt and repacking but that won't work. Please help. Edit: since we talked about a lot of tools, might as well reperpouse this thread to general siglus engine related questions.