Remove zip.c/zip.h
This commit is contained in:
parent
988c2e2655
commit
4a2c77bcc9
3
Makefile
3
Makefile
|
@ -28,7 +28,6 @@ OBJS += cpu_threaded.o
|
||||||
|
|
||||||
OBJS += x86/x86_stub.o
|
OBJS += x86/x86_stub.o
|
||||||
OBJS += cheats.o
|
OBJS += cheats.o
|
||||||
OBJS += zip.o
|
|
||||||
|
|
||||||
OBJS += libretro.o
|
OBJS += libretro.o
|
||||||
OBJS += libco/libco.o
|
OBJS += libco/libco.o
|
||||||
|
@ -66,7 +65,7 @@ cpu_threaded.o: cpu_threaded.c
|
||||||
$(CC) -c -o $@ $< $(ASFLAGS) $(OPTIMIZE)
|
$(CC) -c -o $@ $< $(ASFLAGS) $(OPTIMIZE)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
# rm -f main.o memory.o input.o sound.o x86_stub.o cheats.o zip.o libretro.o
|
# rm -f main.o memory.o input.o sound.o x86_stub.o cheats.o libretro.o
|
||||||
rm -f $(OBJS)
|
rm -f $(OBJS)
|
||||||
rm -f $(TARGET)
|
rm -f $(TARGET)
|
||||||
|
|
||||||
|
|
1
common.h
1
common.h
|
@ -230,7 +230,6 @@ typedef u32 fixed8_24;
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "zip.h"
|
|
||||||
#include "cheats.h"
|
#include "cheats.h"
|
||||||
|
|
||||||
#ifdef ARM_ARCH
|
#ifdef ARM_ARCH
|
||||||
|
|
2
main.c
2
main.c
|
@ -129,7 +129,7 @@ void trigger_ext_event();
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
static const char *file_ext[] = { ".gba", ".bin", ".zip", NULL };
|
static const char *file_ext[] = { ".gba", ".bin", NULL };
|
||||||
|
|
||||||
#ifndef PSP_BUILD
|
#ifndef PSP_BUILD
|
||||||
static void ChangeWorkingDirectory(char *exe)
|
static void ChangeWorkingDirectory(char *exe)
|
||||||
|
|
7
memory.c
7
memory.c
|
@ -2162,14 +2162,9 @@ char gamepak_filename[512];
|
||||||
|
|
||||||
u32 load_gamepak(const char *name)
|
u32 load_gamepak(const char *name)
|
||||||
{
|
{
|
||||||
char *dot_position = strrchr(name, '.');
|
|
||||||
s32 file_size;
|
|
||||||
char cheats_filename[256];
|
char cheats_filename[256];
|
||||||
|
|
||||||
if(!strcmp(dot_position, ".zip"))
|
s32 file_size = load_gamepak_raw(name);
|
||||||
file_size = load_file_zip(name);
|
|
||||||
else
|
|
||||||
file_size = load_gamepak_raw(name);
|
|
||||||
|
|
||||||
// A dumb April fool's joke was here once :o
|
// A dumb April fool's joke was here once :o
|
||||||
|
|
||||||
|
|
159
zip.c
159
zip.c
|
@ -1,159 +0,0 @@
|
||||||
/* gameplaySP
|
|
||||||
*
|
|
||||||
* Copyright (C) 2006 Exophase <exophase@gmail.com>
|
|
||||||
* Copyright (C) 2006 SiberianSTAR
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of
|
|
||||||
* the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include <zlib.h>
|
|
||||||
|
|
||||||
#define ZIP_BUFFER_SIZE (128 * 1024)
|
|
||||||
|
|
||||||
struct SZIPFileDataDescriptor
|
|
||||||
{
|
|
||||||
s32 CRC32;
|
|
||||||
s32 CompressedSize;
|
|
||||||
s32 UncompressedSize;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
struct SZIPFileHeader
|
|
||||||
{
|
|
||||||
char Sig[4]; // EDIT: Used to be s32 Sig;
|
|
||||||
s16 VersionToExtract;
|
|
||||||
s16 GeneralBitFlag;
|
|
||||||
s16 CompressionMethod;
|
|
||||||
s16 LastModFileTime;
|
|
||||||
s16 LastModFileDate;
|
|
||||||
struct SZIPFileDataDescriptor DataDescriptor;
|
|
||||||
s16 FilenameLength;
|
|
||||||
s16 ExtraFieldLength;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
u32 load_file_zip(const char *filename)
|
|
||||||
{
|
|
||||||
struct SZIPFileHeader data;
|
|
||||||
char tmp[1024];
|
|
||||||
s32 retval = -1;
|
|
||||||
u8 *buffer = NULL;
|
|
||||||
u8 *cbuffer;
|
|
||||||
char *ext;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
file_open(fd, filename, read);
|
|
||||||
|
|
||||||
if(!file_check_valid(fd))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
ret = file_read(fd, &data, sizeof(data));
|
|
||||||
if (ret != sizeof(data))
|
|
||||||
break;
|
|
||||||
|
|
||||||
// It checks for the following: 0x50 0x4B 0x03 0x04 (PK..)
|
|
||||||
if( data.Sig[0] != 0x50 || data.Sig[1] != 0x4B ||
|
|
||||||
data.Sig[2] != 0x03 || data.Sig[3] != 0x04 )
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = file_read(fd, tmp, data.FilenameLength);
|
|
||||||
if (ret != data.FilenameLength)
|
|
||||||
break;
|
|
||||||
|
|
||||||
tmp[data.FilenameLength] = 0; // end string
|
|
||||||
|
|
||||||
if(data.ExtraFieldLength)
|
|
||||||
file_seek(fd, data.ExtraFieldLength, SEEK_CUR);
|
|
||||||
|
|
||||||
if(data.GeneralBitFlag & 0x0008)
|
|
||||||
{
|
|
||||||
file_read(fd, &data.DataDescriptor,
|
|
||||||
sizeof(struct SZIPFileDataDescriptor));
|
|
||||||
}
|
|
||||||
|
|
||||||
ext = strrchr(tmp, '.') + 1;
|
|
||||||
|
|
||||||
// file is too big
|
|
||||||
if(data.DataDescriptor.UncompressedSize > gamepak_ram_buffer_size)
|
|
||||||
goto skip;
|
|
||||||
|
|
||||||
if(!strcasecmp(ext, "bin") || !strcasecmp(ext, "gba"))
|
|
||||||
{
|
|
||||||
buffer = gamepak_rom;
|
|
||||||
|
|
||||||
// ok, found
|
|
||||||
switch(data.CompressionMethod)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
retval = data.DataDescriptor.UncompressedSize;
|
|
||||||
file_read(fd, buffer, retval);
|
|
||||||
goto outcode;
|
|
||||||
|
|
||||||
case 8:
|
|
||||||
{
|
|
||||||
z_stream stream;
|
|
||||||
s32 err;
|
|
||||||
|
|
||||||
cbuffer = malloc(ZIP_BUFFER_SIZE);
|
|
||||||
|
|
||||||
stream.next_in = (Bytef*)cbuffer;
|
|
||||||
stream.avail_in = (u32)ZIP_BUFFER_SIZE;
|
|
||||||
|
|
||||||
stream.next_out = (Bytef*)buffer;
|
|
||||||
|
|
||||||
// EDIT: Now uses proper conversion of data types for retval.
|
|
||||||
retval = (u32)data.DataDescriptor.UncompressedSize;
|
|
||||||
stream.avail_out = data.DataDescriptor.UncompressedSize;
|
|
||||||
|
|
||||||
stream.zalloc = (alloc_func)0;
|
|
||||||
stream.zfree = (free_func)0;
|
|
||||||
|
|
||||||
err = inflateInit2(&stream, -MAX_WBITS);
|
|
||||||
|
|
||||||
file_read(fd, cbuffer, ZIP_BUFFER_SIZE);
|
|
||||||
|
|
||||||
if(err == Z_OK)
|
|
||||||
{
|
|
||||||
while(err != Z_STREAM_END)
|
|
||||||
{
|
|
||||||
err = inflate(&stream, Z_SYNC_FLUSH);
|
|
||||||
if(err == Z_BUF_ERROR)
|
|
||||||
{
|
|
||||||
stream.avail_in = ZIP_BUFFER_SIZE;
|
|
||||||
stream.next_in = (Bytef*)cbuffer;
|
|
||||||
file_read(fd, cbuffer, ZIP_BUFFER_SIZE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
err = Z_OK;
|
|
||||||
inflateEnd(&stream);
|
|
||||||
}
|
|
||||||
free(cbuffer);
|
|
||||||
goto outcode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
skip:
|
|
||||||
file_seek(fd, data.DataDescriptor.CompressedSize, SEEK_CUR);
|
|
||||||
}
|
|
||||||
|
|
||||||
outcode:
|
|
||||||
file_close(fd);
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
26
zip.h
26
zip.h
|
@ -1,26 +0,0 @@
|
||||||
/* gameplaySP
|
|
||||||
*
|
|
||||||
* Copyright (C) 2006 Exophase <exophase@gmail.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of
|
|
||||||
* the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef ZIP_H
|
|
||||||
#define ZIP_H
|
|
||||||
|
|
||||||
u32 load_file_zip(const char *filename);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
Loading…
Reference in New Issue