Initial source commit
This commit is contained in:
commit
f1384c11ee
335 changed files with 52715 additions and 0 deletions
BIN
gamma256/gameSource/iPhone/Icon.png
Normal file
BIN
gamma256/gameSource/iPhone/Icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 506 B |
32
gamma256/gameSource/iPhone/Info.plist
Normal file
32
gamma256/gameSource/iPhone/Info.plist
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?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>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.png</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>net.sf.hcsoftware.${PRODUCT_NAME}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>3.1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainWindow</string>
|
||||
<key>UIStatusBarHidden</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
BIN
gamma256/gameSource/iPhone/LargeIcon.png
Normal file
BIN
gamma256/gameSource/iPhone/LargeIcon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
237
gamma256/gameSource/iPhone/MainWindow.xib
Normal file
237
gamma256/gameSource/iPhone/MainWindow.xib
Normal file
|
@ -0,0 +1,237 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">528</int>
|
||||
<string key="IBDocument.SystemVersion">9F33</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">677</string>
|
||||
<string key="IBDocument.AppKitVersion">949.34</string>
|
||||
<string key="IBDocument.HIToolboxVersion">352.00</string>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="2"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="427554174">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
</object>
|
||||
<object class="IBUICustomObject" id="664661524"/>
|
||||
<object class="IBUIWindow" id="380026005">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">1316</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIView" id="309370163">
|
||||
<reference key="NSNextResponder" ref="380026005"/>
|
||||
<int key="NSvFlags">1298</int>
|
||||
<string key="NSFrameSize">{320, 480}</string>
|
||||
<reference key="NSSuperview" ref="380026005"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
<object class="NSColorSpace" key="NSCustomColorSpace">
|
||||
<int key="NSID">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSPSMatrix" key="NSFrameMatrix"/>
|
||||
<string key="NSFrameSize">{320, 480}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="664661524"/>
|
||||
</object>
|
||||
<int key="connectionID">4</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="664661524"/>
|
||||
<reference key="destination" ref="380026005"/>
|
||||
</object>
|
||||
<int key="connectionID">5</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="664661524"/>
|
||||
<reference key="destination" ref="309370163"/>
|
||||
</object>
|
||||
<int key="connectionID">11</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<object class="NSArray" key="object" id="957960031">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="380026005"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="309370163"/>
|
||||
</object>
|
||||
<reference key="parent" ref="957960031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="957960031"/>
|
||||
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="664661524"/>
|
||||
<reference key="parent" ref="957960031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="427554174"/>
|
||||
<reference key="parent" ref="957960031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10</int>
|
||||
<reference key="object" ref="309370163"/>
|
||||
<reference key="parent" ref="380026005"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSMutableArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>10.CustomClassName</string>
|
||||
<string>10.IBPluginDependency</string>
|
||||
<string>2.IBAttributePlaceholdersKey</string>
|
||||
<string>2.IBEditorWindowLastContentRect</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>3.CustomClassName</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>UIApplication</string>
|
||||
<string>UIResponder</string>
|
||||
<string>MyView</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<object class="NSMutableDictionary">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<string>{{411, 129}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>gameWindowAppDelegate</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">11</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">MyView</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="747307864">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">gameWindowAppDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">MyView</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBUserSource</string>
|
||||
<string key="minorKey"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">gameWindowAppDelegate</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSMutableArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>view</string>
|
||||
<string>window</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>MyView</string>
|
||||
<string>UIWindow</string>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="sourceIdentifier" ref="747307864"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">gameWindowApp.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
BIN
gamma256/gameSource/iPhone/arrows.png
Normal file
BIN
gamma256/gameSource/iPhone/arrows.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
gamma256/gameSource/iPhone/arrows.tga
Normal file
BIN
gamma256/gameSource/iPhone/arrows.tga
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
84
gamma256/gameSource/iPhone/blowUp.cpp
Normal file
84
gamma256/gameSource/iPhone/blowUp.cpp
Normal file
|
@ -0,0 +1,84 @@
|
|||
#include "blowUp.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
|
||||
void blowupOntoScreen( Uint32 *inImage, int inWidth, int inHeight,
|
||||
int inBlowFactor, Uint32 *inScreenPixels,
|
||||
int inScreenWidth, int inScreenHeight ) {
|
||||
|
||||
int newWidth = inBlowFactor * inWidth;
|
||||
int newHeight = inBlowFactor * inHeight;
|
||||
|
||||
int yOffset = ( inScreenHeight - newHeight ) / 2;
|
||||
|
||||
// "up" a bit more on iPhone to make room for touch widget
|
||||
int xOffset = 2 * ( inScreenWidth - newWidth ) / 3;
|
||||
|
||||
// pitch equals width for iPhone implementation
|
||||
int scanlineWidth = inScreenWidth;
|
||||
|
||||
Uint32 *pixels = inScreenPixels;
|
||||
|
||||
|
||||
// looping across the smaller image, instead of across the larger screen,
|
||||
// was discovered using the profiler.
|
||||
|
||||
|
||||
// an entire screen row is repeated inBlowFactor times down the screen
|
||||
// (as a row of pixel boxes)
|
||||
// Thus, we can offload a lot more work onto memcpy if we assemble one
|
||||
// of these rows and then memcpy it onto the screen inBlowFactor times
|
||||
for( int y=0; y<inHeight; y++ ) {
|
||||
|
||||
Uint32 *screenRow = new Uint32[ newWidth ];
|
||||
|
||||
// flip image vertically for iPhone
|
||||
int gameY = (inHeight - 1) - y;
|
||||
|
||||
// fill the screen row with rows from the pixel boxes
|
||||
for( int x=0; x<inWidth; x++ ) {
|
||||
|
||||
Uint32 pixelValue = inImage[ gameY * inWidth + x ];
|
||||
|
||||
// swap red and blue on iPhone
|
||||
unsigned char red = (pixelValue >> 16) & 0xFF;
|
||||
unsigned char green = (pixelValue >> 8) & 0xFF;
|
||||
unsigned char blue = (pixelValue >> 0) & 0xFF;
|
||||
|
||||
pixelValue = blue << 16 | green << 8 | red;
|
||||
|
||||
// spread this pixel across an inBlowFactor-wide box row in
|
||||
// the screen row
|
||||
|
||||
int boxXStart = inBlowFactor * x;
|
||||
int boxXEnd = boxXStart + inBlowFactor;
|
||||
|
||||
// make an array to represent one row of this box
|
||||
// we can thus replace the inner loop with a memcpy below
|
||||
for( int i=boxXStart; i<boxXEnd; i++ ) {
|
||||
screenRow[i] = pixelValue;
|
||||
}
|
||||
}
|
||||
|
||||
// now copy the row onto the screen inBlowFactor times
|
||||
|
||||
int screenRowStart = ( yOffset + y * inBlowFactor ) * scanlineWidth
|
||||
+ xOffset;
|
||||
int screenRowEnd = screenRowStart + inBlowFactor * scanlineWidth;
|
||||
int screenRowIncrement = scanlineWidth;
|
||||
|
||||
for( int screenRowIndex = screenRowStart;
|
||||
screenRowIndex < screenRowEnd;
|
||||
screenRowIndex += screenRowIncrement ) {
|
||||
|
||||
memcpy( &( pixels[ screenRowIndex ] ),
|
||||
screenRow, newWidth * 4 );
|
||||
}
|
||||
|
||||
delete [] screenRow;
|
||||
|
||||
}
|
||||
|
||||
}
|
10
gamma256/gameSource/iPhone/blowUp.h
Normal file
10
gamma256/gameSource/iPhone/blowUp.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
#include "drawIntoScreen.h"
|
||||
|
||||
|
||||
/**
|
||||
* Blows an image up onto the screen using nearest neighbor (pixelated)
|
||||
* interpolation.
|
||||
*/
|
||||
void blowupOntoScreen( Uint32 *inImage, int inWidth, int inHeight,
|
||||
int inBlowFactor, Uint32 *inScreenPixels,
|
||||
int inScreenWidth, int inScreenHeight );
|
25
gamma256/gameSource/iPhone/common.cpp
Normal file
25
gamma256/gameSource/iPhone/common.cpp
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include "common.h"
|
||||
|
||||
#include "minorGems/graphics/converters/TGAImageConverter.h"
|
||||
|
||||
#include "minorGems/io/file/File.h"
|
||||
|
||||
#include "minorGems/io/file/FileInputStream.h"
|
||||
|
||||
|
||||
|
||||
Image *readTGA( char *inFileName ) {
|
||||
return readTGA( "graphics", inFileName );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Image *readTGA( char *inFolderName, char *inFileName ) {
|
||||
// ignore passed-in path (use bundle root)
|
||||
File tgaFile( NULL, inFileName );
|
||||
FileInputStream tgaStream( &tgaFile );
|
||||
|
||||
TGAImageConverter converter;
|
||||
|
||||
return converter.deformatImage( &tgaStream );
|
||||
}
|
22
gamma256/gameSource/iPhone/drawIntoScreen.h
Normal file
22
gamma256/gameSource/iPhone/drawIntoScreen.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
// interface for generic screen drawing framework
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef uint32_t Uint32;
|
||||
|
||||
|
||||
void initScreenDrawer( Uint32 *inScreenBuffer, int inWidth, int inHeight );
|
||||
|
||||
// each pixel is 4 characters
|
||||
void drawIntoScreen( Uint32 *inScreenBuffer, int inWidth, int inHeight );
|
||||
|
||||
// set device orientation from accelerometer
|
||||
void setOrientation( float inX, float inY );
|
||||
|
||||
void touchStartPoint( float inX, float inY );
|
||||
|
||||
void touchMovePoint( float inX, float inY );
|
||||
|
||||
void touchEndPoint( float inX, float inY );
|
||||
|
||||
void freeScreenDrawer();
|
1568
gamma256/gameSource/iPhone/game.cpp
Normal file
1568
gamma256/gameSource/iPhone/game.cpp
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
468
gamma256/gameSource/iPhone/gameWindowApp.xcodeproj/project.pbxproj
Executable file
468
gamma256/gameSource/iPhone/gameWindowApp.xcodeproj/project.pbxproj
Executable file
|
@ -0,0 +1,468 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
|
||||
DA12F3060EF6E70100A40C6D /* title.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F2FC0EF6E70100A40C6D /* title.tga */; };
|
||||
DA12F3070EF6E70100A40C6D /* heart.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F2FD0EF6E70100A40C6D /* heart.tga */; };
|
||||
DA12F3080EF6E70100A40C6D /* numerals.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F2FE0EF6E70100A40C6D /* numerals.tga */; };
|
||||
DA12F3090EF6E70100A40C6D /* spouseSprite.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F2FF0EF6E70100A40C6D /* spouseSprite.tga */; };
|
||||
DA12F30A0EF6E70100A40C6D /* tileSet.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3000EF6E70100A40C6D /* tileSet.tga */; };
|
||||
DA12F30B0EF6E70100A40C6D /* chestPrize.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3010EF6E70100A40C6D /* chestPrize.tga */; };
|
||||
DA12F30C0EF6E70100A40C6D /* chestDust.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3020EF6E70100A40C6D /* chestDust.tga */; };
|
||||
DA12F30D0EF6E70100A40C6D /* chest.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3030EF6E70100A40C6D /* chest.tga */; };
|
||||
DA12F30E0EF6E70100A40C6D /* characterSpriteSad.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3040EF6E70100A40C6D /* characterSpriteSad.tga */; };
|
||||
DA12F30F0EF6E70100A40C6D /* characterSprite.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3050EF6E70100A40C6D /* characterSprite.tga */; };
|
||||
DA12F3390EF6E89F00A40C6D /* World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F32E0EF6E89F00A40C6D /* World.cpp */; };
|
||||
DA12F33A0EF6E89F00A40C6D /* score.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F3300EF6E89F00A40C6D /* score.cpp */; };
|
||||
DA12F33B0EF6E89F00A40C6D /* map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F3320EF6E89F00A40C6D /* map.cpp */; };
|
||||
DA12F33C0EF6E89F00A40C6D /* landscape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F3340EF6E89F00A40C6D /* landscape.cpp */; };
|
||||
DA12F33D0EF6E89F00A40C6D /* Envelope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F3370EF6E89F00A40C6D /* Envelope.cpp */; };
|
||||
DA12F3420EF6E8BD00A40C6D /* blowUp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F33E0EF6E8BD00A40C6D /* blowUp.cpp */; };
|
||||
DA12F3430EF6E8BD00A40C6D /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F3400EF6E8BD00A40C6D /* common.cpp */; };
|
||||
DA12F3440EF6E8BD00A40C6D /* game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA12F3410EF6E8BD00A40C6D /* game.cpp */; };
|
||||
DA12F3E60EF6F00600A40C6D /* music.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA12F3E50EF6F00600A40C6D /* music.tga */; };
|
||||
DA7F11810EF6D77000CB6D50 /* gameWindowAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA7F117E0EF6D77000CB6D50 /* gameWindowAppDelegate.mm */; };
|
||||
DA8276E60EF9B2290061079D /* arrows.tga in Resources */ = {isa = PBXBuildFile; fileRef = DA8276E50EF9B2290061079D /* arrows.tga */; };
|
||||
DA8277840EF9FFE80061079D /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8277830EF9FFE80061079D /* Icon.png */; };
|
||||
DA86AEC90EF53C7100054E6B /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
|
||||
DA8C9E1C0EF8095C002FCA67 /* TimeUnix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C9E1B0EF8095C002FCA67 /* TimeUnix.cpp */; };
|
||||
DA8C9E1E0EF80968002FCA67 /* ThreadLinux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C9E1D0EF80968002FCA67 /* ThreadLinux.cpp */; };
|
||||
DA8C9E200EF80985002FCA67 /* PathLinux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C9E1F0EF80985002FCA67 /* PathLinux.cpp */; };
|
||||
DA8C9F090EF817F7002FCA67 /* StringBufferOutputStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C9F050EF817F7002FCA67 /* StringBufferOutputStream.cpp */; };
|
||||
DA8C9F0A0EF817F7002FCA67 /* stringUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C9F070EF817F7002FCA67 /* stringUtils.cpp */; };
|
||||
DA90DD060EFAB907001BABB5 /* musicPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA90DD050EFAB907001BABB5 /* musicPlayer.cpp */; };
|
||||
DA90DD140EFAC2AF001BABB5 /* Timbre.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA90DD110EFAC2AF001BABB5 /* Timbre.cpp */; };
|
||||
DA90DD4A0EFADE15001BABB5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA90DD490EFADE15001BABB5 /* AudioToolbox.framework */; };
|
||||
DA9E302E0EFC010300DFACC7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA9E302C0EFC010300DFACC7 /* QuartzCore.framework */; };
|
||||
DA9E302F0EFC010300DFACC7 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA9E302D0EFC010300DFACC7 /* OpenGLES.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
1D6058910D05DD3D006BFB54 /* Passage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Passage.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
DA12F2FC0EF6E70100A40C6D /* title.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = title.tga; path = ../graphics/title.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F2FD0EF6E70100A40C6D /* heart.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = heart.tga; path = ../graphics/heart.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F2FE0EF6E70100A40C6D /* numerals.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = numerals.tga; path = ../graphics/numerals.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F2FF0EF6E70100A40C6D /* spouseSprite.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = spouseSprite.tga; path = ../graphics/spouseSprite.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3000EF6E70100A40C6D /* tileSet.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = tileSet.tga; path = ../graphics/tileSet.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3010EF6E70100A40C6D /* chestPrize.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = chestPrize.tga; path = ../graphics/chestPrize.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3020EF6E70100A40C6D /* chestDust.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = chestDust.tga; path = ../graphics/chestDust.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3030EF6E70100A40C6D /* chest.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = chest.tga; path = ../graphics/chest.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3040EF6E70100A40C6D /* characterSpriteSad.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = characterSpriteSad.tga; path = ../graphics/characterSpriteSad.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3050EF6E70100A40C6D /* characterSprite.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = characterSprite.tga; path = ../graphics/characterSprite.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA12F32D0EF6E89F00A40C6D /* World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = World.h; path = ../World.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F32E0EF6E89F00A40C6D /* World.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = World.cpp; path = ../World.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA12F32F0EF6E89F00A40C6D /* score.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = score.h; path = ../score.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3300EF6E89F00A40C6D /* score.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = score.cpp; path = ../score.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3310EF6E89F00A40C6D /* map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = map.h; path = ../map.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3320EF6E89F00A40C6D /* map.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = map.cpp; path = ../map.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3330EF6E89F00A40C6D /* landscape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = landscape.h; path = ../landscape.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3340EF6E89F00A40C6D /* landscape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = landscape.cpp; path = ../landscape.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3350EF6E89F00A40C6D /* HashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HashTable.h; path = ../HashTable.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3360EF6E89F00A40C6D /* Envelope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Envelope.h; path = ../Envelope.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3370EF6E89F00A40C6D /* Envelope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Envelope.cpp; path = ../Envelope.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA12F33E0EF6E8BD00A40C6D /* blowUp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = blowUp.cpp; sourceTree = "<group>"; };
|
||||
DA12F33F0EF6E8BD00A40C6D /* blowUp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowUp.h; sourceTree = "<group>"; };
|
||||
DA12F3400EF6E8BD00A40C6D /* common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; sourceTree = "<group>"; };
|
||||
DA12F3410EF6E8BD00A40C6D /* game.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = game.cpp; sourceTree = "<group>"; };
|
||||
DA12F3CF0EF6EED000A40C6D /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = ../common.h; sourceTree = SOURCE_ROOT; };
|
||||
DA12F3E50EF6F00600A40C6D /* music.tga */ = {isa = PBXFileReference; lastKnownFileType = file; name = music.tga; path = ../music/music.tga; sourceTree = SOURCE_ROOT; };
|
||||
DA7F10EE0EF6CA2500CB6D50 /* drawIntoScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = drawIntoScreen.h; sourceTree = "<group>"; };
|
||||
DA7F117E0EF6D77000CB6D50 /* gameWindowAppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = gameWindowAppDelegate.mm; sourceTree = "<group>"; };
|
||||
DA7F117F0EF6D77000CB6D50 /* gameWindowAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameWindowAppDelegate.h; sourceTree = "<group>"; };
|
||||
DA7F11800EF6D77000CB6D50 /* gameWindowApp_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameWindowApp_Prefix.pch; sourceTree = "<group>"; };
|
||||
DA8276E50EF9B2290061079D /* arrows.tga */ = {isa = PBXFileReference; lastKnownFileType = file; path = arrows.tga; sourceTree = "<group>"; };
|
||||
DA8277830EF9FFE80061079D /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
|
||||
DA8C9E1B0EF8095C002FCA67 /* TimeUnix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TimeUnix.cpp; path = ../../../minorGems/system/unix/TimeUnix.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA8C9E1D0EF80968002FCA67 /* ThreadLinux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadLinux.cpp; path = ../../../minorGems/system/linux/ThreadLinux.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA8C9E1F0EF80985002FCA67 /* PathLinux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PathLinux.cpp; path = ../../../minorGems/io/file/linux/PathLinux.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA8C9F050EF817F7002FCA67 /* StringBufferOutputStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringBufferOutputStream.cpp; path = ../../../minorGems/util/StringBufferOutputStream.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA8C9F060EF817F7002FCA67 /* StringBufferOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringBufferOutputStream.h; path = ../../../minorGems/util/StringBufferOutputStream.h; sourceTree = SOURCE_ROOT; };
|
||||
DA8C9F070EF817F7002FCA67 /* stringUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stringUtils.cpp; path = ../../../minorGems/util/stringUtils.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA8C9F080EF817F7002FCA67 /* stringUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stringUtils.h; path = ../../../minorGems/util/stringUtils.h; sourceTree = SOURCE_ROOT; };
|
||||
DA90DD050EFAB907001BABB5 /* musicPlayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = musicPlayer.cpp; sourceTree = "<group>"; };
|
||||
DA90DD110EFAC2AF001BABB5 /* Timbre.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Timbre.cpp; path = ../Timbre.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DA90DD120EFAC2AF001BABB5 /* Timbre.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Timbre.h; path = ../Timbre.h; sourceTree = SOURCE_ROOT; };
|
||||
DA90DD130EFAC2AF001BABB5 /* musicPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = musicPlayer.h; path = ../musicPlayer.h; sourceTree = SOURCE_ROOT; };
|
||||
DA90DD490EFADE15001BABB5 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
DA9E302C0EFC010300DFACC7 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
DA9E302D0EFC010300DFACC7 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
|
||||
DA90DD4A0EFADE15001BABB5 /* AudioToolbox.framework in Frameworks */,
|
||||
DA9E302E0EFC010300DFACC7 /* QuartzCore.framework in Frameworks */,
|
||||
DA9E302F0EFC010300DFACC7 /* OpenGLES.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D6058910D05DD3D006BFB54 /* Passage.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = CustomTemplate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA12F31E0EF6E84900A40C6D /* Unchanged */,
|
||||
DA12F31D0EF6E83D00A40C6D /* Customized */,
|
||||
DA7F117E0EF6D77000CB6D50 /* gameWindowAppDelegate.mm */,
|
||||
DA7F117F0EF6D77000CB6D50 /* gameWindowAppDelegate.h */,
|
||||
DA7F11800EF6D77000CB6D50 /* gameWindowApp_Prefix.pch */,
|
||||
DA7F10EE0EF6CA2500CB6D50 /* drawIntoScreen.h */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA8277830EF9FFE80061079D /* Icon.png */,
|
||||
DA12F2FB0EF6E6B100A40C6D /* graphics */,
|
||||
28AD733E0D9D9553002E5188 /* MainWindow.xib */,
|
||||
8D1107310486CEB800E47090 /* Info.plist */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA9E302C0EFC010300DFACC7 /* QuartzCore.framework */,
|
||||
DA9E302D0EFC010300DFACC7 /* OpenGLES.framework */,
|
||||
DA90DD490EFADE15001BABB5 /* AudioToolbox.framework */,
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA12F2FB0EF6E6B100A40C6D /* graphics */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA8276E50EF9B2290061079D /* arrows.tga */,
|
||||
DA12F3E50EF6F00600A40C6D /* music.tga */,
|
||||
DA12F2FC0EF6E70100A40C6D /* title.tga */,
|
||||
DA12F2FD0EF6E70100A40C6D /* heart.tga */,
|
||||
DA12F2FE0EF6E70100A40C6D /* numerals.tga */,
|
||||
DA12F2FF0EF6E70100A40C6D /* spouseSprite.tga */,
|
||||
DA12F3000EF6E70100A40C6D /* tileSet.tga */,
|
||||
DA12F3010EF6E70100A40C6D /* chestPrize.tga */,
|
||||
DA12F3020EF6E70100A40C6D /* chestDust.tga */,
|
||||
DA12F3030EF6E70100A40C6D /* chest.tga */,
|
||||
DA12F3040EF6E70100A40C6D /* characterSpriteSad.tga */,
|
||||
DA12F3050EF6E70100A40C6D /* characterSprite.tga */,
|
||||
);
|
||||
name = graphics;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA12F31D0EF6E83D00A40C6D /* Customized */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA12F33E0EF6E8BD00A40C6D /* blowUp.cpp */,
|
||||
DA90DD050EFAB907001BABB5 /* musicPlayer.cpp */,
|
||||
DA12F33F0EF6E8BD00A40C6D /* blowUp.h */,
|
||||
DA12F3400EF6E8BD00A40C6D /* common.cpp */,
|
||||
DA12F3410EF6E8BD00A40C6D /* game.cpp */,
|
||||
);
|
||||
name = Customized;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA12F31E0EF6E84900A40C6D /* Unchanged */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA8C9E030EF80930002FCA67 /* minorGems */,
|
||||
DA90DD110EFAC2AF001BABB5 /* Timbre.cpp */,
|
||||
DA90DD120EFAC2AF001BABB5 /* Timbre.h */,
|
||||
DA90DD130EFAC2AF001BABB5 /* musicPlayer.h */,
|
||||
DA12F3CF0EF6EED000A40C6D /* common.h */,
|
||||
DA12F32D0EF6E89F00A40C6D /* World.h */,
|
||||
DA12F32E0EF6E89F00A40C6D /* World.cpp */,
|
||||
DA12F32F0EF6E89F00A40C6D /* score.h */,
|
||||
DA12F3300EF6E89F00A40C6D /* score.cpp */,
|
||||
DA12F3310EF6E89F00A40C6D /* map.h */,
|
||||
DA12F3320EF6E89F00A40C6D /* map.cpp */,
|
||||
DA12F3330EF6E89F00A40C6D /* landscape.h */,
|
||||
DA12F3340EF6E89F00A40C6D /* landscape.cpp */,
|
||||
DA12F3350EF6E89F00A40C6D /* HashTable.h */,
|
||||
DA12F3360EF6E89F00A40C6D /* Envelope.h */,
|
||||
DA12F3370EF6E89F00A40C6D /* Envelope.cpp */,
|
||||
);
|
||||
name = Unchanged;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA8C9E030EF80930002FCA67 /* minorGems */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA8C9F050EF817F7002FCA67 /* StringBufferOutputStream.cpp */,
|
||||
DA8C9F060EF817F7002FCA67 /* StringBufferOutputStream.h */,
|
||||
DA8C9F070EF817F7002FCA67 /* stringUtils.cpp */,
|
||||
DA8C9F080EF817F7002FCA67 /* stringUtils.h */,
|
||||
DA8C9E1F0EF80985002FCA67 /* PathLinux.cpp */,
|
||||
DA8C9E1B0EF8095C002FCA67 /* TimeUnix.cpp */,
|
||||
DA8C9E1D0EF80968002FCA67 /* ThreadLinux.cpp */,
|
||||
);
|
||||
name = minorGems;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1D6058900D05DD3D006BFB54 /* Passage */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Passage" */;
|
||||
buildPhases = (
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||
DA12F31C0EF6E79F00A40C6D /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Passage;
|
||||
productName = testWindowApp;
|
||||
productReference = 1D6058910D05DD3D006BFB54 /* Passage.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "gameWindowApp" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1D6058900D05DD3D006BFB54 /* Passage */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA86AEC90EF53C7100054E6B /* MainWindow.xib in Resources */,
|
||||
DA12F3060EF6E70100A40C6D /* title.tga in Resources */,
|
||||
DA12F3070EF6E70100A40C6D /* heart.tga in Resources */,
|
||||
DA12F3080EF6E70100A40C6D /* numerals.tga in Resources */,
|
||||
DA12F3090EF6E70100A40C6D /* spouseSprite.tga in Resources */,
|
||||
DA12F30A0EF6E70100A40C6D /* tileSet.tga in Resources */,
|
||||
DA12F30B0EF6E70100A40C6D /* chestPrize.tga in Resources */,
|
||||
DA12F30C0EF6E70100A40C6D /* chestDust.tga in Resources */,
|
||||
DA12F30D0EF6E70100A40C6D /* chest.tga in Resources */,
|
||||
DA12F30E0EF6E70100A40C6D /* characterSpriteSad.tga in Resources */,
|
||||
DA12F30F0EF6E70100A40C6D /* characterSprite.tga in Resources */,
|
||||
DA12F3E60EF6F00600A40C6D /* music.tga in Resources */,
|
||||
DA8276E60EF9B2290061079D /* arrows.tga in Resources */,
|
||||
DA8277840EF9FFE80061079D /* Icon.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
DA12F31C0EF6E79F00A40C6D /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
|
||||
DA7F11810EF6D77000CB6D50 /* gameWindowAppDelegate.mm in Sources */,
|
||||
DA12F3390EF6E89F00A40C6D /* World.cpp in Sources */,
|
||||
DA12F33A0EF6E89F00A40C6D /* score.cpp in Sources */,
|
||||
DA12F33B0EF6E89F00A40C6D /* map.cpp in Sources */,
|
||||
DA12F33C0EF6E89F00A40C6D /* landscape.cpp in Sources */,
|
||||
DA12F33D0EF6E89F00A40C6D /* Envelope.cpp in Sources */,
|
||||
DA12F3420EF6E8BD00A40C6D /* blowUp.cpp in Sources */,
|
||||
DA12F3430EF6E8BD00A40C6D /* common.cpp in Sources */,
|
||||
DA12F3440EF6E8BD00A40C6D /* game.cpp in Sources */,
|
||||
DA8C9E1C0EF8095C002FCA67 /* TimeUnix.cpp in Sources */,
|
||||
DA8C9E1E0EF80968002FCA67 /* ThreadLinux.cpp in Sources */,
|
||||
DA8C9E200EF80985002FCA67 /* PathLinux.cpp in Sources */,
|
||||
DA8C9F090EF817F7002FCA67 /* StringBufferOutputStream.cpp in Sources */,
|
||||
DA8C9F0A0EF817F7002FCA67 /* stringUtils.cpp in Sources */,
|
||||
DA90DD060EFAB907001BABB5 /* musicPlayer.cpp in Sources */,
|
||||
DA90DD140EFAC2AF001BABB5 /* Timbre.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = gameWindowApp_Prefix.pch;
|
||||
HEADER_SEARCH_PATHS = /Users/jasonrohrer/cpp;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
PRODUCT_NAME = Passage;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1D6058950D05DD3E006BFB54 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = gameWindowApp_Prefix.pch;
|
||||
HEADER_SEARCH_PATHS = /Users/jasonrohrer/cpp;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
PRODUCT_NAME = Passage;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos2.2;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos2.2;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
DA9E30CB0EFC240700DFACC7 /* Distribution */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos2.2;
|
||||
};
|
||||
name = Distribution;
|
||||
};
|
||||
DA9E30CC0EFC240700DFACC7 /* Distribution */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Jason Rohrer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = gameWindowApp_Prefix.pch;
|
||||
HEADER_SEARCH_PATHS = /Users/jasonrohrer/cpp;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
PRODUCT_NAME = Passage;
|
||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "0BE1AB5F-422D-4C27-A26D-B23A5A1F89C1";
|
||||
};
|
||||
name = Distribution;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Passage" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1D6058940D05DD3E006BFB54 /* Debug */,
|
||||
1D6058950D05DD3E006BFB54 /* Release */,
|
||||
DA9E30CC0EFC240700DFACC7 /* Distribution */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "gameWindowApp" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
DA9E30CB0EFC240700DFACC7 /* Distribution */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
74
gamma256/gameSource/iPhone/gameWindowAppDelegate.h
Normal file
74
gamma256/gameSource/iPhone/gameWindowAppDelegate.h
Normal file
|
@ -0,0 +1,74 @@
|
|||
//
|
||||
// testWindowAppAppDelegate.h
|
||||
// testWindowApp
|
||||
//
|
||||
// Created by Jason Rohrer on 12/14/08.
|
||||
// Copyright __MyCompanyName__ 2008. All rights reserved.
|
||||
//
|
||||
|
||||
#include "drawIntoScreen.h"
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <OpenGLES/EAGL.h>
|
||||
#import <OpenGLES/ES1/gl.h>
|
||||
#import <OpenGLES/ES1/glext.h>
|
||||
|
||||
@interface MyView : UIView {
|
||||
@private
|
||||
NSTimer *animationTimer;
|
||||
|
||||
/* The pixel dimensions of the backbuffer */
|
||||
GLint backingWidth;
|
||||
GLint backingHeight;
|
||||
|
||||
EAGLContext *context;
|
||||
|
||||
/* OpenGL names for the renderbuffer and framebuffers used to render to this view */
|
||||
GLuint viewRenderbuffer, viewFramebuffer;
|
||||
|
||||
/* OpenGL name for the depth buffer that is attached to viewFramebuffer, if it exists (0 if it does not exist) */
|
||||
GLuint depthRenderbuffer;
|
||||
|
||||
GLuint textureID;
|
||||
|
||||
|
||||
|
||||
Uint32 *screenBitmap;
|
||||
int bitmapW;
|
||||
int bitmapH;
|
||||
int bitmapBytes;
|
||||
|
||||
// for old DrawImage version
|
||||
// CGDataProviderRef provider;
|
||||
// CGColorSpaceRef colorSpaceRef;
|
||||
// CGImageRef imageRef;
|
||||
}
|
||||
|
||||
@property NSTimer *animationTimer;
|
||||
@property (nonatomic, retain) EAGLContext *context;
|
||||
|
||||
- (void)startAnimation;
|
||||
- (void)stopAnimation;
|
||||
- (void)drawFrame;
|
||||
- (BOOL) createFramebuffer;
|
||||
- (void) destroyFramebuffer;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface gameWindowAppDelegate : NSObject <UIAccelerometerDelegate> {
|
||||
UIWindow *window;
|
||||
MyView *view;
|
||||
// used for low-pass filtering
|
||||
UIAccelerationValue accelerationBuffer[3];
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) IBOutlet UIWindow *window;
|
||||
@property (nonatomic, retain) IBOutlet MyView *view;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
434
gamma256/gameSource/iPhone/gameWindowAppDelegate.mm
Normal file
434
gamma256/gameSource/iPhone/gameWindowAppDelegate.mm
Normal file
|
@ -0,0 +1,434 @@
|
|||
//
|
||||
// testWindowAppAppDelegate.m
|
||||
// testWindowApp
|
||||
//
|
||||
// Created by Jason Rohrer on 12/14/08.
|
||||
// Copyright __MyCompanyName__ 2008. All rights reserved.
|
||||
//
|
||||
|
||||
#import "gameWindowAppDelegate.h"
|
||||
|
||||
|
||||
@implementation gameWindowAppDelegate
|
||||
|
||||
@synthesize window;
|
||||
@synthesize view;
|
||||
|
||||
|
||||
- (void)applicationDidFinishLaunching:(UIApplication *)application {
|
||||
|
||||
printf( "App finished launching\n" );
|
||||
|
||||
printf( "Calling start anim\n" );
|
||||
[view startAnimation];
|
||||
printf( "Done starting animation\n" );
|
||||
|
||||
// Override point for customization after application launch
|
||||
[window makeKeyAndVisible];
|
||||
|
||||
// Configure and start the accelerometer
|
||||
// off for now
|
||||
//[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 15)];
|
||||
//[[UIAccelerometer sharedAccelerometer] setDelegate:self];
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// UIAccelerometerDelegate method, called when the device accelerates.
|
||||
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
|
||||
//printf( "%d --- accel called w %f,%f\n", timeOfCall, acceleration.x, acceleration.y );
|
||||
// low pass filter
|
||||
float filterFactor = 0.5;
|
||||
accelerationBuffer[0] = acceleration.x * filterFactor + (1-filterFactor) * accelerationBuffer[0];
|
||||
accelerationBuffer[1] = acceleration.y * filterFactor + (1-filterFactor) * accelerationBuffer[1];
|
||||
accelerationBuffer[2] = acceleration.z * filterFactor + (1-filterFactor) * accelerationBuffer[2];
|
||||
|
||||
setOrientation( asin( accelerationBuffer[0] ), asin( accelerationBuffer[1] ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[window release];
|
||||
[view stopAnimation];
|
||||
[view release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "drawIntoScreen.h"
|
||||
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
#import <OpenGLES/EAGLDrawable.h>
|
||||
|
||||
@implementation MyView
|
||||
|
||||
@synthesize animationTimer;
|
||||
@synthesize context;
|
||||
|
||||
// You must implement this method
|
||||
+ (Class)layerClass {
|
||||
return [CAEAGLLayer class];
|
||||
}
|
||||
|
||||
|
||||
//The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:
|
||||
- (id)initWithCoder:(NSCoder*)coder {
|
||||
|
||||
if ((self = [super initWithCoder:coder])) {
|
||||
// Get the layer
|
||||
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
|
||||
|
||||
eaglLayer.opaque = YES;
|
||||
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
|
||||
|
||||
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
|
||||
|
||||
if (!context || ![EAGLContext setCurrentContext:context]) {
|
||||
[self release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
|
||||
NSTimeInterval countStartTime;
|
||||
int appFrameCount = 0;
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[EAGLContext setCurrentContext:context];
|
||||
[self destroyFramebuffer];
|
||||
[self createFramebuffer];
|
||||
|
||||
NSDate *then = [NSDate date];
|
||||
|
||||
countStartTime = [then timeIntervalSinceReferenceDate];
|
||||
|
||||
[self drawFrame];
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)createFramebuffer {
|
||||
|
||||
glGenFramebuffersOES(1, &viewFramebuffer);
|
||||
glGenRenderbuffersOES(1, &viewRenderbuffer);
|
||||
|
||||
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
|
||||
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
|
||||
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
|
||||
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
|
||||
|
||||
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
|
||||
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
|
||||
|
||||
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
|
||||
NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
|
||||
return NO;
|
||||
}
|
||||
|
||||
glGenTextures( 1, &textureID );
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
- (void)destroyFramebuffer {
|
||||
|
||||
glDeleteFramebuffersOES(1, &viewFramebuffer);
|
||||
viewFramebuffer = 0;
|
||||
glDeleteRenderbuffersOES(1, &viewRenderbuffer);
|
||||
viewRenderbuffer = 0;
|
||||
|
||||
if(depthRenderbuffer) {
|
||||
glDeleteRenderbuffersOES(1, &depthRenderbuffer);
|
||||
depthRenderbuffer = 0;
|
||||
}
|
||||
|
||||
glDeleteTextures( 1, &textureID );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- (void)setAnimationTimer:(NSTimer *)newTimer {
|
||||
[animationTimer invalidate];
|
||||
animationTimer = newTimer;
|
||||
}
|
||||
|
||||
- (void)startAnimation {
|
||||
NSTimeInterval animationInterval = 1 / 15.0;
|
||||
|
||||
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(drawFrame) userInfo:nil repeats:YES];
|
||||
|
||||
|
||||
|
||||
bitmapW = 128;
|
||||
bitmapH = 128;
|
||||
|
||||
int screenPixels = bitmapW * bitmapH;
|
||||
bitmapBytes = screenPixels* 4;
|
||||
|
||||
screenBitmap = (Uint32 *) malloc( bitmapBytes );
|
||||
/*
|
||||
// for old DrawImage version
|
||||
provider = CGDataProviderCreateWithData( NULL, screenBitmap, screenPixels * 4, NULL );
|
||||
colorSpaceRef = CGColorSpaceCreateDeviceRGB();
|
||||
imageRef = CGImageCreate(
|
||||
bitmapW,
|
||||
bitmapH,
|
||||
8,
|
||||
32,
|
||||
4 * bitmapW,
|
||||
colorSpaceRef,
|
||||
kCGImageAlphaNoneSkipLast,
|
||||
provider,
|
||||
NULL,
|
||||
NO,
|
||||
kCGRenderingIntentDefault );
|
||||
*/
|
||||
initScreenDrawer( screenBitmap, bitmapW, bitmapH );
|
||||
}
|
||||
|
||||
|
||||
- (void)stopAnimation {
|
||||
printf( "Stop anim called\n" );
|
||||
self.animationTimer = nil;
|
||||
|
||||
free( screenBitmap );
|
||||
|
||||
freeScreenDrawer();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- (void)drawFrame {
|
||||
// old DrawImage version
|
||||
//[self setNeedsDisplay];
|
||||
|
||||
|
||||
|
||||
|
||||
const GLfloat squareVertices[] = {
|
||||
-1.6f, -1.6f,
|
||||
1.6f, -1.6f,
|
||||
-1.6f, 1.6f,
|
||||
1.6f, 1.6f,
|
||||
};
|
||||
/*
|
||||
const GLubyte squareColors[] = {
|
||||
255, 255, 0, 255,
|
||||
0, 255, 255, 255,
|
||||
255, 0, 0, 0,
|
||||
255, 0, 255, 255,
|
||||
};
|
||||
*/
|
||||
const GLfloat squareTextureCoords[] = {
|
||||
0, 0,
|
||||
1, 0,
|
||||
0, 1,
|
||||
1, 1
|
||||
};
|
||||
|
||||
[EAGLContext setCurrentContext:context];
|
||||
|
||||
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
|
||||
glViewport(0, 0, backingWidth, backingHeight);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f);
|
||||
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
|
||||
//glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
//glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glVertexPointer(2, GL_FLOAT, 0, squareVertices);
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
|
||||
//glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors);
|
||||
//glEnableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
glTexCoordPointer(2, GL_FLOAT, 0, squareTextureCoords);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
|
||||
// set new texture data
|
||||
drawIntoScreen( screenBitmap, bitmapW, bitmapH );
|
||||
|
||||
int error;
|
||||
|
||||
GLenum texFormat = GL_RGBA;
|
||||
glBindTexture( GL_TEXTURE_2D, textureID );
|
||||
|
||||
error = glGetError();
|
||||
if( error != GL_NO_ERROR ) { // error
|
||||
printf( "Error binding to texture id %d, error = %d\n",
|
||||
(int)textureID,
|
||||
error );
|
||||
}
|
||||
|
||||
|
||||
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
|
||||
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
|
||||
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
||||
|
||||
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
|
||||
|
||||
glTexImage2D( GL_TEXTURE_2D, 0,
|
||||
texFormat, bitmapW,
|
||||
bitmapH, 0,
|
||||
texFormat, GL_UNSIGNED_BYTE, screenBitmap );
|
||||
|
||||
error = glGetError();
|
||||
if( error != GL_NO_ERROR ) { // error
|
||||
printf( "Error setting texture data for id %d, error = %d\n",
|
||||
(int)textureID, error );
|
||||
printf( "Perhaps texture image width or height is not a power of 2\n"
|
||||
"Width = %lu, Height = %lu\n",
|
||||
bitmapW, bitmapH );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
glEnable( GL_TEXTURE_2D );
|
||||
glBindTexture( GL_TEXTURE_2D, textureID );
|
||||
|
||||
|
||||
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
|
||||
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
|
||||
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
|
||||
|
||||
|
||||
appFrameCount++;
|
||||
|
||||
// disable FPS tracking
|
||||
if( false && appFrameCount > 100 ) {
|
||||
NSDate *now = [NSDate date];
|
||||
|
||||
NSTimeInterval newStartTime = [now timeIntervalSinceReferenceDate];
|
||||
|
||||
NSTimeInterval elapsedTime = newStartTime - countStartTime;
|
||||
|
||||
printf( "FPS: %f\n", appFrameCount / elapsedTime );
|
||||
|
||||
countStartTime = newStartTime;
|
||||
appFrameCount = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
// old DrawImage version
|
||||
|
||||
#include <time.h>
|
||||
|
||||
unsigned int appFrameCountStartTime = time( NULL );
|
||||
|
||||
int appFrameCount = 0;
|
||||
|
||||
- (void)drawRect:(CGRect)rect {
|
||||
|
||||
//printf( "Draw Rect called!\n" );
|
||||
|
||||
drawIntoScreen( screenBitmap, bitmapW, bitmapH );
|
||||
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
|
||||
//CGContextRotateCTM ( context, M_PI / 2 );
|
||||
//CGContextTranslateCTM ( context, 0, -bitmapH );
|
||||
|
||||
CGRect imageRect = CGRectMake ( 0, 0, bitmapW, bitmapH );
|
||||
|
||||
CGContextDrawImage(context, imageRect, imageRef );
|
||||
|
||||
appFrameCount++;
|
||||
|
||||
if( appFrameCount > 100 ) {
|
||||
unsigned int newTime = time( NULL );
|
||||
unsigned int timeDelta = newTime - appFrameCountStartTime;
|
||||
|
||||
printf( "FPS = %f\n", (double)appFrameCount / (double)timeDelta );
|
||||
appFrameCount = 0;
|
||||
appFrameCountStartTime = newTime;
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
// Handles the start of a touch
|
||||
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
CGRect bounds = [self bounds];
|
||||
UITouch* touch = [[event touchesForView:self] anyObject];
|
||||
|
||||
//Convert touch point from UIView referential to OpenGL one (upside-down flip)
|
||||
CGPoint location = [touch locationInView:self];
|
||||
location.y = bounds.size.height - location.y;
|
||||
|
||||
touchStartPoint( location.x, location.y );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Handles touch motion
|
||||
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
CGRect bounds = [self bounds];
|
||||
UITouch* touch = [[event touchesForView:self] anyObject];
|
||||
|
||||
//Convert touch point from UIView referential to OpenGL one (upside-down flip)
|
||||
CGPoint location = [touch locationInView:self];
|
||||
location.y = bounds.size.height - location.y;
|
||||
|
||||
touchMovePoint( location.x, location.y );
|
||||
}
|
||||
|
||||
|
||||
// Handles touch end
|
||||
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
CGRect bounds = [self bounds];
|
||||
UITouch* touch = [[event touchesForView:self] anyObject];
|
||||
|
||||
//Convert touch point from UIView referential to OpenGL one (upside-down flip)
|
||||
CGPoint location = [touch locationInView:self];
|
||||
location.y = bounds.size.height - location.y;
|
||||
|
||||
touchEndPoint( location.x, location.y );
|
||||
}
|
||||
|
||||
|
||||
@end
|
8
gamma256/gameSource/iPhone/gameWindowApp_Prefix.pch
Normal file
8
gamma256/gameSource/iPhone/gameWindowApp_Prefix.pch
Normal file
|
@ -0,0 +1,8 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'testWindowApp' target in the 'testWindowApp' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
41
gamma256/gameSource/iPhone/main.m
Normal file
41
gamma256/gameSource/iPhone/main.m
Normal file
|
@ -0,0 +1,41 @@
|
|||
//
|
||||
// main.m
|
||||
// testWindowApp
|
||||
//
|
||||
// Created by Jason Rohrer on 12/14/08.
|
||||
// Copyright __MyCompanyName__ 2008. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
//printf( "Arg 0 = %s\n", argv[0] );
|
||||
|
||||
// arg 0 is the path to the app executable
|
||||
char *appDirectoryPath = strdup( argv[ 0 ] );
|
||||
|
||||
//printf( "Mac: app path %s\n", appDirectoryPath );
|
||||
|
||||
char *bundleName = "Passage.app";
|
||||
|
||||
char *appNamePointer = strstr( appDirectoryPath, bundleName );
|
||||
|
||||
if( appNamePointer != NULL ) {
|
||||
// terminate full app path to get bundle directory
|
||||
appNamePointer[ strlen( bundleName ) ] = '\0';
|
||||
|
||||
printf( "Mac: changing working dir to %s\n", appDirectoryPath );
|
||||
chdir( appDirectoryPath );
|
||||
}
|
||||
|
||||
free( appDirectoryPath );
|
||||
|
||||
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
int retVal = UIApplicationMain(argc, argv, nil, nil);
|
||||
[pool release];
|
||||
return retVal;
|
||||
}
|
799
gamma256/gameSource/iPhone/musicPlayer.cpp
Normal file
799
gamma256/gameSource/iPhone/musicPlayer.cpp
Normal file
|
@ -0,0 +1,799 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "Timbre.h"
|
||||
#include "Envelope.h"
|
||||
|
||||
#include "minorGems/util/SimpleVector.h"
|
||||
|
||||
|
||||
|
||||
//#include <CoreServices.h>
|
||||
#include <AudioUnit/AudioUnit.h>
|
||||
#include <AudioUnit/AUComponent.h>
|
||||
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <stdint.h>
|
||||
typedef int16_t Sint16;
|
||||
typedef uint8_t Uint8;
|
||||
|
||||
int sampleRate = 22050;
|
||||
//int sampleRate = 11025;
|
||||
|
||||
|
||||
|
||||
|
||||
Image *musicImage = NULL;
|
||||
int w, h;
|
||||
|
||||
// total number of samples played so far
|
||||
int streamSamples = 0;
|
||||
|
||||
// offset into grid at start
|
||||
// for testing
|
||||
int gridStartOffset = 0;
|
||||
|
||||
|
||||
|
||||
// overal loudness of music
|
||||
double musicLoudness = 1.0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// one grid step in seconds
|
||||
double gridStepDuration = 0.25;
|
||||
int gridStepDurationInSamples = (int)( gridStepDuration * sampleRate );
|
||||
|
||||
double entireGridDuraton;
|
||||
|
||||
|
||||
// c
|
||||
double keyFrequency = 261.63;
|
||||
|
||||
|
||||
int numTimbres = 4;
|
||||
|
||||
Timbre *musicTimbres[ 4 ];
|
||||
|
||||
int numEnvelopes = 4;
|
||||
|
||||
Envelope *musicEnvelopes[ 4 ];
|
||||
|
||||
|
||||
|
||||
class Note {
|
||||
public:
|
||||
// index into musicTimbres array
|
||||
int mTimbreNumber;
|
||||
|
||||
// index into musicEnvelopes array
|
||||
int mEnvelopeNumber;
|
||||
|
||||
int mScaleNoteNumber;
|
||||
|
||||
// additional loudness adjustment
|
||||
// places note in stereo space
|
||||
double mLoudnessLeft;
|
||||
double mLoudnessRight;
|
||||
|
||||
|
||||
// start time, in seconds from start of note grid
|
||||
double mStartTime;
|
||||
|
||||
// duration in seconds
|
||||
double mDuration;
|
||||
|
||||
// used when note is currently playing to track progress in note
|
||||
// negative if we should wait before starting to play the note
|
||||
int mCurrentSampleNumber;
|
||||
|
||||
// duration in samples
|
||||
int mNumSamples;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
// isomorphic to our music image, except only has an entry for each note
|
||||
// start (all others, including grid spots that contain note continuations,
|
||||
// are NULL)
|
||||
// indexed as noteGrid[y][x]
|
||||
Note ***noteGrid;
|
||||
|
||||
|
||||
SimpleVector<Note*> currentlyPlayingNotes;
|
||||
|
||||
|
||||
|
||||
// need to synch these with audio thread
|
||||
|
||||
void setMusicLoudness( double inLoudness ) {
|
||||
//SDL_LockAudio();
|
||||
|
||||
musicLoudness = inLoudness;
|
||||
|
||||
//SDL_UnlockAudio();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void restartMusic() {
|
||||
//SDL_LockAudio();
|
||||
|
||||
// return to beginning (and forget samples we've played so far)
|
||||
streamSamples = 0;
|
||||
|
||||
// drop all currently-playing notes
|
||||
currentlyPlayingNotes.deleteAll();
|
||||
|
||||
//SDL_UnlockAudio();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// called by SDL to get more samples
|
||||
void audioCallback( void *inUserData, Uint8 *inStream, int inLengthToFill ) {
|
||||
|
||||
// 2 bytes for each channel of stereo sample
|
||||
int numSamples = inLengthToFill / 4;
|
||||
|
||||
|
||||
Sint16 *samplesL = new Sint16[ numSamples ];
|
||||
Sint16 *samplesR = new Sint16[ numSamples ];
|
||||
|
||||
// first, zero-out the buffer to prepare it for our sum of note samples
|
||||
// each sample is 2 bytes
|
||||
memset( samplesL, 0, 2 * numSamples );
|
||||
memset( samplesR, 0, 2 * numSamples );
|
||||
|
||||
|
||||
int i;
|
||||
|
||||
|
||||
// hop through all grid steps that *start* in this stream buffer
|
||||
// add notes that start during this stream buffer
|
||||
|
||||
// how far into stream buffer before we hit our first grid step?
|
||||
int startOfFirstGridStep = streamSamples % gridStepDurationInSamples;
|
||||
|
||||
if( startOfFirstGridStep != 0 ) {
|
||||
startOfFirstGridStep =
|
||||
gridStepDurationInSamples - startOfFirstGridStep;
|
||||
}
|
||||
|
||||
|
||||
// hop from start of grid step to start of next grid step
|
||||
// ignore samples in between, since notes don't start there,
|
||||
// and all we're doing right now is finding notes that start
|
||||
for( i=startOfFirstGridStep;
|
||||
i<numSamples;
|
||||
i += gridStepDurationInSamples ) {
|
||||
|
||||
// start of new grid position
|
||||
|
||||
// check for new notes that are starting
|
||||
|
||||
// map into our music image:
|
||||
int x = ( streamSamples + i ) / gridStepDurationInSamples;
|
||||
|
||||
// wrap in image
|
||||
x = x % w;
|
||||
|
||||
for( int y=0; y<h; y++ ) {
|
||||
|
||||
Note *note = noteGrid[y][x];
|
||||
|
||||
if( note != NULL ) {
|
||||
// new note
|
||||
currentlyPlayingNotes.push_back( note );
|
||||
// start it
|
||||
|
||||
// set a delay for its start based on our position
|
||||
// in this callback buffer
|
||||
note->mCurrentSampleNumber = -i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
streamSamples += numSamples;
|
||||
|
||||
|
||||
// loop over all current notes and add their samples to buffer
|
||||
|
||||
for( int n=0; n<currentlyPlayingNotes.size(); n++ ) {
|
||||
|
||||
Note *note = *( currentlyPlayingNotes.getElement( n ) );
|
||||
|
||||
int waveTableNumber = note->mScaleNoteNumber;
|
||||
Timbre *timbre = musicTimbres[ note->mTimbreNumber ];
|
||||
int tableLength = timbre->mWaveTableLengths[ waveTableNumber ];
|
||||
|
||||
Sint16 *waveTable = timbre->mWaveTable[ waveTableNumber ];
|
||||
|
||||
Envelope *env = musicEnvelopes[ note->mEnvelopeNumber ];
|
||||
double *envLevels =
|
||||
env->getEnvelope(
|
||||
// index envelope by number of grid steps in note
|
||||
note->mNumSamples / gridStepDurationInSamples );
|
||||
|
||||
|
||||
double noteLoudnessL = note->mLoudnessLeft;
|
||||
double noteLoudnessR = note->mLoudnessRight;
|
||||
|
||||
// do this outside inner loop
|
||||
noteLoudnessL *= musicLoudness;
|
||||
noteLoudnessR *= musicLoudness;
|
||||
|
||||
|
||||
int noteStartInBuffer = 0;
|
||||
int noteEndInBuffer = numSamples;
|
||||
|
||||
if( note->mCurrentSampleNumber < 0 ) {
|
||||
// delay before note starts in this sample buffer
|
||||
noteStartInBuffer = - note->mCurrentSampleNumber;
|
||||
|
||||
// we've taken account of the delay
|
||||
note->mCurrentSampleNumber = 0;
|
||||
}
|
||||
|
||||
char endNote = false;
|
||||
|
||||
int numSamplesLeftInNote =
|
||||
note->mNumSamples - note->mCurrentSampleNumber;
|
||||
|
||||
if( noteStartInBuffer + numSamplesLeftInNote < noteEndInBuffer ) {
|
||||
// note ends before end of buffer
|
||||
noteEndInBuffer = noteStartInBuffer + numSamplesLeftInNote;
|
||||
endNote = true;
|
||||
}
|
||||
|
||||
|
||||
int waveTablePos = note->mCurrentSampleNumber % tableLength;
|
||||
|
||||
int currentSampleNumber = note->mCurrentSampleNumber;
|
||||
|
||||
for( i=noteStartInBuffer; i != noteEndInBuffer; i++ ) {
|
||||
double envelope = envLevels[ currentSampleNumber ];
|
||||
|
||||
double monoSample = envelope *
|
||||
waveTable[ waveTablePos ];
|
||||
|
||||
|
||||
samplesL[i] += (Sint16)( noteLoudnessL * monoSample );
|
||||
samplesR[i] += (Sint16)( noteLoudnessR * monoSample );
|
||||
|
||||
currentSampleNumber ++;
|
||||
|
||||
waveTablePos ++;
|
||||
|
||||
// avoid using mod operator (%) in inner loop
|
||||
// found with profiler
|
||||
if( waveTablePos == tableLength ) {
|
||||
// back to start of table
|
||||
waveTablePos = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
note->mCurrentSampleNumber += ( noteEndInBuffer - noteStartInBuffer );
|
||||
|
||||
if( endNote ) {
|
||||
// note ended in this buffer
|
||||
currentlyPlayingNotes.deleteElement( n );
|
||||
n--;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// now copy samples into Uint8 buffer
|
||||
int streamPosition = 0;
|
||||
for( i=0; i != numSamples; i++ ) {
|
||||
Sint16 intSampleL = samplesL[i];
|
||||
Sint16 intSampleR = samplesR[i];
|
||||
|
||||
inStream[ streamPosition ] = (Uint8)( intSampleL & 0xFF );
|
||||
inStream[ streamPosition + 1 ] = (Uint8)( ( intSampleL >> 8 ) & 0xFF );
|
||||
|
||||
inStream[ streamPosition + 2 ] = (Uint8)( intSampleR & 0xFF );
|
||||
inStream[ streamPosition + 3 ] = (Uint8)( ( intSampleR >> 8 ) & 0xFF );
|
||||
|
||||
streamPosition += 4;
|
||||
}
|
||||
|
||||
delete [] samplesL;
|
||||
delete [] samplesR;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// limit on n, based on Nyquist, when summing sine components
|
||||
//int nLimit = (int)( sampleRate * M_PI );
|
||||
// actually, this is way too many: it takes forever to compute
|
||||
// use a lower limit instead
|
||||
// This produces fine results (almost perfect square wave)
|
||||
int nLimit = 40;
|
||||
|
||||
|
||||
|
||||
// square wave with period of 2pi
|
||||
double squareWave( double inT ) {
|
||||
double sum = 0;
|
||||
|
||||
for( int n=1; n<nLimit; n+=2 ) {
|
||||
sum += 1.0/n * sin( n * inT );
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// sawtoot wave with period of 2pi
|
||||
double sawWave( double inT ) {
|
||||
double sum = 0;
|
||||
|
||||
for( int n=1; n<nLimit; n++ ) {
|
||||
sum += 1.0/n * sin( n * inT );
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
// white noise, ignores inT
|
||||
double whiteNoise( double inT ) {
|
||||
return 2.0 * ( rand() / (double)RAND_MAX ) - 1.0;
|
||||
}
|
||||
|
||||
|
||||
// white noise where each sample is averaged with last sample
|
||||
// effectively a low-pass filter
|
||||
double lastSample = 0;
|
||||
|
||||
double smoothedWhiteNoise( double inT ) {
|
||||
// give double-weight to last sample to make it even smoother
|
||||
lastSample = ( 2 * lastSample + whiteNoise( inT ) ) / 3;
|
||||
|
||||
return lastSample;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void loadMusicImage( char *inTGAFileName ) {
|
||||
|
||||
musicImage = readTGA( "music", inTGAFileName );
|
||||
|
||||
w = musicImage->getWidth();
|
||||
h = musicImage->getHeight();
|
||||
|
||||
// notes are in red and green channel
|
||||
double *redChannel = musicImage->getChannel( 0 );
|
||||
double *greenChannel = musicImage->getChannel( 1 );
|
||||
|
||||
|
||||
entireGridDuraton = gridStepDuration * w;
|
||||
|
||||
|
||||
// jump ahead in stream, if needed
|
||||
streamSamples += gridStartOffset * gridStepDurationInSamples;
|
||||
|
||||
|
||||
// blank line of pixels between timbres
|
||||
int heightPerTimbre = (h+1) / numTimbres - 1;
|
||||
|
||||
|
||||
// find the maximum number of simultaneous notes in the song
|
||||
// take loudness into account
|
||||
double maxNoteLoudnessInAColumn = 0;
|
||||
|
||||
int x, y;
|
||||
for( x=0; x<w; x++ ) {
|
||||
double noteLoudnessInColumnL = 0;
|
||||
double noteLoudnessInColumnR = 0;
|
||||
|
||||
for( y=0; y<h; y++ ) {
|
||||
|
||||
int imageIndex = y * w + x;
|
||||
|
||||
// the note number in our scale
|
||||
// scale starts over for each timbre, with blank line
|
||||
// in between timbres
|
||||
int noteNumber = (h - y - 1) % (heightPerTimbre + 1);
|
||||
|
||||
if( // not blank line between timbres
|
||||
noteNumber < heightPerTimbre &&
|
||||
// tone present in image
|
||||
( redChannel[ imageIndex ] > 0 ||
|
||||
greenChannel[ imageIndex ] > 0 ) ) {
|
||||
|
||||
noteLoudnessInColumnL += greenChannel[ imageIndex ];
|
||||
noteLoudnessInColumnR += redChannel[ imageIndex ];
|
||||
|
||||
}
|
||||
}
|
||||
// pick loudest channel for this column and compare it to
|
||||
// loudest column/channel seen so far
|
||||
if( maxNoteLoudnessInAColumn < noteLoudnessInColumnL ) {
|
||||
maxNoteLoudnessInAColumn = noteLoudnessInColumnL;
|
||||
}
|
||||
if( maxNoteLoudnessInAColumn < noteLoudnessInColumnR ) {
|
||||
maxNoteLoudnessInAColumn = noteLoudnessInColumnR;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// divide loudness amoung timbres to avoid clipping
|
||||
double loudnessPerTimbre = 1.0 / maxNoteLoudnessInAColumn;
|
||||
|
||||
// further adjust loudness per channel here as we construct
|
||||
// each timbre.
|
||||
// This is easier than tweaking loundness of a given part by hand
|
||||
// using a painting program
|
||||
|
||||
musicTimbres[0] = new Timbre( sampleRate, 0.6 * loudnessPerTimbre,
|
||||
keyFrequency,
|
||||
heightPerTimbre, sawWave );
|
||||
musicTimbres[1] = new Timbre( sampleRate, loudnessPerTimbre,
|
||||
keyFrequency,
|
||||
heightPerTimbre, sin );
|
||||
musicTimbres[2] = new Timbre( sampleRate, 0.4 * loudnessPerTimbre,
|
||||
keyFrequency / 4,
|
||||
heightPerTimbre, squareWave );
|
||||
musicTimbres[3] = new Timbre( sampleRate, 0.75 * loudnessPerTimbre,
|
||||
keyFrequency / 4,
|
||||
heightPerTimbre, smoothedWhiteNoise );
|
||||
|
||||
|
||||
// next, compute the longest note in the song
|
||||
int maxNoteLength = 0;
|
||||
|
||||
for( y=0; y<h; y++ ) {
|
||||
int currentNoteLength = 0;
|
||||
|
||||
for( x=0; x<w; x++ ) {
|
||||
int imageIndex = y * w + x;
|
||||
|
||||
// the note number in our scale
|
||||
// scale starts over for each timbre, with blank line
|
||||
// in between timbres
|
||||
int noteNumber = (h - y - 1) % (heightPerTimbre + 1);
|
||||
|
||||
if( // not blank line between timbres
|
||||
noteNumber < heightPerTimbre &&
|
||||
// tone present in image
|
||||
( redChannel[ imageIndex ] > 0 ||
|
||||
greenChannel[ imageIndex ] > 0 ) ) {
|
||||
|
||||
currentNoteLength ++;
|
||||
}
|
||||
else {
|
||||
currentNoteLength = 0;
|
||||
}
|
||||
if( currentNoteLength > maxNoteLength ) {
|
||||
maxNoteLength = currentNoteLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf( "Max note length in song = %d\n", maxNoteLength );
|
||||
|
||||
|
||||
|
||||
musicEnvelopes[0] = new Envelope( 0.05, 0.7, 0.25, 0.1,
|
||||
maxNoteLength,
|
||||
gridStepDurationInSamples );
|
||||
musicEnvelopes[1] = new Envelope( 0.1, 0.9, 0.0, 0.0,
|
||||
maxNoteLength,
|
||||
gridStepDurationInSamples );
|
||||
musicEnvelopes[2] = new Envelope( 0.25, 0.0, 1.0, 0.1,
|
||||
maxNoteLength,
|
||||
gridStepDurationInSamples );
|
||||
musicEnvelopes[3] = new Envelope( 0.0, 0.2, 0.0, 0.0,
|
||||
maxNoteLength,
|
||||
gridStepDurationInSamples );
|
||||
|
||||
|
||||
|
||||
|
||||
noteGrid = new Note**[ h ];
|
||||
|
||||
for( int y=0; y<h; y++ ) {
|
||||
noteGrid[y] = new Note*[ w ];
|
||||
|
||||
// each row is one pitch for a given instrument
|
||||
// thus, two consecutive pixels should be the same note
|
||||
// handle this by tracking whether a note is playing or not
|
||||
char notePlaying = false;
|
||||
Note *noteStart = NULL;
|
||||
for( int x=0; x<w; x++ ) {
|
||||
int imageIndex = y * w + x;
|
||||
|
||||
// default to NULL
|
||||
noteGrid[y][x] = NULL;
|
||||
|
||||
// the note number in our scale
|
||||
// scale starts over for each timbre, with blank line
|
||||
// in between timbres
|
||||
int noteNumber = (h - y - 1) % (heightPerTimbre + 1);
|
||||
|
||||
|
||||
|
||||
if( // not blank line between timbres
|
||||
noteNumber < heightPerTimbre &&
|
||||
// tone present in image
|
||||
( redChannel[ imageIndex ] > 0 ||
|
||||
greenChannel[ imageIndex ] > 0 ) ) {
|
||||
|
||||
|
||||
if( notePlaying ) {
|
||||
// part of note that's already playing
|
||||
|
||||
// one more grid step
|
||||
noteStart->mDuration += gridStepDuration;
|
||||
noteStart->mNumSamples += gridStepDurationInSamples;
|
||||
|
||||
}
|
||||
else {
|
||||
// start a new note
|
||||
noteGrid[y][x] = new Note();
|
||||
|
||||
noteGrid[y][x]->mScaleNoteNumber = noteNumber;
|
||||
|
||||
noteGrid[y][x]->mTimbreNumber =
|
||||
y / ( heightPerTimbre + 1 );
|
||||
|
||||
// same as timbre number
|
||||
noteGrid[y][x]->mEnvelopeNumber =
|
||||
noteGrid[y][x]->mTimbreNumber;
|
||||
|
||||
// left loudness from green brightness
|
||||
noteGrid[y][x]->mLoudnessLeft = greenChannel[ imageIndex ];
|
||||
|
||||
// right loudness from red brightness
|
||||
noteGrid[y][x]->mLoudnessRight = redChannel[ imageIndex ];
|
||||
|
||||
noteGrid[y][x]->mStartTime = gridStepDuration * x;
|
||||
|
||||
// one grid step so far
|
||||
noteGrid[y][x]->mDuration = gridStepDuration;
|
||||
noteGrid[y][x]->mNumSamples = gridStepDurationInSamples;
|
||||
|
||||
// track if it needs to be continued
|
||||
notePlaying = true;
|
||||
noteStart = noteGrid[y][x];
|
||||
}
|
||||
}
|
||||
else {
|
||||
// no tone
|
||||
|
||||
if( notePlaying ) {
|
||||
// stop it
|
||||
notePlaying = false;
|
||||
noteStart = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
AudioUnit gOutputUnit;
|
||||
|
||||
|
||||
OSStatus MyRenderer(void *inRefCon,
|
||||
AudioUnitRenderActionFlags *ioActionFlags,
|
||||
const AudioTimeStamp *inTimeStamp,
|
||||
UInt32 inBusNumber,
|
||||
UInt32 inNumberFrames,
|
||||
AudioBufferList *ioData)
|
||||
{
|
||||
|
||||
audioCallback( NULL, (Uint8 *)( ioData->mBuffers[0].mData ), ioData->mBuffers[0].mDataByteSize );
|
||||
|
||||
/*
|
||||
RenderSin (sSinWaveFrameCount,
|
||||
inNumberFrames,
|
||||
ioData->mBuffers[0].mData,
|
||||
sSampleRate,
|
||||
sAmplitude,
|
||||
sToneFrequency,
|
||||
sWhichFormat);
|
||||
|
||||
//we're just going to copy the data into each channel
|
||||
for (UInt32 channel = 1; channel < ioData->mNumberBuffers; channel++)
|
||||
memcpy (ioData->mBuffers[channel].mData, ioData->mBuffers[0].mData, ioData->mBuffers[0].mDataByteSize);
|
||||
|
||||
sSinWaveFrameCount += inNumberFrames;
|
||||
*/
|
||||
return noErr;
|
||||
}
|
||||
|
||||
// ________________________________________________________________________________
|
||||
//
|
||||
// CreateDefaultAU
|
||||
//
|
||||
void CreateDefaultAU()
|
||||
{
|
||||
OSStatus err = noErr;
|
||||
|
||||
// Open the default output unit
|
||||
AudioComponentDescription desc;
|
||||
desc.componentType = kAudioUnitType_Output;
|
||||
desc.componentSubType = kAudioUnitSubType_RemoteIO;
|
||||
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
|
||||
desc.componentFlags = 0;
|
||||
desc.componentFlagsMask = 0;
|
||||
|
||||
AudioComponent comp = AudioComponentFindNext(NULL, &desc);
|
||||
if (comp == NULL) { printf ("FindNextComponent\n"); return; }
|
||||
|
||||
err = AudioComponentInstanceNew(comp, &gOutputUnit);
|
||||
if (comp == NULL) { printf ("OpenAComponent=%ld\n", (long int)err); return; }
|
||||
|
||||
// Set up a callback function to generate output to the output unit
|
||||
AURenderCallbackStruct input;
|
||||
input.inputProc = MyRenderer;
|
||||
input.inputProcRefCon = NULL;
|
||||
|
||||
err = AudioUnitSetProperty (gOutputUnit,
|
||||
kAudioUnitProperty_SetRenderCallback,
|
||||
kAudioUnitScope_Input,
|
||||
0,
|
||||
&input,
|
||||
sizeof(input));
|
||||
if (err) { printf ("AudioUnitSetProperty-CB=%ld\n", (long int)err); return; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
// ________________________________________________________________________________
|
||||
//
|
||||
// TestDefaultAU
|
||||
//
|
||||
void TestDefaultAU()
|
||||
{
|
||||
OSStatus err = noErr;
|
||||
|
||||
// We tell the Output Unit what format we're going to supply data to it
|
||||
// this is necessary if you're providing data through an input callback
|
||||
// AND you want the DefaultOutputUnit to do any format conversions
|
||||
// necessary from your format to the device's format.
|
||||
AudioStreamBasicDescription streamFormat;
|
||||
streamFormat.mSampleRate = sampleRate;
|
||||
streamFormat.mFormatID = kAudioFormatLinearPCM;
|
||||
streamFormat.mFormatFlags =
|
||||
kLinearPCMFormatFlagIsSignedInteger
|
||||
| kAudioFormatFlagsNativeEndian
|
||||
| kLinearPCMFormatFlagIsPacked;
|
||||
//| kAudioFormatFlagIsNonInterleaved;
|
||||
streamFormat.mBytesPerPacket = 4;
|
||||
streamFormat.mFramesPerPacket = 1;
|
||||
streamFormat.mBytesPerFrame = 4;
|
||||
streamFormat.mChannelsPerFrame = 2;
|
||||
streamFormat.mBitsPerChannel = 16;
|
||||
|
||||
printf("Rendering source:\n\t");
|
||||
printf ("SampleRate=%f,", streamFormat.mSampleRate);
|
||||
printf ("BytesPerPacket=%ld,", (long int)streamFormat.mBytesPerPacket);
|
||||
printf ("FramesPerPacket=%ld,", (long int)streamFormat.mFramesPerPacket);
|
||||
printf ("BytesPerFrame=%ld,", (long int)streamFormat.mBytesPerFrame);
|
||||
printf ("BitsPerChannel=%ld,", (long int)streamFormat.mBitsPerChannel);
|
||||
printf ("ChannelsPerFrame=%ld\n", (long int)streamFormat.mChannelsPerFrame);
|
||||
|
||||
err = AudioUnitSetProperty ( gOutputUnit,
|
||||
kAudioUnitProperty_StreamFormat,
|
||||
kAudioUnitScope_Input,
|
||||
0,
|
||||
&streamFormat,
|
||||
sizeof(AudioStreamBasicDescription) );
|
||||
if (err) { printf ("AudioUnitSetProperty-SF=%4.4s, %ld\n", (char*)&err, (long int)err); return; }
|
||||
|
||||
// Initialize unit
|
||||
err = AudioUnitInitialize(gOutputUnit);
|
||||
if (err) { printf ("AudioUnitInitialize=%ld\n", (long int)err); return; }
|
||||
|
||||
Float64 outSampleRate;
|
||||
UInt32 size = sizeof(Float64);
|
||||
err = AudioUnitGetProperty (gOutputUnit,
|
||||
kAudioUnitProperty_SampleRate,
|
||||
kAudioUnitScope_Output,
|
||||
0,
|
||||
&outSampleRate,
|
||||
&size);
|
||||
if (err) { printf ("AudioUnitSetProperty-GF=%4.4s, %ld\n", (char*)&err, (long int)err); return; }
|
||||
|
||||
// Start the rendering
|
||||
// The DefaultOutputUnit will do any format conversions to the format of the default device
|
||||
err = AudioOutputUnitStart (gOutputUnit);
|
||||
if (err) { printf ("AudioOutputUnitStart=%ld\n", (long int)err); return; }
|
||||
|
||||
// we call the CFRunLoopRunInMode to service any notifications that the audio
|
||||
// system has to deal with
|
||||
//CFRunLoopRunInMode(kCFRunLoopDefaultMode, 2, false);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CloseDefaultAU ()
|
||||
{
|
||||
// Clean up
|
||||
OSStatus err = noErr;
|
||||
|
||||
err = AudioOutputUnitStop( gOutputUnit );
|
||||
if (err) { printf ("AudioOutputUnitStop=%ld\n", (long int)err); return; }
|
||||
|
||||
err = AudioUnitUninitialize (gOutputUnit);
|
||||
if (err) { printf ("AudioUnitUninitialize=%ld\n", (long int)err); return; }
|
||||
|
||||
AudioComponentInstanceDispose( gOutputUnit );
|
||||
//CloseComponent(gOutputUnit);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void startMusic( char *inTGAFileName ) {
|
||||
|
||||
loadMusicImage( inTGAFileName );
|
||||
|
||||
CreateDefaultAU();
|
||||
TestDefaultAU();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void stopMusic() {
|
||||
CloseDefaultAU();
|
||||
|
||||
if( musicImage != NULL ) {
|
||||
delete musicImage;
|
||||
musicImage = NULL;
|
||||
}
|
||||
|
||||
for( int y=0; y<h; y++ ) {
|
||||
|
||||
for( int x=0; x<w; x++ ) {
|
||||
|
||||
if( noteGrid[y][x] != NULL ) {
|
||||
delete noteGrid[y][x];
|
||||
}
|
||||
}
|
||||
delete [] noteGrid[y];
|
||||
}
|
||||
|
||||
delete [] noteGrid;
|
||||
|
||||
|
||||
int i;
|
||||
|
||||
for( i=0; i<numTimbres; i++ ) {
|
||||
delete musicTimbres[i];
|
||||
}
|
||||
for( i=0; i<numEnvelopes; i++ ) {
|
||||
delete musicEnvelopes[i];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/23/2008 12/23/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .7 12/23/2008 12/23/2008 USD US USD 300702040 .99
|
|
@ -0,0 +1,14 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 8 .36 12/24/2008 12/24/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/24/2008 12/24/2008 EUR BE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 12/24/2008 12/24/2008 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/24/2008 12/24/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/24/2008 12/24/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 162 .7 12/24/2008 12/24/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/24/2008 12/24/2008 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/24/2008 12/24/2008 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/24/2008 12/24/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/24/2008 12/24/2008 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 0 12/24/2008 12/24/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/24/2008 12/24/2008 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 11 .7 12/24/2008 12/24/2008 CAD CA CAD 300702040 .99
|
|
@ -0,0 +1,16 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 99 .7 12/25/2008 12/25/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/25/2008 12/25/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .48 12/25/2008 12/25/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/25/2008 12/25/2008 EUR PT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/25/2008 12/25/2008 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .48 12/25/2008 12/25/2008 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/25/2008 12/25/2008 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .48 12/25/2008 12/25/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .48 12/25/2008 12/25/2008 DKK DK EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .76 12/25/2008 12/25/2008 NZD NZ AUD 300702040 1.29
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/25/2008 12/25/2008 EUR BE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .7 12/25/2008 12/25/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 8 .76 12/25/2008 12/25/2008 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 32 .36 12/25/2008 12/25/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/25/2008 12/25/2008 EUR IT EUR 300702040 .79
|
|
@ -0,0 +1,20 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 -1 .7 12/26/2008 12/26/2008 USD US USD 300702040 -.99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .7 12/26/2008 12/26/2008 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/26/2008 12/26/2008 USD AR USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/26/2008 12/26/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/26/2008 12/26/2008 EUR AT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/26/2008 12/26/2008 DKK DK EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 1 31 .36 12/26/2008 12/26/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 25 .7 12/26/2008 12/26/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/26/2008 12/26/2008 NOK NO EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/26/2008 12/26/2008 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 254 .7 12/26/2008 12/26/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 9 .48 12/26/2008 12/26/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .76 12/26/2008 12/26/2008 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 12/26/2008 12/26/2008 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/26/2008 12/26/2008 EUR PL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/26/2008 12/26/2008 EUR BE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/26/2008 12/26/2008 EUR IT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .48 12/26/2008 12/26/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/26/2008 12/26/2008 CHF CH EUR 300702040 1.1
|
|
@ -0,0 +1,24 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 EUR GR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/27/2008 12/27/2008 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 7 .48 12/27/2008 12/27/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .48 12/27/2008 12/27/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 43 .36 12/27/2008 12/27/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 EUR BE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 CHF CH EUR 300702040 1.1
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/27/2008 12/27/2008 MXN MX USD 300702040 10
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 EUR PL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 141 .7 12/27/2008 12/27/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 14 .48 12/27/2008 12/27/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/27/2008 12/27/2008 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/27/2008 12/27/2008 USD PH USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .76 12/27/2008 12/27/2008 NZD NZ AUD 300702040 1.29
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 EUR CZ EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/27/2008 12/27/2008 EUR AT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/27/2008 12/27/2008 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .7 12/27/2008 12/27/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/27/2008 12/27/2008 DKK DK EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 1 15 .76 12/27/2008 12/27/2008 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 81 12/27/2008 12/27/2008 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/27/2008 12/27/2008 EUR FI EUR 300702040 .79
|
|
@ -0,0 +1,18 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 14 .36 12/28/2008 12/28/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 7 .7 12/28/2008 12/28/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 79 .7 12/28/2008 12/28/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/28/2008 12/28/2008 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/28/2008 12/28/2008 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/28/2008 12/28/2008 CHF CH EUR 300702040 1.1
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .76 12/28/2008 12/28/2008 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .76 12/28/2008 12/28/2008 NZD NZ AUD 300702040 1.29
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/28/2008 12/28/2008 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 12/28/2008 12/28/2008 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/28/2008 12/28/2008 EUR PL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/28/2008 12/28/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/28/2008 12/28/2008 EUR IT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/28/2008 12/28/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 8 .48 12/28/2008 12/28/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/28/2008 12/28/2008 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/28/2008 12/28/2008 EUR NL EUR 300702040 .79
|
|
@ -0,0 +1,14 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/29/2008 12/29/2008 EUR AT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .48 12/29/2008 12/29/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/29/2008 12/29/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .7 12/29/2008 12/29/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/29/2008 12/29/2008 CHF CH EUR 300702040 1.1
|
||||
APPLE US 1001 Jason Rohrer Passage 1 90 .7 12/29/2008 12/29/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 13 .36 12/29/2008 12/29/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/29/2008 12/29/2008 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 7 .48 12/29/2008 12/29/2008 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 7 .76 12/29/2008 12/29/2008 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/29/2008 12/29/2008 EUR HU EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/29/2008 12/29/2008 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/29/2008 12/29/2008 SEK SE EUR 300702040 7
|
|
@ -0,0 +1,15 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/30/2008 12/30/2008 NOK NO EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .76 12/30/2008 12/30/2008 NZD NZ AUD 300702040 1.29
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/30/2008 12/30/2008 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 12/30/2008 12/30/2008 USD IN USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/30/2008 12/30/2008 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/30/2008 12/30/2008 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/30/2008 12/30/2008 EUR IT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 12/30/2008 12/30/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 54 .7 12/30/2008 12/30/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 12 .36 12/30/2008 12/30/2008 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 12/30/2008 12/30/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .76 12/30/2008 12/30/2008 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .7 12/30/2008 12/30/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .7 12/30/2008 12/30/2008 USD SG USD 300702040 .99
|
|
@ -0,0 +1,9 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .7 12/31/2008 12/31/2008 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/31/2008 12/31/2008 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/31/2008 12/31/2008 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 12/31/2008 12/31/2008 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 32 .7 12/31/2008 12/31/2008 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/31/2008 12/31/2008 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 12/31/2008 12/31/2008 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 10 .36 12/31/2008 12/31/2008 GBP GB GBP 300702040 .59
|
|
@ -0,0 +1,11 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .76 01/01/2009 01/01/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/01/2009 01/01/2009 EUR LU EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 01/01/2009 01/01/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/01/2009 01/01/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .76 01/01/2009 01/01/2009 NZD NZ AUD 300702040 1.29
|
||||
APPLE US 1001 Jason Rohrer Passage 1 33 .7 01/01/2009 01/01/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .36 01/01/2009 01/01/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/01/2009 01/01/2009 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .48 01/01/2009 01/01/2009 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 01/01/2009 01/01/2009 EUR DE EUR 300702040 .79
|
|
@ -0,0 +1,9 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 26 .7 01/02/2009 01/02/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 01/02/2009 01/02/2009 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 01/02/2009 01/02/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 8 .36 01/02/2009 01/02/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/02/2009 01/02/2009 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 5 .7 01/02/2009 01/02/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 01/02/2009 01/02/2009 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/02/2009 01/02/2009 SEK SE EUR 300702040 7
|
|
@ -0,0 +1,11 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 29 .7 01/03/2009 01/03/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/03/2009 01/03/2009 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 15 0 01/03/2009 01/03/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 81 01/03/2009 01/03/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 7 183 0 01/03/2009 01/03/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .76 01/03/2009 01/03/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/03/2009 01/03/2009 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/03/2009 01/03/2009 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .7 01/03/2009 01/03/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .36 01/03/2009 01/03/2009 GBP GB GBP 300702040 .59
|
|
@ -0,0 +1,35 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 7 16 0 01/04/2009 01/04/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/04/2009 01/04/2009 NZD NZ AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 01/04/2009 01/04/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 7 11 0 01/04/2009 01/04/2009 EUR NL EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 USD IN USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/04/2009 01/04/2009 EUR PL EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR LU EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR ES EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .7 01/04/2009 01/04/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/04/2009 01/04/2009 CHF CH EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 4 0 01/04/2009 01/04/2009 USD SG USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 37 .7 01/04/2009 01/04/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 19 0 01/04/2009 01/04/2009 EUR DE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .48 01/04/2009 01/04/2009 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR BE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR GR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR IE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR PT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 19 0 01/04/2009 01/04/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 11 0 01/04/2009 01/04/2009 SEK SE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 NOK NO EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 10 0 01/04/2009 01/04/2009 EUR FR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 68 0 01/04/2009 01/04/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/04/2009 01/04/2009 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 EUR IT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 DKK DK EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 USD AR USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 4 .36 01/04/2009 01/04/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/04/2009 01/04/2009 EUR FI EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 MXN MX USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 214 0 01/04/2009 01/04/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/04/2009 01/04/2009 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 7 6 0 01/04/2009 01/04/2009 JPY JP JPY 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/04/2009 01/04/2009 USD PH USD 300702040 0
|
|
@ -0,0 +1,26 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 22 .7 01/05/2009 01/05/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 CHF CH EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .76 01/05/2009 01/05/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 7 106 0 01/05/2009 01/05/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/05/2009 01/05/2009 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 EUR ES EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 DKK DK EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 81 01/05/2009 01/05/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 7 22 0 01/05/2009 01/05/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 EUR IE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 EUR IT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/05/2009 01/05/2009 EUR NL EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 11 0 01/05/2009 01/05/2009 EUR DE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 6 .36 01/05/2009 01/05/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/05/2009 01/05/2009 EUR NL EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 6 0 01/05/2009 01/05/2009 SEK SE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 9 0 01/05/2009 01/05/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/05/2009 01/05/2009 NZD NZ AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/05/2009 01/05/2009 EUR FR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 EUR FI EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/05/2009 01/05/2009 DKK DK EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 EUR BE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 6 0 01/05/2009 01/05/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/05/2009 01/05/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/05/2009 01/05/2009 USD SG USD 300702040 0
|
|
@ -0,0 +1,19 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/07/2009 01/07/2009 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/07/2009 01/07/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 42 0 01/07/2009 01/07/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 4 0 01/07/2009 01/07/2009 EUR DE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/07/2009 01/07/2009 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 01/07/2009 01/07/2009 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/07/2009 01/07/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .76 01/07/2009 01/07/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 01/07/2009 01/07/2009 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/07/2009 01/07/2009 EUR IT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/07/2009 01/07/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/07/2009 01/07/2009 SEK SE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/07/2009 01/07/2009 DKK DK EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 25 .7 01/07/2009 01/07/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/07/2009 01/07/2009 EUR FR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 10 0 01/07/2009 01/07/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .36 01/07/2009 01/07/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/07/2009 01/07/2009 EUR NL EUR 300702040 .79
|
|
@ -0,0 +1,17 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 7 32 0 01/08/2009 01/08/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/08/2009 01/08/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/08/2009 01/08/2009 NZD NZ AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/08/2009 01/08/2009 JPY JP JPY 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .36 01/08/2009 01/08/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/08/2009 01/08/2009 EUR AT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/08/2009 01/08/2009 USD HK USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 4 0 01/08/2009 01/08/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/08/2009 01/08/2009 EUR ES EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/08/2009 01/08/2009 EUR BE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 81 01/08/2009 01/08/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 26 .7 01/08/2009 01/08/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/08/2009 01/08/2009 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/08/2009 01/08/2009 EUR FI EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/08/2009 01/08/2009 EUR DE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/08/2009 01/08/2009 CHF CH EUR 300702040 0
|
|
@ -0,0 +1,17 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 16 .7 01/09/2009 01/09/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 23 0 01/09/2009 01/09/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .48 01/09/2009 01/09/2009 EUR FR EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/09/2009 01/09/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 01/09/2009 01/09/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/09/2009 01/09/2009 EUR HU EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/09/2009 01/09/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .36 01/09/2009 01/09/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/09/2009 01/09/2009 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/09/2009 01/09/2009 JPY JP JPY 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/09/2009 01/09/2009 EUR IE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/09/2009 01/09/2009 EUR IT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .7 01/09/2009 01/09/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/09/2009 01/09/2009 EUR CZ EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/09/2009 01/09/2009 EUR FR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/09/2009 01/09/2009 DKK DK EUR 300702040 0
|
|
@ -0,0 +1,15 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 7 17 0 01/10/2009 01/10/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/10/2009 01/10/2009 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .36 01/10/2009 01/10/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/10/2009 01/10/2009 CHF CH EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/10/2009 01/10/2009 EUR DE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/10/2009 01/10/2009 EUR NL EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/10/2009 01/10/2009 EUR FI EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/10/2009 01/10/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 81 01/10/2009 01/10/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 16 .7 01/10/2009 01/10/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/10/2009 01/10/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .76 01/10/2009 01/10/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/10/2009 01/10/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/10/2009 01/10/2009 CAD CA CAD 300702040 0
|
|
@ -0,0 +1,14 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/11/2009 01/11/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/11/2009 01/11/2009 EUR FR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/11/2009 01/11/2009 CAD CA CAD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/11/2009 01/11/2009 USD AR USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/11/2009 01/11/2009 EUR FI EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/11/2009 01/11/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .76 01/11/2009 01/11/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 7 24 0 01/11/2009 01/11/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/11/2009 01/11/2009 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 29 .7 01/11/2009 01/11/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/11/2009 01/11/2009 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 81 01/11/2009 01/11/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/11/2009 01/11/2009 EUR FR EUR 300702040 .79
|
|
@ -0,0 +1,12 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .36 01/12/2009 01/12/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/12/2009 01/12/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/12/2009 01/12/2009 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/12/2009 01/12/2009 EUR SK EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 10 0 01/12/2009 01/12/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 20 .7 01/12/2009 01/12/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/12/2009 01/12/2009 EUR PT EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .7 01/12/2009 01/12/2009 CAD CA CAD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/12/2009 01/12/2009 EUR AT EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 3 0 01/12/2009 01/12/2009 GBP GB GBP 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/12/2009 01/12/2009 SEK SE EUR 300702040 0
|
|
@ -0,0 +1,16 @@
|
|||
Provider Provider Country Vendor Identifier UPC ISRC Artist / Show Title / Episode / Season Label/Studio/Network Product Type Identifier Units Royalty Price Begin Date End Date Customer Currency Country Code Royalty Currency Preorder Season Pass ISAN Apple Identifier Customer Price CMA Asset/Content Flavor
|
||||
APPLE US 1001 Jason Rohrer Passage 1 7 .7 01/13/2009 01/13/2009 USD US USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .36 01/13/2009 01/13/2009 GBP GB GBP 300702040 .59
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 .76 01/13/2009 01/13/2009 AUD AU AUD 300702040 1.19
|
||||
APPLE US 1001 Jason Rohrer Passage 7 12 0 01/13/2009 01/13/2009 USD US USD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/13/2009 01/13/2009 EUR FR EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/13/2009 01/13/2009 EUR IE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/13/2009 01/13/2009 AUD AU AUD 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .7 01/13/2009 01/13/2009 USD SG USD 300702040 .99
|
||||
APPLE US 1001 Jason Rohrer Passage 1 3 .48 01/13/2009 01/13/2009 EUR DE EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/13/2009 01/13/2009 SEK SE EUR 300702040 7
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/13/2009 01/13/2009 NOK NO EUR 300702040 6
|
||||
APPLE US 1001 Jason Rohrer Passage 7 1 0 01/13/2009 01/13/2009 SEK SE EUR 300702040 0
|
||||
APPLE US 1001 Jason Rohrer Passage 1 2 81 01/13/2009 01/13/2009 JPY JP JPY 300702040 115
|
||||
APPLE US 1001 Jason Rohrer Passage 1 1 .48 01/13/2009 01/13/2009 EUR ES EUR 300702040 .79
|
||||
APPLE US 1001 Jason Rohrer Passage 7 2 0 01/13/2009 01/13/2009 GBP GB GBP 300702040 0
|
BIN
gamma256/gameSource/iPhone/screenShot.png
Normal file
BIN
gamma256/gameSource/iPhone/screenShot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
9
gamma256/gameSource/iPhone/storeDescription.txt
Normal file
9
gamma256/gameSource/iPhone/storeDescription.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
The critically-acclaimed breakout-hit from art game designer Jason Rohrer. Passage is a tiny, touching, five-minute game about life.
|
||||
|
||||
"More than any game I've ever played, it illustrates how a game can be a fantastically expressive, artistic vehicle for exploring the human condition." -- Clive Thompson, Wired
|
||||
|
||||
"Passage may look primitive but it's an absolute pinnacle of videogame development." --Andy Chalk, The Escapist
|
||||
|
||||
"Portal is a fine game---nothing less than excellent... Passage is even better." --Nick Montfort, MIT
|
||||
|
||||
You can read an in-depth profile of Jason Rohrer, along with an extensive discussion of Passage, in Esquire Magazine's December 2008 "Genius" issue.
|
21
gamma256/gameSource/iPhone/testScreenDrawer.cpp
Normal file
21
gamma256/gameSource/iPhone/testScreenDrawer.cpp
Normal file
|
@ -0,0 +1,21 @@
|
|||
|
||||
|
||||
#include "drawIntoScreen.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
void drawIntoScreen( Uint32 *inScreenBuffer, int inWidth, int inHeight ) {
|
||||
// add dot at random spot
|
||||
int x = rand() % inWidth;
|
||||
int y = rand() % inHeight;
|
||||
|
||||
int i = y * inWidth + x;
|
||||
|
||||
inScreenBuffer[ i ] = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
void initScreenDrawer( Uint32 *inScreenBuffer, int inWidth, int inHeight ) {
|
||||
}
|
||||
|
||||
void freeScreenDrawer() {
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue