Temp commit. Need to store all sh... Changes

This commit is contained in:
korenkonder
2022-06-13 02:18:05 +03:00
parent 913c874c01
commit 82da8a484d
261 changed files with 23706 additions and 17661 deletions
+124 -129
View File
@@ -5,21 +5,21 @@
#include "pvpp.hpp"
#include "f2/struct.hpp"
#include "io/path.h"
#include "io/stream.h"
#include "io/path.hpp"
#include "io/stream.hpp"
#include "hash.hpp"
#include "str_utils.h"
#include "str_utils.hpp"
static void pvpp_a3da_read(pvpp_a3da* a3d, stream* s);
static void pvpp_chara_read(pvpp_chara* chr, stream* s);
static void pvpp_chara_effect_read(pvpp_chara_effect* chr_eff, stream* s);
static void pvpp_chara_effect_a3da_read(pvpp_chara_effect_a3da* chr_pv_eff, stream* s);
static void pvpp_chara_item_read(pvpp_chara_item* chr_itm, stream* s);
static void pvpp_effect_read(pvpp_effect* eff, stream* s);
static void pvpp_glitter_read(pvpp_glitter* glt, stream* s);
static void pvpp_motion_read(pvpp_motion* mot, stream* s);
static void pvpp_object_set_read(pvpp_object_set* objset, stream* s);
static void pvpp_read_inner(pvpp* pp, stream* s);
static void pvpp_a3da_read(pvpp_a3da* a3d, stream& s);
static void pvpp_chara_read(pvpp_chara* chr, stream& s);
static void pvpp_chara_effect_read(pvpp_chara_effect* chr_eff, stream& s);
static void pvpp_chara_effect_a3da_read(pvpp_chara_effect_a3da* chr_pv_eff, stream& s);
static void pvpp_chara_item_read(pvpp_chara_item* chr_itm, stream& s);
static void pvpp_effect_read(pvpp_effect* eff, stream& s);
static void pvpp_glitter_read(pvpp_glitter* glt, stream& s);
static void pvpp_motion_read(pvpp_motion* mot, stream& s);
static void pvpp_object_set_read(pvpp_object_set* objset, stream& s);
static void pvpp_read_inner(pvpp* pp, stream& s);
pvpp::pvpp() : ready() {
@@ -36,10 +36,9 @@ void pvpp::read(const char* path) {
char* path_pvpp = str_utils_add(path, ".pvpp");
if (path_check_file_exists(path_pvpp)) {
stream s;
io_open(&s, path_pvpp, "rb");
s.open(path_pvpp, "rb");
if (s.io.stream)
pvpp_read_inner(this, &s);
io_free(&s);
pvpp_read_inner(this, s);
}
free(path_pvpp);
}
@@ -51,10 +50,9 @@ void pvpp::read(const wchar_t* path) {
wchar_t* path_pvpp = str_utils_add(path, L".pvpp");
if (path_check_file_exists(path_pvpp)) {
stream s;
io_open(&s, path_pvpp, L"rb");
s.open(path_pvpp, L"rb");
if (s.io.stream)
pvpp_read_inner(this, &s);
io_free(&s);
pvpp_read_inner(this, s);
}
free(path_pvpp);
}
@@ -64,9 +62,8 @@ void pvpp::read(const void* data, size_t size) {
return;
stream s;
io_open(&s, data, size);
pvpp_read_inner(this, &s);
io_free(&s);
s.open(data, size);
pvpp_read_inner(this, s);
}
bool pvpp::load_file(void* data, const char* path, const char* file, uint32_t hash) {
@@ -157,204 +154,202 @@ pvpp_object_set::~pvpp_object_set() {
}
static void pvpp_a3da_read(pvpp_a3da* a3d, stream* s) {
io_read_string_null_terminated_offset(s, io_read_offset_x(s), &a3d->name);
a3d->hash = io_read_uint32_t_stream_reverse_endianness(s);
io_align_read(s, 0x08);
static void pvpp_a3da_read(pvpp_a3da* a3d, stream& s) {
a3d->name = s.read_string_null_terminated_offset(s.read_offset_x());
a3d->hash = s.read_uint32_t_reverse_endianness();
s.align_read(0x08);
}
static void pvpp_chara_read(pvpp_chara* chr, stream* s) {
int8_t u00 = io_read_int8_t(s);
int8_t u01 = io_read_int8_t(s);
int8_t motion_count = io_read_int8_t(s);
int8_t a3da_count = io_read_int8_t(s);
int8_t item_count = io_read_int8_t(s);
int8_t u05 = io_read_int8_t(s);
int8_t glitter_count = io_read_int8_t(s);
int8_t u07 = io_read_int8_t(s);
size_t chr_eff_offset = io_read_offset_x(s);
size_t motion_offset = io_read_offset_x(s);
size_t a3da_offset = io_read_offset_x(s);
size_t item_offset = io_read_offset_x(s);
size_t glitter_offset = io_read_offset_x(s);
size_t o30 = io_read_offset_x(s);
static void pvpp_chara_read(pvpp_chara* chr, stream& s) {
int8_t u00 = s.read_int8_t();
int8_t u01 = s.read_int8_t();
int8_t motion_count = s.read_int8_t();
int8_t a3da_count = s.read_int8_t();
int8_t item_count = s.read_int8_t();
int8_t u05 = s.read_int8_t();
int8_t glitter_count = s.read_int8_t();
int8_t u07 = s.read_int8_t();
size_t chr_eff_offset = s.read_offset_x();
size_t motion_offset = s.read_offset_x();
size_t a3da_offset = s.read_offset_x();
size_t item_offset = s.read_offset_x();
size_t glitter_offset = s.read_offset_x();
size_t o30 = s.read_offset_x();
chr->chara_effect_init = false;
if (chr_eff_offset) {
io_position_push(s, chr_eff_offset, SEEK_SET);
s.position_push(chr_eff_offset, SEEK_SET);
pvpp_chara_effect_read(&chr->chara_effect, s);
chr->chara_effect_init = true;
io_position_pop(s);
s.position_pop();
}
chr->motion.resize(motion_count);
io_position_push(s, motion_offset, SEEK_SET);
s.position_push(motion_offset, SEEK_SET);
for (pvpp_motion& i : chr->motion) {
io_position_push(s, io_read_offset_x(s), SEEK_SET);
s.position_push(s.read_offset_x(), SEEK_SET);
pvpp_motion_read(&i, s);
io_position_pop(s);
s.position_pop();
}
io_position_pop(s);
s.position_pop();
chr->a3da.resize(a3da_count);
io_position_push(s, a3da_offset, SEEK_SET);
s.position_push(a3da_offset, SEEK_SET);
for (pvpp_a3da& i : chr->a3da)
pvpp_a3da_read(&i, s);
io_position_pop(s);
s.position_pop();
chr->item.resize(item_count);
io_position_push(s, item_offset, SEEK_SET);
s.position_push(item_offset, SEEK_SET);
for (pvpp_chara_item& i : chr->item)
pvpp_chara_item_read(&i, s);
io_position_pop(s);
s.position_pop();
chr->glitter.resize(glitter_count);
io_position_push(s, glitter_offset, SEEK_SET);
s.position_push(glitter_offset, SEEK_SET);
for (pvpp_glitter& i : chr->glitter)
pvpp_glitter_read(&i, s);
io_position_pop(s);
s.position_pop();
}
static void pvpp_chara_effect_read(pvpp_chara_effect* chr_eff, stream* s) {
chr_eff->base_chara = (pvpp_chara_type)io_read_uint8_t(s);
int8_t pv_effects_count = io_read_int8_t(s);
chr_eff->chara_index = (pvpp_chara_index)io_read_uint8_t(s);
size_t pv_effects_offstet = io_read_offset_x(s);
static void pvpp_chara_effect_read(pvpp_chara_effect* chr_eff, stream& s) {
chr_eff->base_chara = (pvpp_chara_type)s.read_uint8_t();
int8_t pv_effects_count = s.read_int8_t();
chr_eff->chara_index = (pvpp_chara_index)s.read_uint8_t();
size_t pv_effects_offstet = s.read_offset_x();
chr_eff->effect_a3da.resize(pv_effects_count);
io_position_push(s, pv_effects_offstet, SEEK_SET);
s.position_push(pv_effects_offstet, SEEK_SET);
for (pvpp_chara_effect_a3da& i : chr_eff->effect_a3da)
pvpp_chara_effect_a3da_read(&i, s);
io_position_pop(s);
s.position_pop();
}
static void pvpp_chara_effect_a3da_read(pvpp_chara_effect_a3da* chr_eff_a3da, stream* s) {
chr_eff_a3da->u00 = io_read_uint8_t(s);
chr_eff_a3da->u01 = io_read_uint8_t(s);
chr_eff_a3da->u02 = io_read_uint8_t(s);
chr_eff_a3da->u03 = io_read_uint8_t(s);
chr_eff_a3da->u04 = io_read_uint8_t(s);
chr_eff_a3da->u05 = io_read_uint8_t(s);
chr_eff_a3da->u06 = io_read_uint8_t(s);
chr_eff_a3da->u07 = io_read_uint8_t(s);
size_t a3da_offset = io_read_offset_x(s);
size_t source_a3da_offset = io_read_offset_x(s);
static void pvpp_chara_effect_a3da_read(pvpp_chara_effect_a3da* chr_eff_a3da, stream& s) {
chr_eff_a3da->u00 = s.read_uint8_t();
chr_eff_a3da->u01 = s.read_uint8_t();
chr_eff_a3da->u02 = s.read_uint8_t();
chr_eff_a3da->u03 = s.read_uint8_t();
chr_eff_a3da->u04 = s.read_uint8_t();
chr_eff_a3da->u05 = s.read_uint8_t();
chr_eff_a3da->u06 = s.read_uint8_t();
chr_eff_a3da->u07 = s.read_uint8_t();
size_t a3da_offset = s.read_offset_x();
size_t source_a3da_offset = s.read_offset_x();
io_position_push(s, a3da_offset, SEEK_SET);
s.position_push(a3da_offset, SEEK_SET);
pvpp_a3da_read(&chr_eff_a3da->a3da, s);
io_position_pop(s);
s.position_pop();
chr_eff_a3da->has_object_set = false;
if (source_a3da_offset) {
io_position_push(s, source_a3da_offset, SEEK_SET);
s.position_push(source_a3da_offset, SEEK_SET);
pvpp_object_set_read(&chr_eff_a3da->object_set, s);
chr_eff_a3da->has_object_set = true;
io_position_pop(s);
s.position_pop();
}
}
static void pvpp_chara_item_read(pvpp_chara_item* chr_itm, stream* s) {
int8_t a3das_count = io_read_int8_t(s);
size_t a3das_offset = io_read_offset_x(s);
size_t bone_offset = io_read_offset_x(s);
chr_itm->u18.x = io_read_float_t_stream_reverse_endianness(s);
chr_itm->u18.y = io_read_float_t_stream_reverse_endianness(s);
chr_itm->u18.z = io_read_float_t_stream_reverse_endianness(s);
chr_itm->u18.w = io_read_float_t_stream_reverse_endianness(s);
static void pvpp_chara_item_read(pvpp_chara_item* chr_itm, stream& s) {
int8_t a3das_count = s.read_int8_t();
size_t a3das_offset = s.read_offset_x();
size_t bone_offset = s.read_offset_x();
chr_itm->u18.x = s.read_float_t_reverse_endianness();
chr_itm->u18.y = s.read_float_t_reverse_endianness();
chr_itm->u18.z = s.read_float_t_reverse_endianness();
chr_itm->u18.w = s.read_float_t_reverse_endianness();
chr_itm->a3da.resize(a3das_count);
io_position_push(s, a3das_offset, SEEK_SET);
s.position_push(a3das_offset, SEEK_SET);
for (pvpp_a3da& i : chr_itm->a3da)
pvpp_a3da_read(&i, s);
io_position_pop(s);
s.position_pop();
io_read_string_null_terminated_offset(s, bone_offset, &chr_itm->bone);
chr_itm->bone = s.read_string_null_terminated_offset(bone_offset);
}
static void pvpp_effect_read(pvpp_effect* eff, stream* s) {
int8_t a3das_count = io_read_int8_t(s);
int8_t glitters_count = io_read_int8_t(s);
eff->chara_index = (pvpp_chara_type)io_read_uint8_t(s);
int64_t a3das_offset = io_read_offset_x(s);
int64_t glitters_offset = io_read_offset_x(s);
static void pvpp_effect_read(pvpp_effect* eff, stream& s) {
int8_t a3das_count = s.read_int8_t();
int8_t glitters_count = s.read_int8_t();
eff->chara_index = (pvpp_chara_type)s.read_uint8_t();
int64_t a3das_offset = s.read_offset_x();
int64_t glitters_offset = s.read_offset_x();
eff->a3da.resize(a3das_count);
io_position_push(s, a3das_offset, SEEK_SET);
s.position_push(a3das_offset, SEEK_SET);
for (pvpp_a3da& i : eff->a3da)
pvpp_a3da_read(&i, s);
io_position_pop(s);
s.position_pop();
eff->glitter.resize(glitters_count);
io_position_push(s, glitters_offset, SEEK_SET);
s.position_push(glitters_offset, SEEK_SET);
for (pvpp_glitter& i : eff->glitter)
pvpp_glitter_read(&i, s);
io_position_pop(s);
s.position_pop();
}
static void pvpp_glitter_read(pvpp_glitter* glt, stream* s) {
io_read_string_null_terminated_offset(s, io_read_offset_x(s), &glt->name);
io_read_string_null_terminated_offset(s, io_read_offset_x(s), &glt->unk1);
glt->unk2 = io_read_uint8_t(s) ? true : false;
io_align_read(s, 0x08);
static void pvpp_glitter_read(pvpp_glitter* glt, stream& s) {
glt->name = s.read_string_null_terminated_offset(s.read_offset_x());
glt->unk1 = s.read_string_null_terminated_offset(s.read_offset_x());
glt->unk2 = s.read_uint8_t() ? true : false;
s.align_read(0x08);
}
static void pvpp_motion_read(pvpp_motion* mot, stream* s) {
io_read_string_null_terminated_offset(s, io_read_offset_x(s), &mot->name);
mot->hash = io_read_uint32_t_stream_reverse_endianness(s);
io_align_read(s, 0x08);
static void pvpp_motion_read(pvpp_motion* mot, stream& s) {
mot->name = s.read_string_null_terminated_offset(s.read_offset_x());
mot->hash = s.read_uint32_t_reverse_endianness();
s.align_read(0x08);
}
static void pvpp_object_set_read(pvpp_object_set* objset, stream* s) {
io_read_string_null_terminated_offset(s, io_read_offset_x(s), &objset->name);
objset->hash = io_read_uint32_t_stream_reverse_endianness(s);
io_align_read(s, 0x08);
static void pvpp_object_set_read(pvpp_object_set* objset, stream& s) {
objset->name = s.read_string_null_terminated_offset(s.read_offset_x());
objset->hash = s.read_uint32_t_reverse_endianness();
s.align_read(0x08);
}
static void pvpp_read_inner(pvpp* pp, stream* s) {
static void pvpp_read_inner(pvpp* pp, stream& s) {
f2_struct st;
st.read(s);
if (st.header.signature != reverse_endianness_uint32_t('PVPP') || !st.data.data())
return;
stream s_pvpp;
io_open(&s_pvpp, &st.data);
s_pvpp.open(st.data);
s_pvpp.is_big_endian = st.header.use_big_endian;
io_read_uint32_t_stream_reverse_endianness(&s_pvpp);
int8_t chara_count = io_read_int8_t(&s_pvpp);
int64_t effect_offset = io_read_offset_x(&s_pvpp);
int64_t chara_offset = io_read_offset_x(&s_pvpp);
io_read_offset_x(&s_pvpp);
s_pvpp.read_uint32_t_reverse_endianness();
int8_t chara_count = s_pvpp.read_int8_t();
int64_t effect_offset = s_pvpp.read_offset_x();
int64_t chara_offset = s_pvpp.read_offset_x();
s_pvpp.read_offset_x();
pp->chara.resize(chara_count);
io_position_push(&s_pvpp, chara_offset, SEEK_SET);
s_pvpp.position_push(chara_offset, SEEK_SET);
for (pvpp_chara& i : pp->chara)
pvpp_chara_read(&i, &s_pvpp);
io_position_pop(&s_pvpp);
pvpp_chara_read(&i, s_pvpp);
s_pvpp.position_pop();
io_position_push(&s_pvpp, effect_offset, SEEK_SET);
io_read_uint8_t(&s_pvpp);
int8_t efffect_count = io_read_int8_t(&s_pvpp);
effect_offset = io_read_offset_x(&s_pvpp);
io_position_pop(&s_pvpp);
s_pvpp.position_push( effect_offset, SEEK_SET);
s_pvpp.read_uint8_t();
int8_t efffect_count = s_pvpp.read_int8_t();
effect_offset = s_pvpp.read_offset_x();
s_pvpp.position_pop();
pp->effect.resize(efffect_count);
io_position_push(&s_pvpp, effect_offset, SEEK_SET);
s_pvpp.position_push(effect_offset, SEEK_SET);
for (pvpp_effect& i : pp->effect)
pvpp_effect_read(&i, &s_pvpp);
io_position_pop(&s_pvpp);
io_free(&s_pvpp);
pvpp_effect_read(&i, s_pvpp);
s_pvpp.position_pop();
pp->ready = true;
}