mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-11-24 15:00:11 +01:00
fix ea psx coding
git-svn-id: https://vgmstream.svn.sourceforge.net/svnroot/vgmstream@278 51a99a44-fe44-0410-b1ba-c3e57ba2b86b
This commit is contained in:
parent
fd4f7a9eec
commit
183089bfcb
@ -27,23 +27,25 @@ void ea_block_update(off_t block_offset, VGMSTREAM * vgmstream) {
|
||||
vgmstream->ch[i].offset=read_32bitBE(block_offset+0x0C+(i*4),vgmstream->ch[0].streamfile)+(4*vgmstream->channels);
|
||||
vgmstream->ch[i].offset+=vgmstream->current_block_offset+0x0C;
|
||||
}
|
||||
vgmstream->current_block_size /= 28;
|
||||
|
||||
} else {
|
||||
if(vgmstream->coding_type==coding_PSX) {
|
||||
vgmstream->ch[0].offset=vgmstream->current_block_offset+0x10;
|
||||
vgmstream->ch[1].offset=(read_32bitLE(block_offset+0x04,vgmstream->ch[0].streamfile)-0x10)/2;
|
||||
vgmstream->ch[1].offset=(read_32bitLE(block_offset+0x04,vgmstream->ch[0].streamfile)-0x10)/vgmstream->channels;
|
||||
vgmstream->ch[1].offset+=vgmstream->ch[0].offset;
|
||||
vgmstream->current_block_size=read_32bitLE(block_offset+0x0C,vgmstream->ch[0].streamfile)*0x10;
|
||||
vgmstream->current_block_size=read_32bitLE(block_offset+0x04,vgmstream->ch[0].streamfile)-0x10;
|
||||
vgmstream->current_block_size/=vgmstream->channels;
|
||||
} else {
|
||||
vgmstream->current_block_size = read_32bitLE(block_offset+8,vgmstream->ch[0].streamfile);
|
||||
for(i=0;i<vgmstream->channels;i++) {
|
||||
vgmstream->ch[i].offset=read_32bitLE(block_offset+0x0C+(i*4),vgmstream->ch[0].streamfile)+(4*vgmstream->channels);
|
||||
vgmstream->ch[i].offset+=vgmstream->current_block_offset+0x0C;
|
||||
}
|
||||
vgmstream->current_block_size /= 28;
|
||||
}
|
||||
}
|
||||
|
||||
vgmstream->current_block_size /= 28;
|
||||
|
||||
if((vgmstream->ea_compression_version<3) && (vgmstream->coding_type!=coding_PSX)) {
|
||||
for(i=0;i<vgmstream->channels;i++) {
|
||||
if(vgmstream->ea_big_endian) {
|
||||
@ -56,5 +58,4 @@ void ea_block_update(off_t block_offset, VGMSTREAM * vgmstream) {
|
||||
vgmstream->ch[i].offset+=4;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -225,7 +225,10 @@ VGMSTREAM * init_vgmstream_ea(STREAMFILE *streamFile) {
|
||||
|
||||
do {
|
||||
ea_block_update(vgmstream->next_block_offset,vgmstream);
|
||||
vgmstream->num_samples+=(int32_t)vgmstream->current_block_size*28;
|
||||
if(vgmstream->coding_type==coding_PSX)
|
||||
vgmstream->num_samples+=(int32_t)vgmstream->current_block_size/16*28;
|
||||
else
|
||||
vgmstream->num_samples+=(int32_t)vgmstream->current_block_size*28;
|
||||
} while(vgmstream->next_block_offset<(off_t)(file_length-block_length));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user