OSX ready, encara no compila. Implementació del lector de GIFs quasi acabada
This commit is contained in:
@@ -10,3 +10,4 @@ Debug/*
|
|||||||
*.opensdf
|
*.opensdf
|
||||||
*.user
|
*.user
|
||||||
*.dll
|
*.dll
|
||||||
|
.DS_Store
|
||||||
34
Info.plist
Normal file
34
Info.plist
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>en</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$(PRODUCT_NAME)</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LSApplicationCategoryType</key>
|
||||||
|
<string>public.app-category.arcade-games</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>Copyright © 2016 Raimon Zamora. All rights reserved.</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>NSApplication</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
370
aee.xcodeproj/project.pbxproj
Normal file
370
aee.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,370 @@
|
|||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 46;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
02252FB81C764D2E002D1DA1 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02252FB71C764D2E002D1DA1 /* main.cpp */; };
|
||||||
|
02B01D591C767C1700CD186D /* SDL2_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02B01D581C767C1700CD186D /* SDL2_image.framework */; };
|
||||||
|
02B01D5B1C767C2C00CD186D /* SDL2_mixer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02B01D5A1C767C2C00CD186D /* SDL2_mixer.framework */; };
|
||||||
|
02EA2BEF1C764B3800E5A247 /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02EA2BEE1C764B3800E5A247 /* SDL2.framework */; };
|
||||||
|
02F8247B1C767CE2007AAE83 /* bola.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F8245D1C767CE2007AAE83 /* bola.cpp */; };
|
||||||
|
02F8247C1C767CE2007AAE83 /* data.jrf in Resources */ = {isa = PBXBuildFile; fileRef = 02F8245F1C767CE2007AAE83 /* data.jrf */; };
|
||||||
|
02F8247D1C767CE2007AAE83 /* engendro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824601C767CE2007AAE83 /* engendro.cpp */; };
|
||||||
|
02F8247E1C767CE2007AAE83 /* jdraw8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824631C767CE2007AAE83 /* jdraw8.cpp */; };
|
||||||
|
02F8247F1C767CE2007AAE83 /* jfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824651C767CE2007AAE83 /* jfile.cpp */; };
|
||||||
|
02F824801C767CE2007AAE83 /* jgame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824671C767CE2007AAE83 /* jgame.cpp */; };
|
||||||
|
02F824811C767CE2007AAE83 /* jinput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824691C767CE2007AAE83 /* jinput.cpp */; };
|
||||||
|
02F824821C767CE2007AAE83 /* jsound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F8246B1C767CE2007AAE83 /* jsound.cpp */; };
|
||||||
|
02F824831C767CE2007AAE83 /* mapa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F8246D1C767CE2007AAE83 /* mapa.cpp */; };
|
||||||
|
02F824841C767CE2007AAE83 /* marcador.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F8246F1C767CE2007AAE83 /* marcador.cpp */; };
|
||||||
|
02F824851C767CE2007AAE83 /* modulegame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824711C767CE2007AAE83 /* modulegame.cpp */; };
|
||||||
|
02F824861C767CE2007AAE83 /* modulesequence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824731C767CE2007AAE83 /* modulesequence.cpp */; };
|
||||||
|
02F824871C767CE2007AAE83 /* momia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824751C767CE2007AAE83 /* momia.cpp */; };
|
||||||
|
02F824881C767CE2007AAE83 /* prota.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824771C767CE2007AAE83 /* prota.cpp */; };
|
||||||
|
02F824891C767CE2007AAE83 /* sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F824791C767CE2007AAE83 /* sprite.cpp */; };
|
||||||
|
02F8248B1C772310007AAE83 /* gif.c in Sources */ = {isa = PBXBuildFile; fileRef = 02F8248A1C772310007AAE83 /* gif.c */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
02252FB71C764D2E002D1DA1 /* main.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = main.cpp; sourceTree = "<group>"; };
|
||||||
|
02B01D581C767C1700CD186D /* SDL2_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2_image.framework; path = ../../../../../Library/Frameworks/SDL2_image.framework; sourceTree = "<group>"; };
|
||||||
|
02B01D5A1C767C2C00CD186D /* SDL2_mixer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2_mixer.framework; path = ../../../../../Library/Frameworks/SDL2_mixer.framework; sourceTree = "<group>"; };
|
||||||
|
02CF35B91C7649C300180C9F /* aee.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = aee.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
02CF35C71C7649C300180C9F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
02EA2BEE1C764B3800E5A247 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = ../../../../../Library/Frameworks/SDL2.framework; sourceTree = "<group>"; };
|
||||||
|
02F8245D1C767CE2007AAE83 /* bola.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bola.cpp; sourceTree = "<group>"; };
|
||||||
|
02F8245E1C767CE2007AAE83 /* bola.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bola.h; sourceTree = "<group>"; };
|
||||||
|
02F8245F1C767CE2007AAE83 /* data.jrf */ = {isa = PBXFileReference; lastKnownFileType = file; path = data.jrf; sourceTree = "<group>"; };
|
||||||
|
02F824601C767CE2007AAE83 /* engendro.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = engendro.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824611C767CE2007AAE83 /* engendro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engendro.h; sourceTree = "<group>"; };
|
||||||
|
02F824621C767CE2007AAE83 /* info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = info.h; sourceTree = "<group>"; };
|
||||||
|
02F824631C767CE2007AAE83 /* jdraw8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jdraw8.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824641C767CE2007AAE83 /* jdraw8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jdraw8.h; sourceTree = "<group>"; };
|
||||||
|
02F824651C767CE2007AAE83 /* jfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jfile.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824661C767CE2007AAE83 /* jfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jfile.h; sourceTree = "<group>"; };
|
||||||
|
02F824671C767CE2007AAE83 /* jgame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jgame.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824681C767CE2007AAE83 /* jgame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jgame.h; sourceTree = "<group>"; };
|
||||||
|
02F824691C767CE2007AAE83 /* jinput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jinput.cpp; sourceTree = "<group>"; };
|
||||||
|
02F8246A1C767CE2007AAE83 /* jinput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jinput.h; sourceTree = "<group>"; };
|
||||||
|
02F8246B1C767CE2007AAE83 /* jsound.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jsound.cpp; sourceTree = "<group>"; };
|
||||||
|
02F8246C1C767CE2007AAE83 /* jsound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jsound.h; sourceTree = "<group>"; };
|
||||||
|
02F8246D1C767CE2007AAE83 /* mapa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapa.cpp; sourceTree = "<group>"; };
|
||||||
|
02F8246E1C767CE2007AAE83 /* mapa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapa.h; sourceTree = "<group>"; };
|
||||||
|
02F8246F1C767CE2007AAE83 /* marcador.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = marcador.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824701C767CE2007AAE83 /* marcador.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = marcador.h; sourceTree = "<group>"; };
|
||||||
|
02F824711C767CE2007AAE83 /* modulegame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modulegame.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824721C767CE2007AAE83 /* modulegame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modulegame.h; sourceTree = "<group>"; };
|
||||||
|
02F824731C767CE2007AAE83 /* modulesequence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modulesequence.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824741C767CE2007AAE83 /* modulesequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modulesequence.h; sourceTree = "<group>"; };
|
||||||
|
02F824751C767CE2007AAE83 /* momia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = momia.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824761C767CE2007AAE83 /* momia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = momia.h; sourceTree = "<group>"; };
|
||||||
|
02F824771C767CE2007AAE83 /* prota.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prota.cpp; sourceTree = "<group>"; };
|
||||||
|
02F824781C767CE2007AAE83 /* prota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prota.h; sourceTree = "<group>"; };
|
||||||
|
02F824791C767CE2007AAE83 /* sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sprite.cpp; sourceTree = "<group>"; };
|
||||||
|
02F8247A1C767CE2007AAE83 /* sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sprite.h; sourceTree = "<group>"; };
|
||||||
|
02F8248A1C772310007AAE83 /* gif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gif.c; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
02CF35B61C7649C300180C9F /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
02B01D5B1C767C2C00CD186D /* SDL2_mixer.framework in Frameworks */,
|
||||||
|
02B01D591C767C1700CD186D /* SDL2_image.framework in Frameworks */,
|
||||||
|
02EA2BEF1C764B3800E5A247 /* SDL2.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
02CF35B01C7649C300180C9F = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
02F8248A1C772310007AAE83 /* gif.c */,
|
||||||
|
02F8245D1C767CE2007AAE83 /* bola.cpp */,
|
||||||
|
02F8245E1C767CE2007AAE83 /* bola.h */,
|
||||||
|
02F8245F1C767CE2007AAE83 /* data.jrf */,
|
||||||
|
02F824601C767CE2007AAE83 /* engendro.cpp */,
|
||||||
|
02F824611C767CE2007AAE83 /* engendro.h */,
|
||||||
|
02F824621C767CE2007AAE83 /* info.h */,
|
||||||
|
02F824631C767CE2007AAE83 /* jdraw8.cpp */,
|
||||||
|
02F824641C767CE2007AAE83 /* jdraw8.h */,
|
||||||
|
02F824651C767CE2007AAE83 /* jfile.cpp */,
|
||||||
|
02F824661C767CE2007AAE83 /* jfile.h */,
|
||||||
|
02F824671C767CE2007AAE83 /* jgame.cpp */,
|
||||||
|
02F824681C767CE2007AAE83 /* jgame.h */,
|
||||||
|
02F824691C767CE2007AAE83 /* jinput.cpp */,
|
||||||
|
02F8246A1C767CE2007AAE83 /* jinput.h */,
|
||||||
|
02F8246B1C767CE2007AAE83 /* jsound.cpp */,
|
||||||
|
02F8246C1C767CE2007AAE83 /* jsound.h */,
|
||||||
|
02252FB71C764D2E002D1DA1 /* main.cpp */,
|
||||||
|
02F8246D1C767CE2007AAE83 /* mapa.cpp */,
|
||||||
|
02F8246E1C767CE2007AAE83 /* mapa.h */,
|
||||||
|
02F8246F1C767CE2007AAE83 /* marcador.cpp */,
|
||||||
|
02F824701C767CE2007AAE83 /* marcador.h */,
|
||||||
|
02F824711C767CE2007AAE83 /* modulegame.cpp */,
|
||||||
|
02F824721C767CE2007AAE83 /* modulegame.h */,
|
||||||
|
02F824731C767CE2007AAE83 /* modulesequence.cpp */,
|
||||||
|
02F824741C767CE2007AAE83 /* modulesequence.h */,
|
||||||
|
02F824751C767CE2007AAE83 /* momia.cpp */,
|
||||||
|
02F824761C767CE2007AAE83 /* momia.h */,
|
||||||
|
02F824771C767CE2007AAE83 /* prota.cpp */,
|
||||||
|
02F824781C767CE2007AAE83 /* prota.h */,
|
||||||
|
02F824791C767CE2007AAE83 /* sprite.cpp */,
|
||||||
|
02F8247A1C767CE2007AAE83 /* sprite.h */,
|
||||||
|
02CF35C71C7649C300180C9F /* Info.plist */,
|
||||||
|
02EA2BEE1C764B3800E5A247 /* SDL2.framework */,
|
||||||
|
02B01D581C767C1700CD186D /* SDL2_image.framework */,
|
||||||
|
02B01D5A1C767C2C00CD186D /* SDL2_mixer.framework */,
|
||||||
|
02CF35BA1C7649C300180C9F /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
02CF35BA1C7649C300180C9F /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
02CF35B91C7649C300180C9F /* aee.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
02CF35B81C7649C300180C9F /* aee */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 02CF35CA1C7649C300180C9F /* Build configuration list for PBXNativeTarget "aee" */;
|
||||||
|
buildPhases = (
|
||||||
|
02CF35B51C7649C300180C9F /* Sources */,
|
||||||
|
02CF35B61C7649C300180C9F /* Frameworks */,
|
||||||
|
02CF35B71C7649C300180C9F /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = aee;
|
||||||
|
productName = aee;
|
||||||
|
productReference = 02CF35B91C7649C300180C9F /* aee.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
02CF35B11C7649C300180C9F /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastUpgradeCheck = 0720;
|
||||||
|
ORGANIZATIONNAME = "Raimon Zamora";
|
||||||
|
TargetAttributes = {
|
||||||
|
02CF35B81C7649C300180C9F = {
|
||||||
|
CreatedOnToolsVersion = 7.2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 02CF35B41C7649C300180C9F /* Build configuration list for PBXProject "aee" */;
|
||||||
|
compatibilityVersion = "Xcode 3.2";
|
||||||
|
developmentRegion = English;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
Base,
|
||||||
|
);
|
||||||
|
mainGroup = 02CF35B01C7649C300180C9F;
|
||||||
|
productRefGroup = 02CF35BA1C7649C300180C9F /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
02CF35B81C7649C300180C9F /* aee */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
02CF35B71C7649C300180C9F /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
02F8247C1C767CE2007AAE83 /* data.jrf in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
02CF35B51C7649C300180C9F /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
02F824841C767CE2007AAE83 /* marcador.cpp in Sources */,
|
||||||
|
02F824801C767CE2007AAE83 /* jgame.cpp in Sources */,
|
||||||
|
02F824881C767CE2007AAE83 /* prota.cpp in Sources */,
|
||||||
|
02F824851C767CE2007AAE83 /* modulegame.cpp in Sources */,
|
||||||
|
02252FB81C764D2E002D1DA1 /* main.cpp in Sources */,
|
||||||
|
02F824831C767CE2007AAE83 /* mapa.cpp in Sources */,
|
||||||
|
02F8247D1C767CE2007AAE83 /* engendro.cpp in Sources */,
|
||||||
|
02F824871C767CE2007AAE83 /* momia.cpp in Sources */,
|
||||||
|
02F824861C767CE2007AAE83 /* modulesequence.cpp in Sources */,
|
||||||
|
02F8247B1C767CE2007AAE83 /* bola.cpp in Sources */,
|
||||||
|
02F824811C767CE2007AAE83 /* jinput.cpp in Sources */,
|
||||||
|
02F8247E1C767CE2007AAE83 /* jdraw8.cpp in Sources */,
|
||||||
|
02F8248B1C772310007AAE83 /* gif.c in Sources */,
|
||||||
|
02F824821C767CE2007AAE83 /* jsound.cpp in Sources */,
|
||||||
|
02F8247F1C767CE2007AAE83 /* jfile.cpp in Sources */,
|
||||||
|
02F824891C767CE2007AAE83 /* sprite.cpp in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
02CF35C81C7649C300180C9F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
02CF35C91C7649C300180C9F /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
02CF35CB1C7649C300180C9F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks",
|
||||||
|
);
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks/SDL2.framework/headers",
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks/SDL2_image.framework/headers",
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks/SDL2_mixer.framework/headers",
|
||||||
|
);
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = net.jailers.aee;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
02CF35CC1C7649C300180C9F /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks",
|
||||||
|
);
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks/SDL2.framework/headers",
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks/SDL2_image.framework/headers",
|
||||||
|
"$(LOCAL_LIBRARY_DIR)/Frameworks/SDL2_mixer.framework/headers",
|
||||||
|
);
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = net.jailers.aee;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
02CF35B41C7649C300180C9F /* Build configuration list for PBXProject "aee" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
02CF35C81C7649C300180C9F /* Debug */,
|
||||||
|
02CF35C91C7649C300180C9F /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
02CF35CA1C7649C300180C9F /* Build configuration list for PBXNativeTarget "aee" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
02CF35CB1C7649C300180C9F /* Debug */,
|
||||||
|
02CF35CC1C7649C300180C9F /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 02CF35B11C7649C300180C9F /* Project object */;
|
||||||
|
}
|
||||||
7
aee.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
aee.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:aee.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
BIN
aee.xcodeproj/project.xcworkspace/xcuserdata/raimonzamora.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
BIN
aee.xcodeproj/project.xcworkspace/xcuserdata/raimonzamora.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
Binary file not shown.
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Bucket
|
||||||
|
type = "1"
|
||||||
|
version = "2.0">
|
||||||
|
<Breakpoints>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "jfile.cpp"
|
||||||
|
timestampString = "477527894.254081"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "34"
|
||||||
|
endingLineNumber = "34"
|
||||||
|
landmarkName = "JF_SetResourceFile(const char *p_resourceFileName)"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
</Breakpoints>
|
||||||
|
</Bucket>
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "0720"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "02CF35B81C7649C300180C9F"
|
||||||
|
BuildableName = "aee.app"
|
||||||
|
BlueprintName = "aee"
|
||||||
|
ReferencedContainer = "container:aee.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "02CF35B81C7649C300180C9F"
|
||||||
|
BuildableName = "aee.app"
|
||||||
|
BlueprintName = "aee"
|
||||||
|
ReferencedContainer = "container:aee.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "02CF35B81C7649C300180C9F"
|
||||||
|
BuildableName = "aee.app"
|
||||||
|
BlueprintName = "aee"
|
||||||
|
ReferencedContainer = "container:aee.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "02CF35B81C7649C300180C9F"
|
||||||
|
BuildableName = "aee.app"
|
||||||
|
BlueprintName = "aee"
|
||||||
|
ReferencedContainer = "container:aee.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>SchemeUserState</key>
|
||||||
|
<dict>
|
||||||
|
<key>aee.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>SuppressBuildableAutocreation</key>
|
||||||
|
<dict>
|
||||||
|
<key>02CF35B81C7649C300180C9F</key>
|
||||||
|
<dict>
|
||||||
|
<key>primary</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
533
gif.c
Normal file
533
gif.c
Normal file
@@ -0,0 +1,533 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#define EXTENSION_INTRODUCER 0x21
|
||||||
|
#define IMAGE_DESCRIPTOR 0x2C
|
||||||
|
#define TRAILER 0x3B
|
||||||
|
|
||||||
|
#define GRAPHIC_CONTROL 0xF9
|
||||||
|
#define APPLICATION_EXTENSION 0xFF
|
||||||
|
#define COMMENT_EXTENSION 0xFE
|
||||||
|
#define PLAINTEXT_EXTENSION 0x01
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned short width;
|
||||||
|
unsigned short height;
|
||||||
|
unsigned char fields;
|
||||||
|
unsigned char background_color_index;
|
||||||
|
unsigned char pixel_aspect_ratio;
|
||||||
|
}
|
||||||
|
screen_descriptor_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char r;
|
||||||
|
unsigned char g;
|
||||||
|
unsigned char b;
|
||||||
|
}
|
||||||
|
rgb;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned short image_left_position;
|
||||||
|
unsigned short image_top_position;
|
||||||
|
unsigned short image_width;
|
||||||
|
unsigned short image_height;
|
||||||
|
unsigned char fields;
|
||||||
|
}
|
||||||
|
image_descriptor_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char byte;
|
||||||
|
int prev;
|
||||||
|
int len;
|
||||||
|
}
|
||||||
|
dictionary_entry_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char extension_code;
|
||||||
|
unsigned char block_size;
|
||||||
|
}
|
||||||
|
extension_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char fields;
|
||||||
|
unsigned short delay_time;
|
||||||
|
unsigned char transparent_color_index;
|
||||||
|
}
|
||||||
|
graphic_control_extension_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char application_id[ 8 ];
|
||||||
|
unsigned char version[ 3 ];
|
||||||
|
}
|
||||||
|
application_extension_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned short left;
|
||||||
|
unsigned short top;
|
||||||
|
unsigned short width;
|
||||||
|
unsigned short height;
|
||||||
|
unsigned char cell_width;
|
||||||
|
unsigned char cell_height;
|
||||||
|
unsigned char foreground_color;
|
||||||
|
unsigned char background_color;
|
||||||
|
}
|
||||||
|
plaintext_extension_t;
|
||||||
|
|
||||||
|
static unsigned short width = 0;
|
||||||
|
static unsigned short height = 0;
|
||||||
|
static unsigned char* uncompressed_data = NULL;
|
||||||
|
|
||||||
|
void uncompress( int code_length,
|
||||||
|
const unsigned char *input,
|
||||||
|
int input_length,
|
||||||
|
unsigned char *out )
|
||||||
|
{
|
||||||
|
//int maxbits;
|
||||||
|
int i, bit;
|
||||||
|
int code, prev = -1;
|
||||||
|
dictionary_entry_t *dictionary;
|
||||||
|
int dictionary_ind;
|
||||||
|
unsigned int mask = 0x01;
|
||||||
|
int reset_code_length;
|
||||||
|
int clear_code; // This varies depending on code_length
|
||||||
|
int stop_code; // one more than clear code
|
||||||
|
int match_len;
|
||||||
|
|
||||||
|
clear_code = 1 << ( code_length );
|
||||||
|
stop_code = clear_code + 1;
|
||||||
|
// To handle clear codes
|
||||||
|
reset_code_length = code_length;
|
||||||
|
|
||||||
|
// Create a dictionary large enough to hold "code_length" entries.
|
||||||
|
// Once the dictionary overflows, code_length increases
|
||||||
|
dictionary = ( dictionary_entry_t * )
|
||||||
|
malloc( sizeof( dictionary_entry_t ) * ( 1 << ( code_length + 1 ) ) );
|
||||||
|
|
||||||
|
// Initialize the first 2^code_len entries of the dictionary with their
|
||||||
|
// indices. The rest of the entries will be built up dynamically.
|
||||||
|
|
||||||
|
// Technically, it shouldn't be necessary to initialize the
|
||||||
|
// dictionary. The spec says that the encoder "should output a
|
||||||
|
// clear code as the first code in the image data stream". It doesn't
|
||||||
|
// say must, though...
|
||||||
|
for ( dictionary_ind = 0;
|
||||||
|
dictionary_ind < ( 1 << code_length );
|
||||||
|
dictionary_ind++ )
|
||||||
|
{
|
||||||
|
dictionary[ dictionary_ind ].byte = dictionary_ind;
|
||||||
|
// XXX this only works because prev is a 32-bit int (> 12 bits)
|
||||||
|
dictionary[ dictionary_ind ].prev = -1;
|
||||||
|
dictionary[ dictionary_ind ].len = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2^code_len + 1 is the special "end" code; don't give it an entry here
|
||||||
|
dictionary_ind++;
|
||||||
|
dictionary_ind++;
|
||||||
|
|
||||||
|
// TODO verify that the very last byte is clear_code + 1
|
||||||
|
while ( input_length )
|
||||||
|
{
|
||||||
|
code = 0x0;
|
||||||
|
// Always read one more bit than the code length
|
||||||
|
for ( i = 0; i < ( code_length + 1 ); i++ )
|
||||||
|
{
|
||||||
|
// This is different than in the file read example; that
|
||||||
|
// was a call to "next_bit"
|
||||||
|
bit = ( *input & mask ) ? 1 : 0;
|
||||||
|
mask <<= 1;
|
||||||
|
|
||||||
|
if ( mask == 0x100 )
|
||||||
|
{
|
||||||
|
mask = 0x01;
|
||||||
|
input++;
|
||||||
|
input_length--;
|
||||||
|
}
|
||||||
|
|
||||||
|
code = code | ( bit << i );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( code == clear_code )
|
||||||
|
{
|
||||||
|
code_length = reset_code_length;
|
||||||
|
dictionary = ( dictionary_entry_t * ) realloc( dictionary,
|
||||||
|
sizeof( dictionary_entry_t ) * ( 1 << ( code_length + 1 ) ) );
|
||||||
|
|
||||||
|
for ( dictionary_ind = 0;
|
||||||
|
dictionary_ind < ( 1 << code_length );
|
||||||
|
dictionary_ind++ )
|
||||||
|
{
|
||||||
|
dictionary[ dictionary_ind ].byte = dictionary_ind;
|
||||||
|
// XXX this only works because prev is a 32-bit int (> 12 bits)
|
||||||
|
dictionary[ dictionary_ind ].prev = -1;
|
||||||
|
dictionary[ dictionary_ind ].len = 1;
|
||||||
|
}
|
||||||
|
dictionary_ind++;
|
||||||
|
dictionary_ind++;
|
||||||
|
prev = -1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if ( code == stop_code )
|
||||||
|
{
|
||||||
|
if ( input_length > 1 )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Malformed GIF (early stop code)\n" );
|
||||||
|
exit( 0 );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the dictionary with this character plus the _entry_
|
||||||
|
// (character or string) that came before it
|
||||||
|
if ( ( prev > -1 ) && ( code_length < 12 ) )
|
||||||
|
{
|
||||||
|
if ( code > dictionary_ind )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "code = %.02x, but dictionary_ind = %.02x\n",
|
||||||
|
code, dictionary_ind );
|
||||||
|
exit( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special handling for KwKwK
|
||||||
|
if ( code == dictionary_ind )
|
||||||
|
{
|
||||||
|
int ptr = prev;
|
||||||
|
|
||||||
|
while ( dictionary[ ptr ].prev != -1 )
|
||||||
|
{
|
||||||
|
ptr = dictionary[ ptr ].prev;
|
||||||
|
}
|
||||||
|
dictionary[ dictionary_ind ].byte = dictionary[ ptr ].byte;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int ptr = code;
|
||||||
|
while ( dictionary[ ptr ].prev != -1 )
|
||||||
|
{
|
||||||
|
ptr = dictionary[ ptr ].prev;
|
||||||
|
}
|
||||||
|
dictionary[ dictionary_ind ].byte = dictionary[ ptr ].byte;
|
||||||
|
}
|
||||||
|
|
||||||
|
dictionary[ dictionary_ind ].prev = prev;
|
||||||
|
|
||||||
|
dictionary[ dictionary_ind ].len = dictionary[ prev ].len + 1;
|
||||||
|
|
||||||
|
dictionary_ind++;
|
||||||
|
|
||||||
|
// GIF89a mandates that this stops at 12 bits
|
||||||
|
if ( ( dictionary_ind == ( 1 << ( code_length + 1 ) ) ) &&
|
||||||
|
( code_length < 11 ) )
|
||||||
|
{
|
||||||
|
code_length++;
|
||||||
|
|
||||||
|
dictionary = ( dictionary_entry_t * ) realloc( dictionary,
|
||||||
|
sizeof( dictionary_entry_t ) * ( 1 << ( code_length + 1 ) ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prev = code;
|
||||||
|
|
||||||
|
// Now copy the dictionary entry backwards into "out"
|
||||||
|
match_len = dictionary[ code ].len;
|
||||||
|
while ( code != -1 )
|
||||||
|
{
|
||||||
|
out[ dictionary[ code ].len - 1 ] = dictionary[ code ].byte;
|
||||||
|
if ( dictionary[ code ].prev == code )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Internal error; self-reference." );
|
||||||
|
exit( 0 );
|
||||||
|
}
|
||||||
|
code = dictionary[ code ].prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
out += match_len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int read_sub_blocks( FILE* gif_file, unsigned char **data )
|
||||||
|
{
|
||||||
|
int data_length;
|
||||||
|
int index;
|
||||||
|
unsigned char block_size;
|
||||||
|
|
||||||
|
// Everything following are data sub-blocks, until a 0-sized block is
|
||||||
|
// encountered.
|
||||||
|
data_length = 0;
|
||||||
|
*data = NULL;
|
||||||
|
index = 0;
|
||||||
|
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
if ( fread( &block_size, 1, 1, gif_file ) < 1 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( block_size == 0 ) // end of sub-blocks
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
data_length += block_size;
|
||||||
|
*data = realloc( *data, data_length );
|
||||||
|
|
||||||
|
// TODO this could be split across block size boundaries
|
||||||
|
if ( fread( *data + index, 1, block_size, gif_file ) <
|
||||||
|
block_size )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
index += block_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
return data_length;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int process_image_descriptor( FILE* gif_file,
|
||||||
|
rgb *gct,
|
||||||
|
int gct_size,
|
||||||
|
int resolution_bits )
|
||||||
|
{
|
||||||
|
image_descriptor_t image_descriptor;
|
||||||
|
int disposition;
|
||||||
|
int compressed_data_length;
|
||||||
|
unsigned char *compressed_data = NULL;
|
||||||
|
unsigned char lzw_code_size;
|
||||||
|
int uncompressed_data_length = 0;
|
||||||
|
//unsigned char *uncompressed_data = NULL;
|
||||||
|
|
||||||
|
// TODO there could actually be lots of these
|
||||||
|
if ( fread( &image_descriptor, 1, 9, gif_file ) < 9 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short)" );
|
||||||
|
disposition = 0;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO if LCT = true, read the LCT
|
||||||
|
|
||||||
|
disposition = 1;
|
||||||
|
|
||||||
|
if ( fread( &lzw_code_size, 1, 1, gif_file ) < 1 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
disposition = 0;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
compressed_data_length = read_sub_blocks( gif_file, &compressed_data );
|
||||||
|
|
||||||
|
width = image_descriptor.image_width;
|
||||||
|
height = image_descriptor.image_height;
|
||||||
|
uncompressed_data_length = image_descriptor.image_width *
|
||||||
|
image_descriptor.image_height;
|
||||||
|
uncompressed_data = malloc( uncompressed_data_length );
|
||||||
|
|
||||||
|
uncompress( lzw_code_size, compressed_data, compressed_data_length,
|
||||||
|
uncompressed_data );
|
||||||
|
|
||||||
|
done:
|
||||||
|
if ( compressed_data )
|
||||||
|
free( compressed_data );
|
||||||
|
|
||||||
|
//if ( uncompressed_data )
|
||||||
|
// free( uncompressed_data );
|
||||||
|
|
||||||
|
return disposition;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int process_extension( FILE* gif_file )
|
||||||
|
{
|
||||||
|
extension_t extension;
|
||||||
|
graphic_control_extension_t gce;
|
||||||
|
application_extension_t application;
|
||||||
|
plaintext_extension_t plaintext;
|
||||||
|
unsigned char *extension_data = NULL;
|
||||||
|
int extension_data_length;
|
||||||
|
|
||||||
|
if ( fread( &extension, 1, 2, gif_file ) < 2 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( extension.extension_code )
|
||||||
|
{
|
||||||
|
case GRAPHIC_CONTROL:
|
||||||
|
if ( fread( &gce, 1, 4, gif_file ) < 4 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case APPLICATION_EXTENSION:
|
||||||
|
if ( fread( &application, 1, 11, gif_file ) < 11 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xFE:
|
||||||
|
// comment extension; do nothing - all the data is in the
|
||||||
|
// sub-blocks that follow.
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
if ( fread( &plaintext, 1, 12, gif_file ) < 12 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short): " );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf( stderr, "Unrecognized extension code.\n" );
|
||||||
|
exit( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
// All extensions are followed by data sub-blocks; even if it's
|
||||||
|
// just a single data sub-block of length 0
|
||||||
|
extension_data_length = read_sub_blocks( gif_file, &extension_data );
|
||||||
|
|
||||||
|
if ( extension_data != NULL )
|
||||||
|
free( extension_data );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param gif_file the file descriptor of a file containing a
|
||||||
|
* GIF-encoded file. This should point to the first byte in
|
||||||
|
* the file when invoked.
|
||||||
|
*/
|
||||||
|
static void process_gif_stream( FILE* gif_file )
|
||||||
|
{
|
||||||
|
unsigned char header[ 7 ];
|
||||||
|
screen_descriptor_t screen_descriptor;
|
||||||
|
int color_resolution_bits;
|
||||||
|
|
||||||
|
int global_color_table_size =0; // number of entries in global_color_table
|
||||||
|
rgb *global_color_table = NULL;
|
||||||
|
|
||||||
|
unsigned char block_type = 0x0;
|
||||||
|
|
||||||
|
// A GIF file starts with a Header (section 17)
|
||||||
|
if ( fread( header, 1, 6, gif_file ) != 6 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short)" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
header[ 6 ] = 0x0;
|
||||||
|
|
||||||
|
// XXX there's another format, GIF87a, that you may still find
|
||||||
|
// floating around.
|
||||||
|
if ( strcmp( "GIF89a", (char*)header ) )
|
||||||
|
{
|
||||||
|
fprintf( stderr,
|
||||||
|
"Invalid GIF file (header is '%s', should be 'GIF89a')\n",
|
||||||
|
header );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Followed by a logical screen descriptor
|
||||||
|
// Note that this works because GIFs specify little-endian order; on a
|
||||||
|
// big-endian machine, the height & width would need to be reversed.
|
||||||
|
|
||||||
|
// Can't use sizeof here since GCC does byte alignment;
|
||||||
|
// sizeof( screen_descriptor_t ) = 8!
|
||||||
|
if ( fread( &screen_descriptor, 1, 7, gif_file ) < 7 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short)" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
color_resolution_bits = ( ( screen_descriptor.fields & 0x70 ) >> 4 ) + 1;
|
||||||
|
|
||||||
|
if ( screen_descriptor.fields & 0x80 )
|
||||||
|
{
|
||||||
|
//int i;
|
||||||
|
// If bit 7 is set, the next block is a global color table; read it
|
||||||
|
global_color_table_size = 1 <<
|
||||||
|
( ( ( screen_descriptor.fields & 0x07 ) + 1 ) );
|
||||||
|
|
||||||
|
global_color_table = ( rgb * ) malloc( 3 * global_color_table_size );
|
||||||
|
|
||||||
|
// XXX this could conceivably return a short count...
|
||||||
|
if ( fread( global_color_table, 1, 3 * global_color_table_size, gif_file ) <
|
||||||
|
3 * global_color_table_size )
|
||||||
|
{
|
||||||
|
perror( "Unable to read global color table" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while ( block_type != TRAILER )
|
||||||
|
{
|
||||||
|
if ( fread( &block_type, 1, 1, gif_file ) < 1 )
|
||||||
|
{
|
||||||
|
perror( "Invalid GIF file (too short)" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( block_type )
|
||||||
|
{
|
||||||
|
case IMAGE_DESCRIPTOR:
|
||||||
|
if ( !process_image_descriptor( gif_file,
|
||||||
|
global_color_table,
|
||||||
|
global_color_table_size,
|
||||||
|
color_resolution_bits ) )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EXTENSION_INTRODUCER:
|
||||||
|
if ( !process_extension( gif_file ) )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAILER:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf( stderr, "Bailing on unrecognized block type %.02x\n",
|
||||||
|
block_type );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main( int argc, char *argv[] )
|
||||||
|
{
|
||||||
|
FILE* gif_file;
|
||||||
|
|
||||||
|
if ( argc < 2 )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Usage: %s <path-to-gif-file>\n", argv[ 0 ] );
|
||||||
|
exit( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
gif_file = fopen( argv[ 1 ], "rb" );
|
||||||
|
|
||||||
|
if ( gif_file == NULL )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Unable to open file '%s'", argv[ 1 ] );
|
||||||
|
perror( ": " );
|
||||||
|
}
|
||||||
|
|
||||||
|
process_gif_stream( gif_file );
|
||||||
|
|
||||||
|
fclose( gif_file );
|
||||||
|
}
|
||||||
@@ -19,7 +19,7 @@ SDL_Window* sdlWindow = NULL;
|
|||||||
SDL_Renderer* sdlRenderer = NULL;
|
SDL_Renderer* sdlRenderer = NULL;
|
||||||
SDL_Texture* sdlTexture = NULL;
|
SDL_Texture* sdlTexture = NULL;
|
||||||
|
|
||||||
void JD8_Init(char *title) {
|
void JD8_Init(const char *title) {
|
||||||
screen = (JD8_Surface)calloc( 1, 64000 );
|
screen = (JD8_Surface)calloc( 1, 64000 );
|
||||||
main_palette = (JD8_Palette)calloc( 1, 768 );
|
main_palette = (JD8_Palette)calloc( 1, 768 );
|
||||||
pixel_data = (Uint32*)calloc(1, 320 * 200 * 4); // 1048576 );
|
pixel_data = (Uint32*)calloc(1, 320 * 200 * 4); // 1048576 );
|
||||||
@@ -50,7 +50,7 @@ JD8_Surface JD8_NewSurface() {
|
|||||||
return surface;
|
return surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
JD8_Surface JD8_LoadSurface(char *file) {
|
JD8_Surface JD8_LoadSurface(const char *file) {
|
||||||
int filesize = 0;
|
int filesize = 0;
|
||||||
char *buffer = JF_GetBufferFromResource(file, filesize);
|
char *buffer = JF_GetBufferFromResource(file, filesize);
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ JD8_Surface JD8_LoadSurface(char *file) {
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
JD8_Palette JD8_LoadPalette(char *file) {
|
JD8_Palette JD8_LoadPalette(const char *file) {
|
||||||
int filesize = 0;
|
int filesize = 0;
|
||||||
char *buffer = NULL;
|
char *buffer = NULL;
|
||||||
buffer = JF_GetBufferFromResource(file, filesize);
|
buffer = JF_GetBufferFromResource(file, filesize);
|
||||||
|
|||||||
6
jdraw8.h
6
jdraw8.h
@@ -10,7 +10,7 @@ struct Color {
|
|||||||
typedef Uint8* JD8_Surface;
|
typedef Uint8* JD8_Surface;
|
||||||
typedef Color* JD8_Palette;
|
typedef Color* JD8_Palette;
|
||||||
|
|
||||||
void JD8_Init(char *title);
|
void JD8_Init(const char *title);
|
||||||
|
|
||||||
void JD8_Quit();
|
void JD8_Quit();
|
||||||
|
|
||||||
@@ -18,9 +18,9 @@ void JD8_ClearScreen(Uint8 color);
|
|||||||
|
|
||||||
JD8_Surface JD8_NewSurface();
|
JD8_Surface JD8_NewSurface();
|
||||||
|
|
||||||
JD8_Surface JD8_LoadSurface(char *file);
|
JD8_Surface JD8_LoadSurface(const char *file);
|
||||||
|
|
||||||
JD8_Palette JD8_LoadPalette(char *file);
|
JD8_Palette JD8_LoadPalette(const char *file);
|
||||||
|
|
||||||
void JD8_SetScreenPalette(JD8_Palette palette);
|
void JD8_SetScreenPalette(JD8_Palette palette);
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ struct DATA_File {
|
|||||||
const char *resourceFileName = "data.jrf";
|
const char *resourceFileName = "data.jrf";
|
||||||
DATA_File *data_file = NULL;
|
DATA_File *data_file = NULL;
|
||||||
|
|
||||||
void JF_SetResourceFile(char *p_resourceFileName) {
|
void JF_SetResourceFile(const char *p_resourceFileName) {
|
||||||
resourceFileName = p_resourceFileName;
|
resourceFileName = p_resourceFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ void JF_GetDataFile() {
|
|||||||
fd.close();
|
fd.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
char *JF_GetBufferFromResource(char *resourcename, int& filesize) {
|
char *JF_GetBufferFromResource(const char *resourcename, int& filesize) {
|
||||||
|
|
||||||
if( data_file == NULL ) {
|
if( data_file == NULL ) {
|
||||||
JF_GetDataFile();
|
JF_GetDataFile();
|
||||||
|
|||||||
4
jfile.h
4
jfile.h
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
void JF_SetResourceFile(char *p_resourceFileName);
|
void JF_SetResourceFile(const char *p_resourceFileName);
|
||||||
|
|
||||||
char *JF_GetBufferFromResource(char *resourcename, int& filesize);
|
char *JF_GetBufferFromResource(const char *resourcename, int& filesize);
|
||||||
|
|
||||||
void JF_Quit();
|
void JF_Quit();
|
||||||
11
jgame.h
11
jgame.h
@@ -1,16 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
|
||||||
#ifndef NDEBUG
|
|
||||||
#ifndef DPRINT(text, ...)
|
|
||||||
#define DPRINT(text, ...) dprintf(__FILE__, __LINE__, text, __VA_ARGS__)
|
|
||||||
void dprintf(const char* szFile, long lLine, const char* fmt, ...);
|
|
||||||
#endif
|
|
||||||
#else // #ifdef NDEBUG
|
|
||||||
#ifndef DPRINT(text, ...)
|
|
||||||
#define DPRINT(text, ...) ((void)0)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void JG_Init();
|
void JG_Init();
|
||||||
|
|
||||||
|
|||||||
8
main.cpp
8
main.cpp
@@ -18,12 +18,16 @@ int main( int argc, char* args[] ) {
|
|||||||
#else
|
#else
|
||||||
char res_file[255] = "";
|
char res_file[255] = "";
|
||||||
strcpy(res_file, dirname(args[0]));
|
strcpy(res_file, dirname(args[0]));
|
||||||
strcat(res_file, "/data.jrf");
|
#ifdef __APPLE__
|
||||||
|
strcat(res_file, "/../Resources/data.jrf");
|
||||||
|
#else
|
||||||
|
strcat(res_file, "/data.jrf");
|
||||||
|
#endif
|
||||||
printf("ARXIU DE RECURSOS: %s\n", res_file);
|
printf("ARXIU DE RECURSOS: %s\n", res_file);
|
||||||
JF_SetResourceFile(res_file);
|
JF_SetResourceFile(res_file);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
srand( time(NULL) );
|
srand( unsigned(time(NULL)) );
|
||||||
|
|
||||||
JG_Init();
|
JG_Init();
|
||||||
JD8_Init("Aventures En Egipte");
|
JD8_Init("Aventures En Egipte");
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ int ModuleSequence::Go() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int minim( const int a, const int b ) {
|
const int minim( const int a, const int b ) {
|
||||||
@@ -619,7 +620,7 @@ void ModuleSequence::doMenu() {
|
|||||||
void ModuleSequence::doSlides() {
|
void ModuleSequence::doSlides() {
|
||||||
JG_SetUpdateTicks(20);
|
JG_SetUpdateTicks(20);
|
||||||
|
|
||||||
char* arxiu;
|
const char* arxiu;
|
||||||
if( this->info->num_piramide == 7 ) {
|
if( this->info->num_piramide == 7 ) {
|
||||||
if( this->info->diners < 200 ) {
|
if( this->info->diners < 200 ) {
|
||||||
arxiu = "intro2.gif";
|
arxiu = "intro2.gif";
|
||||||
|
|||||||
Reference in New Issue
Block a user