From 72a9dca3814ab96dc0fd58ada15ed6dba2363f86 Mon Sep 17 00:00:00 2001 From: Mark Cannon Date: Sun, 19 Sep 2010 18:45:10 +0000 Subject: [PATCH] moved around a bunch more stuff and unified the documentation git-svn-id: https://openitg.svn.sourceforge.net/svnroot/openitg/branches/dev@843 83fadc84-e282-4d84-a09a-c4228d6ae7e5 --- Characters/default/character.ini | 10 - Data/AI.ini | 55 ----- Data/GamePrefs.ini | 8 - Data/Keymaps.ini | 32 --- Data/NamesBlacklist.dat | 43 ---- Data/Patch-OpenITG.rsa | Bin 160 -> 0 bytes Data/Patch.rsa | Bin 160 -> 0 bytes Data/Static.ini | 14 -- Data/StepMania.ini | 252 ---------------------- Data/Translation.dat | 1 - Data/splash.bmp | Bin 85698 -> 0 bytes Docs/release/FAQ.txt | 122 ----------- Docs/release/Licenses.txt | 153 -------------- Docs/release/ReleaseNotes.txt | 437 --------------------------------------- Docs/release/WhoToSue.txt | 46 ----- util/USBIO.cpp | 398 ----------------------------------- util/USBIO.h | 116 ----------- util/bulk-read-test.cpp | 78 ------- util/check-itg-load.cpp | 97 --------- util/ffmpeg-configure.txt | 10 - util/joy-test.cpp | 109 ---------- util/piuio-coin-test.cpp | 46 ----- util/usb-input.cpp | 59 ------ util/usb-output.cpp | 43 ---- 24 files changed, 2129 deletions(-) delete mode 100644 Characters/default/character.ini delete mode 100644 Data/AI.ini delete mode 100644 Data/GamePrefs.ini delete mode 100644 Data/Keymaps.ini delete mode 100644 Data/NamesBlacklist.dat delete mode 100644 Data/Patch-OpenITG.rsa delete mode 100644 Data/Patch.rsa delete mode 100644 Data/Static.ini delete mode 100644 Data/StepMania.ini delete mode 100644 Data/Translation.dat delete mode 100644 Data/splash.bmp delete mode 100644 Docs/release/FAQ.txt delete mode 100644 Docs/release/Licenses.txt delete mode 100644 Docs/release/ReleaseNotes.txt delete mode 100644 Docs/release/WhoToSue.txt delete mode 100644 util/USBIO.cpp delete mode 100644 util/USBIO.h delete mode 100644 util/bulk-read-test.cpp delete mode 100644 util/check-itg-load.cpp delete mode 100644 util/ffmpeg-configure.txt delete mode 100644 util/joy-test.cpp delete mode 100644 util/piuio-coin-test.cpp delete mode 100644 util/usb-input.cpp delete mode 100644 util/usb-output.cpp diff --git a/Characters/default/character.ini b/Characters/default/character.ini deleted file mode 100644 index 7d0782e0..00000000 --- a/Characters/default/character.ini +++ /dev/null @@ -1,10 +0,0 @@ -[Character] -Level1Attack1=beat -Level1Attack2=wave -Level1Attack3=boost -Level2Attack1=drunk -Level2Attack2=dizzy -Level2Attack3=hidden -Level3Attack1=sudden -Level3Attack2=90% brake -Level3Attack3=tipsy,drunk diff --git a/Data/AI.ini b/Data/AI.ini deleted file mode 100644 index 5efb555b..00000000 --- a/Data/AI.ini +++ /dev/null @@ -1,55 +0,0 @@ -[Skill0] -MissWeight=8 -BooWeight=8 -GoodWeight=8 -GreatWeight=30 -PerfectWeight=30 -MarvelousWeight=30 - -[Skill1] -MissWeight=5 -BooWeight=5 -GoodWeight=5 -GreatWeight=25 -PerfectWeight=30 -MarvelousWeight=35 - -[Skill2] -MissWeight=3 -BooWeight=3 -GoodWeight=3 -GreatWeight=20 -PerfectWeight=30 -MarvelousWeight=40 - -[Skill3] -MissWeight=2 -BooWeight=2 -GoodWeight=2 -GreatWeight=15 -PerfectWeight=30 -MarvelousWeight=45 - -[Skill4] -MissWeight=1 -BooWeight=1 -GoodWeight=1 -GreatWeight=10 -PerfectWeight=30 -MarvelousWeight=50 - -[Skill5] -MissWeight= -BooWeight=1 -GoodWeight=1 -GreatWeight=5 -PerfectWeight=30 -MarvelousWeight=55 - -[Skill6] -MissWeight= -BooWeight= -GoodWeight= -GreatWeight=5 -PerfectWeight=30 -MarvelousWeight=70 diff --git a/Data/GamePrefs.ini b/Data/GamePrefs.ini deleted file mode 100644 index f63149d9..00000000 --- a/Data/GamePrefs.ini +++ /dev/null @@ -1,8 +0,0 @@ -[Options] -Game=dance - -[dance] -Announcer= -DefaultModifiers=1.5x, Hallway, metal, FailEndOfSong -Theme=parti colekshon - diff --git a/Data/Keymaps.ini b/Data/Keymaps.ini deleted file mode 100644 index f5c6de62..00000000 --- a/Data/Keymaps.ini +++ /dev/null @@ -1,32 +0,0 @@ -[dance] -Controller1_Back=Joy1_10,,Key_escape -Controller1_Down=Joy1_2,,Key_down -Controller1_Insert Coin=,,Key_F1 -Controller1_Left=Joy1_1,,Key_left -Controller1_MenuDown=,,Key_end -Controller1_MenuLeft=,,Key_delete -Controller1_MenuRight=,,Key_pgdn -Controller1_MenuUp=,,Key_home -Controller1_Operator=,,Key_scroll lock -Controller1_Right=Joy1_4,,Key_right -Controller1_Select=Joy1_8,,Key_right shift -Controller1_Start=Joy1_9,,Key_enter -Controller1_Up=Joy1_3,,Key_up -Controller1_UpLeft= -Controller1_UpRight= -Controller2_Back=,,Key_num lock -Controller2_Down=,,Key_KP 2 -Controller2_Insert Coin= -Controller2_Left=,,Key_KP 4 -Controller2_MenuDown=,,Key_KP + -Controller2_MenuLeft=,,Key_KP / -Controller2_MenuRight=,,Key_KP * -Controller2_MenuUp=,,Key_KP - -Controller2_Operator= -Controller2_Right=,,Key_KP 6 -Controller2_Select=,,Key_KP 0 -Controller2_Start=,,Key_KP enter -Controller2_Up=,,Key_KP 8 -Controller2_UpLeft=,,Key_KP 7 -Controller2_UpRight=,,Key_KP 9 - diff --git a/Data/NamesBlacklist.dat b/Data/NamesBlacklist.dat deleted file mode 100644 index 135fa5b5..00000000 --- a/Data/NamesBlacklist.dat +++ /dev/null @@ -1,43 +0,0 @@ ---courtesy of http://pub137.ezboard.com/flunayoshifrm57.showMessage?topicID=6.topic-- -aaaa -ass -bitch -bong -boob -butt -cock -crap -cum -cunt -kunt -damn -dick -fag -fart -fuc -fuck -fuk -god -hell -jizz -orgy -penis -piss -poo -pussy -satan -shit -slut -tit -turd -twat -whore -fux -screw -azz -puss -pus -poop -tity -sex - diff --git a/Data/Patch-OpenITG.rsa b/Data/Patch-OpenITG.rsa deleted file mode 100644 index a78c23cb0b98ca9595d3fb0c79cd7b77de4d3a84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK$wft@f71_>&LNQU&LNQUl&mn4uBTUw0c}6;# zzVD+W4xHinLPO5BXM9E!IGZ|`&*xT?i-hQwa8mQmHZ=KVZ`oakjZ*?MV3^_J#Q>Bp OTbN3Pekh*70s#@oUq+Mw diff --git a/Data/Static.ini b/Data/Static.ini deleted file mode 100644 index 3a7b2fc6..00000000 --- a/Data/Static.ini +++ /dev/null @@ -1,14 +0,0 @@ -# Place any options (or uncomment any example below) in this file -# that you wish to remain constant regardless of any changed settings - -[Options] -#EasterEggs=1 -#ThreadedMovieDecode=0 -#VideoRenderers=d3d -Windowed=1 -InputDrivers=directinput -DisplayWidth=1024 -DisplayHeight=768 -LogToDisk=1 -LogCheckpoints=1 -FastLoad=1 \ No newline at end of file diff --git a/Data/StepMania.ini b/Data/StepMania.ini deleted file mode 100644 index bf6c3ec4..00000000 --- a/Data/StepMania.ini +++ /dev/null @@ -1,252 +0,0 @@ -[Options] -AdditionalFolders= -AdditionalSongFolders= -AllowExtraPlayerOptions=1 -AllowExtraStage=0 -AllowMultipleHighScoreWithSameName=0 -AllowOldKeyboardInput=1 -AllowUnacceleratedRenderer=0 -AnisotropicFiltering=1 -ArcadeOptionsNavigation=1 -AttractSoundFrequency=1 -AutoMapOnJoyChange=1 -AutoPlay=0 -AutogenGroupCourses=0 -AutogenSteps=0 -BGBrightness=0.500000 -BackgroundMode=2 -BannerCache=1 -BlinkGameplayButtonLightsOnNote=1 -BoostAppPriority=2 -BreakComboToGetItem=0 -CelShadeModels=0 -CenterImageAddHeight=0 -CenterImageAddWidth=0 -CenterImageTranslateX=0 -CenterImageTranslateY=0 -CoinMode=0 -CoinsPerCredit=1 -ComboContinuesBetweenSongs=1 -ConstantUpdateDeltaSeconds=0.000000 -CourseEdits=1 -CourseSortOrder=1 -CoursesToShowRanking= -CustomMaxSeconds=360 -CustomMaxSizeMB=0 -CustomMaxStepSizeKB=30 -CustomSongPreviews=0 -CustomsLoadMax=90 -CustomsLoadTimeout=1.000000 -DancePointsForOni=0 -DebugInputDrivers=0 -DebugLights=0 -DefaultLocalProfileIDP1= -DefaultLocalProfileIDP2= -DefaultModifiers=1.5x, Hallway, metal, FailEndOfSong -DelayedBack=0 -DelayedCreditsReconcile=1 -DelayedModelDelete=1 -DelayedScreenLoad=0 -DelayedTextureDelete=0 -DisableScreenSaver=1 -DisplayAspectRatio=1.333333 -DisplayColorDepth=32 -DisplayHeight=768 -DisplayWidth=1024 -Disqualification=1 -EasterEggs=0 -EasterEggs2=1 -EditorShowBGChangesPlay=0 -EndlessBreakEnabled=1 -EndlessBreakLength=5 -EndlessNumStagesUntilBreak=5 -EventMode=0 -FailOffForFirstStageEasy=1 -FailOffInBeginner=1 -FastLoad=0 -ForceLogFlush=0 -ForceMipMaps=0 -GetRankingName=1 -GiveUpTime=0.500000 -GlobalOffsetSeconds=-0.057906 -GradeWeightBoo=-6 -GradeWeightGood=0 -GradeWeightGreat=2 -GradeWeightHitMine=-6 -GradeWeightMarvelous=5 -GradeWeightMiss=-12 -GradeWeightNG=0 -GradeWeightOK=5 -GradeWeightPerfect=4 -HiddenSongs=1 -HideDefaultNoteSkin=1 -IgnoredMessageWindows=SPRITE_INVALID_FRAME,LUA_ERROR,FRAME_DIMENSIONS_WARNING,BROKEN_FILE_REFERENCE,COMMAND_DEFINED_TWICE -InputDebounceTime=0.050000 -InputDrivers=directinput -Interlaced=0 -JudgeWindowAdd=0.000000 -JudgeWindowScale=1.000000 -JudgeWindowSecondsAttack=0.130000 -JudgeWindowSecondsBoo=0.180000 -JudgeWindowSecondsGood=0.135000 -JudgeWindowSecondsGreat=0.102000 -JudgeWindowSecondsMarvelous=0.021500 -JudgeWindowSecondsMine=0.070000 -JudgeWindowSecondsOK=0.320000 -JudgeWindowSecondsPerfect=0.043000 -JudgeWindowSecondsRoll=0.350000 -Language= -LastConnectedServer= -LastSeenInputDevices=Keyboard,MonkeyKeyboard -LastSeenMemory=2047 -LastSeenVideoDriver=NVIDIA GeForce 7800 GTX -LifeDeltaPercentChangeBoo=-0.050000 -LifeDeltaPercentChangeGood=0.000000 -LifeDeltaPercentChangeGreat=0.004000 -LifeDeltaPercentChangeHitMine=-0.050000 -LifeDeltaPercentChangeMarvelous=0.008000 -LifeDeltaPercentChangeMiss=-0.100000 -LifeDeltaPercentChangeNG=-0.080000 -LifeDeltaPercentChangeOK=0.008000 -LifeDeltaPercentChangePerfect=0.008000 -LifeDifficultyScale=1.000000 -LightsAheadSeconds=0.050000 -LightsChartsInMenus=0 -LightsDriver=ext -LightsFalloffSeconds=0.100000 -LightsStepsDifficulty=hard,medium -LockCourseDifficulties=0 -LogCheckpoints=1 -LogFPS=1 -LogSkips=0 -LogToDisk=1 -LongVerSongSeconds=150.000000 -MachineName= -MarathonVerSongSeconds=300.000000 -MarvelousTiming=2 -MaxHighScoresPerListForMachine=10 -MaxHighScoresPerListForPlayer=5 -MaxRecentScoresForMachine=100 -MaxRecentScoresForPlayer=20 -MaxRegenComboAfterFail=10 -MaxRegenComboAfterMiss=10 -MaxTextureResolution=2048 -MemoryCardOsMountPointP1= -MemoryCardOsMountPointP2= -MemoryCardProfileImportSubdirs=In The Groove -MemoryCardProfileSubdir=In The Groove 2 -MemoryCardUsbBusP1=-1 -MemoryCardUsbBusP2=-1 -MemoryCardUsbLevelP1=-1 -MemoryCardUsbLevelP2=-1 -MemoryCardUsbPortP1=-1 -MemoryCardUsbPortP2=-1 -MemoryCards=1 -MenuTimer=0 -MercifulBeginner=1 -MercifulDrain=0 -MercifulSuperMeter=1.000000 -MinPercentageForMachineCourseHighScore=0.000100 -MinPercentageForMachineSongHighScore=0.500000 -Minimum1FullSongInCourses=1 -MonkeyInput=0 -MoveRandomToEnd=0 -MovieColorDepth=32 -MovieDrivers= -MusicWheelSwitchSpeed=10 -MusicWheelUsesSections=1 -NetworkStartOffset=-3.000000 -NumBackgrounds=8 -OnlyDedicatedMenuButtons=0 -PAL=0 -PadStickSeconds=0.050000 -PalettedBannerCache=1 -PercentScoreWeightBoo=-6 -PercentScoreWeightGood=0 -PercentScoreWeightGreat=2 -PercentScoreWeightHitMine=-6 -PercentScoreWeightMarvelous=5 -PercentScoreWeightMiss=-12 -PercentScoreWeightNG=0 -PercentScoreWeightOK=5 -PercentScoreWeightPerfect=4 -PercentageScoring=1 -PickExtraStage=0 -PreferredSortUsesGroups=0 -Premium=0 -ProductID=4 -ProgressiveLifebar=0 -ProgressiveNonstopLifebar=0 -ProgressiveStageLifebar=0 -RefreshRate=0 -RegenComboAfterFail=10 -RegenComboAfterMiss=5 -ScoringType=0 -ScreenTestMode=0 -ServerWaitSeconds=2.000000 -ShowBanners=1 -ShowBeginnerHelper=0 -ShowCaution=1 -ShowDancingCharacters=0 -ShowDanger=1 -ShowInstructions=1 -ShowLoadingWindow=1 -ShowLogOutput=0 -ShowLyrics=1 -ShowNativeLanguage=1 -ShowSelectGroup=1 -ShowSongOptions=0 -ShowStats=0 -ShowThemeErrors=0 -SignProfileData=1 -SmoothLines=1 -SoloSingle=0 -SongEdits=1 -SongsPerPlay=3 -SoundDevice= -SoundDrivers= -SoundResampleQuality=1 -SoundVolume=0.700000 -SoundVolumeAttract=0.350000 -SoundWriteAhead=2048 -SubSortByNumSteps=1 -SuperMeterPercentChangeBoo=0.000000 -SuperMeterPercentChangeGood=0.000000 -SuperMeterPercentChangeGreat=0.020000 -SuperMeterPercentChangeHitMine=-0.400000 -SuperMeterPercentChangeMarvelous=0.050000 -SuperMeterPercentChangeMiss=-0.200000 -SuperMeterPercentChangeNG=-0.200000 -SuperMeterPercentChangeOK=0.040000 -SuperMeterPercentChangePerfect=0.040000 -TextureColorDepth=32 -TexturePreload=0 -ThreadedInput=1 -ThreadedMovieDecode=1 -TimeMeterSecondsChangeBoo=-2.000000 -TimeMeterSecondsChangeGood=-1.000000 -TimeMeterSecondsChangeGreat=-0.500000 -TimeMeterSecondsChangeHitMine=-2.000000 -TimeMeterSecondsChangeMarvelous=0.200000 -TimeMeterSecondsChangeMiss=-4.000000 -TimeMeterSecondsChangeNG=-4.000000 -TimeMeterSecondsChangeOK=0.000000 -TimeMeterSecondsChangePerfect=0.000000 -Timestamping=0 -TrilinearFiltering=1 -TugMeterPercentChangeBoo=-0.040000 -TugMeterPercentChangeGood=0.000000 -TugMeterPercentChangeGreat=0.004000 -TugMeterPercentChangeHitMine=-0.080000 -TugMeterPercentChangeMarvelous=0.010000 -TugMeterPercentChangeMiss=-0.080000 -TugMeterPercentChangeNG=-0.080000 -TugMeterPercentChangeOK=0.008000 -TugMeterPercentChangePerfect=0.008000 -TwoPlayerRecovery=0 -UseUnlockSystem=1 -VideoRenderers=opengl,d3d -VisualDelaySeconds=0.000000 -Vsync=0 -Windowed=1 - diff --git a/Data/Translation.dat b/Data/Translation.dat deleted file mode 100644 index 5f282702..00000000 --- a/Data/Translation.dat +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Data/splash.bmp b/Data/splash.bmp deleted file mode 100644 index 67ba9c85eefcbd46230e803e0d14e76b9f825466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85698 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 diff --git a/Docs/release/FAQ.txt b/Docs/release/FAQ.txt deleted file mode 100644 index 2ead43df..00000000 --- a/Docs/release/FAQ.txt +++ /dev/null @@ -1,122 +0,0 @@ -Contents (use Ctrl+F to jump to the proper question) ----------------------------------------------------- - -A. Home version questions - A-1: My songs are all offsync, so how do I adjust the global offset? - A-2: I don't have ITG/ITG2 songs, but they're still in the songwheel. - A-3: How do I assign specific USB ports to each player for memory cards? - A-4: I'm getting a crash: "Parse error in ScreenOptionsMenu::Line3" - A-5: The game runs fine, but slows horribly/lags/dies on gameplay movies. - A-6: (Linux) Game refuses to start, with a "Permission Denied" error. - -B. Arcade version questions - -C. General questions - C-1: What's the difference between regular and SSE2 builds? - C-2: Why don't you guys have Mac/Xbox versions? - - -Questions section ----------------------------------------------------- - -A-1: My songs are all offsync, so how do I adjust the global offset? - - To adjust the global offset, play a song you know is onsync (like - Tribal Style) and press F6 twice until it says "Autosync Machine" - (NOT "Autosync Song"!). Play the song - going only to the music - - until it feels on-sync. End the song and save the sync changes. - - - -A-2: I don't have ITG/ITG2 songs, but they're still in the songwheel. - - This is due to the sync fixes. If you don't have ITG/ITG2, for some - reason, then go to /Data/patch/ and remove or rename patch.zip, - then move "patch-no-songs.zip" to "patch.zip". The game will only - read Data/patch/patch.zip, so the desired patch must have that name. - - Please note that "patch-no-songs-dec.zip" will not work - it is a - decrypted copy with the updated data (minus song fixes, due to space) - so people can see the changes we've made. - - - -A-3: How do I assign specific USB ports to each player for memory cards? - - You need to set the following settings in the Static.ini: - MemoryCardUsbPortP1 and MemoryCardUsbPortP2 - MemoryCardOsMountPointP1 and MemoryCardOsMountPointP2 - - In Linux, you just need to set the OS mount point folders to where the - memory cards are mounted by /etc/fstab (or your portable device daemon). - You can get the correct Port settings with System Diagnostics. Place a - device into the port you want to set, and a line will come up. The first - part of the line has two numbers, "x-y": 'y' is the port number to set. - - In Windows, you will need USBDLM in order to assign a drive letter per - port, to use as the MountPoint. I'm not sure how to get the port numbers - besides trial and error. Sorry. We'll update this later with better info. - - - -A-4: I'm getting a crash: "Parse error in ScreenOptionsMenu::Line3" - - You're using the 'home' theme without a patch.zip. The theme is built - off the OpenITG-patched 'default' theme, and will not function properly - without it. If you didn't replace the patch.zip, then make sure it is - in Data/patch/ and has the exact name "patch.zip". If you did, then you - need to either incorporate the changes in patch-no-songs-dec.zip, or you - won't be able to use the 'home' theme. - - - -A-5: The game runs fine, but slows horribly/lags/dies on gameplay movies. - - Try setting "ThreadedMovieDecode=0" in the StepMania.ini. Normally, - the game does its movie decoding in a separate thread for each video, - to increase speed, but also takes a lot of processor power; if you - enable that option, it will decode movies during the game loop, which - will decrease quality somewhat, but cause quite a speed-up otherwise. - If you're still having trouble, drop by the BoXoRRoXoRs forums and - let us know what's going on. - - - -A-6: (Linux) Game refuses to start with a "Permission Denied" error. - - The binary, for some reason, wasn't set executable. That's how we - ZIP it, but it seems to be finicky. To solve this, either run this - command in the console: - chmod +x openitg-beta-2 (or whatever the name is) - - or right-click the file, enter Properties or Permissions (etc.) and - make sure that it's set Executable in there. - -C-1: What's the difference between regular and SSE2 builds? - - Regular builds will work on all regular processors, but SSE2 builds - will only work on Pentium 4s onward, or other processors that have - Streaming SIMD Extensions 2 (anything implementing x86-64, Intel or - AMD, will support it, but AMD 32-bit processors will not). - - SSE is an extended set of processors to optimize vector instructions - and calculation. If you have a supported processor, using the SSE2 - builds will produce a noticeable speed increase with graphics - rendering and other vector operations (RageColors, RageVectors, etc. - will all perform faster). If you don't, it'll crash with an "Illegal - instruction" error. C'est la vie. - -c-2: Why don't you guys have Mac/Xbox versions? - - The Xbox one is being worked on, actually. LightningXCE lent an Xbox - for development and testing, and we expect a release for beta 3. - - We want to make a Mac version - yes, really - but we don't have one - because none of the devs have a Mac and we don't know anyone who can - (and will ) compile for it. If you know someone (or you have a Mac - to spare), please let us know! You can reach us at: - http://www.boxorroxors.net/forum/ - - Registration is required, but free and very well worth it. Trust me, - it's a great place for technical help, discussions, etc. and we do - most of our user feedback polling there. diff --git a/Docs/release/Licenses.txt b/Docs/release/Licenses.txt deleted file mode 100644 index 7d3a088a..00000000 --- a/Docs/release/Licenses.txt +++ /dev/null @@ -1,153 +0,0 @@ -The following license applies to most of the OpenITG codebase: - -****************************************************************************** - -StepMania is (c) Chris Danford, the StepMania development team, et al. -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, provided that the above -copyright notice(s) and this permission notice appear in all copies of -the Software and that both the above copyright notice(s) and this -permission notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS -INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT -OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -****************************************************************************** - -RageSurface_Load_GIF contains code from Xpaint under the following license: - - Copyright 1990, 1991, 1993 David Koblas. - Copyright 1996 Torsten Martinsen. - Permission to use, copy, modify, and distribute this software - and its documentation for any purpose and without fee is hereby - granted, provided that the above copyright notice appear in all - copies and that both that copyright notice and this permission - notice appear in supporting documentation. This software is - provided "as is" without express or implied warranty. - -****************************************************************************** - -Code in src/crypto/ is under the following permissive license: - -PuTTY is copyright 1997-2001 Simon Tatham. - -Portions copyright Robert de Bath, Joris van Rantwijk, Delian -Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, -Justin Bradford, and CORE SDI S.A. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation files -(the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -****************************************************************************** - -Code in RageSurfaceUtilsPalettize.cpp is under the following permissive -license: - -Copyright (C) 1989, 1991 by Jef Poskanzer. -Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by - Stefan Schneider. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. This software is provided "as is" without express or -implied warranty. - -****************************************************************************** - -PCRE is distributed under the 3-clause BSD license: - -Written by: Philip Hazel - -Copyright (c) 1997-2003 University of Cambridge -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of the University of Cambridge nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -****************************************************************************** - - AES cryptography code is licensed under the following: - - Copyright (c) 1998-2007, Brian Gladman, Worcester, UK. All rights reserved. - - LICENSE TERMS - - The free distribution and use of this software is allowed (with or without - changes) provided that: - - 1. source code distributions include the above copyright notice, this - list of conditions and the following disclaimer; - - 2. binary distributions include the above copyright notice, this list - of conditions and the following disclaimer in their documentation; - - 3. the name of the copyright holder is not used to endorse products - built using this software without specific written permission. - - DISCLAIMER - - This software is provided 'as is' with no explicit or implied warranties - in respect of its properties, including, but not limited to, correctness - and/or fitness for purpose. - -****************************************************************************** - -The MAD library (included with most Windows binary distributions), and -interface code in RageSoundReader_MP3, is under the GPL, available in -Copying.MAD. Support for this library can be disabled at compile-time. - -****************************************************************************** diff --git a/Docs/release/ReleaseNotes.txt b/Docs/release/ReleaseNotes.txt deleted file mode 100644 index 4cb582f1..00000000 --- a/Docs/release/ReleaseNotes.txt +++ /dev/null @@ -1,437 +0,0 @@ -OpenITG, beta 2 (August 9th, 2009) ----------------------------------- - -If you're already using beta 1.1, some of the changes will be familiar. For -beta 1 users, this is all new. Regardless, there's a lot of new stuff for all. - -This build includes multiple tentative USB fixes for the arcade, and we're -hoping it should prove to be more stable. My relatively short-term testing -held up perfectly. The slow loading for USB songs is being looked into as -well, and we expect a fix soon. There may be a minor incremental patch if so. -In the meantime, thanks for sticking around; it means a lot to us that you -guys stuck with it, even though it presented some major problems. Sorry -about the trouble this has caused. - -For home users, this build features a lot of core engine optimizations that -should greatly improve the general speed and stability of the system. We've -overhauled RageFileManager and optimized the hell out of it, resulting in a -lot of speed-ups across the board. - -A lot of minor tweaks have been added on top of the engine improvements and -bug fixes: PercentageDisplay can now go past 100% (for Getting Started), the -BPM meter on gameplay now scales to music rate, cancelled USB song loading -no longer causes jittering, song length for Long/Marathon is determined off -of steps length only, and we've added a ton of new Lua bindings (including -SetUpdateCommand for ActorFrame). Try them out: they're pretty awesome. - -As for new stuff on the theme side, we've added preferences to tweak the Give -Up Time on gameplay as well as theme toggles for songwheel timer length, type -of credit (coin/token/card), and switching between logos. Just go into the -OpenITG Options menu if you don't think we've been hard at work. :) - -As a final note, pat's added a probing driver that allows this build to work -with any ITG setup, encrypted or decrypted. This only applies to the arcade -version and /itgdata/, but that should make it work for everyone. Thanks for -the support, see you next release! - --New preferences: - "GiveUpTime" - amount of time that Start must be held to give up songs --New metrics: - ScreenTestInput - X, Y, On, and Off commands for text ("Inputs", "Devices") --Fixed Linux bugs: - USB devices that only reported as "sda" would stay in checking forever - Misdetection of partitions on USB devices caused some mounts to fail --Fixed cross-platform bugs: - BPM display on gameplay doesn't scale with Music Rate setting - Several stray PauseMountingThread() calls causing cards to respond slowly - Perspective setting is not properly saved on USB profiles - Custom song loading cancellation causes delayed input events - ScreenArcadeStart times out, even with missing I/O handler --New screen: - "ScreenUserPacks" - formerly ScreenAddSongs, manages USB-transferred game data. --Code Structure Additions: - UserPackManager - singleton for managing users' add-on packs for the machine --Miscellaneous changes: - Backported StepMania 4's RageFileManager, for better load handling - Backported Win32 renderer identification for display stats - Changed to StepMania 4 method of scaling screenshots - De-clamped PercentageDisplay (Getting Started displays properly now) - Long/Marathon calculated with steps length instead of music length - Moved "ScreenAddSongs" to "ScreenUserPacks", heavily updated interface - Improved Colorized Graph logic - Split bookkeeping into separate pages for machine v. service credits --New menu structures: - LinkedOptionsMenu - set of intertwined menus, example metrics in home folder --New file driver: - RageFileDriverProbe - heuristic-based file driver that allows en/decrypted ZIPs --New LUA bindings: - HighScore: "GetName", "GetScore", "GetPercentDP", "GetDate", - "GetSurvivalSeconds", "IsFillInMarker" - HighScoreList: "GetHighScores" --New LUA member bindings: - ActorFrame: "SetUpdateCommand" (called on each ::Update, with fDeltaTime) - Actor: "addcommand", "GetName" - Game: "GetName" - PlayerStageStats: too much stuff to list here - Song: "StepsLengthSeconds" --New LUA singleton bindings: - GameState: "GetCurrentGame" - -OpenITG, beta 1 (May 15th, 2009) --------------------------------- --Obligatory code cleanup --Windows additions: - OpenITG icon (thanks, Lightning) - Updated version information --New Preferences: - "DebugInputDrivers" - additional debugging info for various I/O drivers - "EasterEggs2" - OpenITG-specific easter eggs (hint: play from a DDR group folder) --New LUA singleton bindings: - GameState: "GetCurBPS", "DelayedGameCommand" (required for "theme" GameCommands) - NoteSkin: "GetNoteSkinNames" - ThemeManager: "GetCurLanguage", "GetCurThemeName", "GetThemeNames" --New LUA bindings: - Course: "GetCourseDir" - PIUIO: "MK6_GetSensors" - RadarValues: "GetValue" - RageUtil: "SecondsToMMSS", "SecondsToHHMMSS", "SecondsToMSSMsMs" - Song: "IsLong", "IsMarathon", "IsCustomSong", "GetGroupName", and "MusicLengthSeconds" - Steps, Trail: "GetRadarValues" --New LUA globals: - "RADAR_CATEGORY_TAPS", "RADAR_CATEGORY_HOLDS", etc. for RadarValues - "OPENITG_VERSION" - returns a 3-digit token for version information - (xyy - x is build type, yy is version; also in Win32 "Properties") --New Screens: - "ScreenAddSongs" - allows addition of game data through operator menu (temp. disabled) - "ScreenPlayLights" - plays music, can run actors for cabinet/game lights --New InputHandler: - "MK3" - controls the Andamiro MK3 and MK5 ISA boards, for the heck of it --New LightsDriver: - "G15" - controls LCD on the G15 gaming keyboard, also for the heck of it --New GameCommands: - "ReloadTheme" - forces a complete reload of metrics and graphics --New metrics: - "MissComboCommand" metric for Combo display --New features: - Added "NoteWillCrossIn1Beat", "NoteWillCrossIn2Beats", etc. for beginner helper - ScreenTestInput and ScreenTestLights broadcast Messages to actors - Re-backported input debounce, except it works this time. :) - CodeDetector ties for opening the OptionsList on ScreenSelectMusic - Record service credits separately in MachineProfile and Coins.xml - ScreenTestInput now triggers lights when arrows are pressed - "SongLength" sort on the song wheel - More intelligent lights autogeneration for single charts - Separate bookkeeper counter for service credits in Bookkeeping - (divided in the menu by Regular Credits / Service Credits) - LightsMapper - set which bits are triggered on LIGHTSMAN events - Added LightsMapping structs to ITGIO, PIUIO, and PacDrive --New modifiers: - "Twirl" - rotates arrows (and holds!) around the Y axis - "Roll" - rotates arrows around the X axis --Compilation updates: - Added date/version text to ProductInfo and DiagnosticsUtil - Rewrote "archutils/Win32/verinc.c" to generate a new verinfo.h --Fixed Windows bugs: - Crashlogs saving in Program (were supposed to save in Data) - "View crash dump" working incorrectly on the crash dialog - Inaccurate crashlog count in System Diagnostics - RageDisplay_D3D: fixed texture material issues, texture translation issues, and noteskin rendering --Fixed Linux bugs: - Tentative fix for memory card mounting issues (thanks, Matt1360) - 64-bit crash on RageCryptInterface_ITG2 (thanks, dawnwolf) - Screensaver disable code didn't work for X11 --Fixed minor cross-platform bugs: - Custom song data not deallocated after the end of a round - Impressively inefficient method of re-creating the songs vector - "Disqualification" display showed for unjoined players on music rate - M-mod code didn't adjust to songs or courses with hidden BPMs - Slowdown on ScreenArcadeDiagnostics due to heavy device polling - No-timeout warning flood on custom song loading - Sensor reading problems with PIUIO on Test Input - Round text on ScreenSelectMusic not updating for non-song entries --Fixed major cross-platform bugs: - Infinite loop and crash on changing coin modes on ScreenTitleJoin - Crash when changing from Intense to Normal-only courses or vice versa - Patched OGG songs circumvented Long/Marathon song limits - Crash on machine Edit-only songs (not a bug, but...) - M-mods crashed on marathons and malfunctioned on gimmicks - Tentative fix for strange crashes on "theme" GameCommand --Misc. changes: - "Tiny" can be used in place of "Mini" (4.0 compatibility) - M-mods disqualify on songs with hidden BPMs - (because it makes it easier to select a 'safe' modifier) - Load USB profile songs into memory, instead of onto the disk - Complete crypto rewrite - should be much more flexible - LightsDriver_External always loaded, to prevent arcade I/O problems - ScreenOptionsMenu switched to "Menu" lights mode - Always grab a serial number from the dongle, and autogen on fallback - -OpenITG, prebeta (November 25th, 2008) --------------------------------------- --Lots more code cleanup --Compilation updates: - Added SVN revision script for Linux make (thanks, SM devs) - Added patch to compile on GCC 4.3 (thanks dawnwolf) - Added patch to compile against LUA 5.1 (thanks to cyt0plas, Spectere) --New features: - Preliminary "M-mod" support (same format as C-mods, e.g. "M600") - Added custom courses ( /ProfileFolder/Courses/ ) --Misc. changes: - Added coin counter functionality to LIGHTSMAN - Added RageCryptInterface for easier crypto implementations - Added code to enforce only one Iow or PIUIO handler - Fixed 'lights briefly flicker off on song start' annoyance --PIUIO changes: - Tentative fix for sensor-read problems - Added coin counter functionality --Fixed bugs: - Fixed overwrite of InputType with "Home" - Failed 'pTrail' assertion in Marathon mode - Accidental PIUIO coin counter activation - Linux: couldn't open GTK loading window - ITGIO - P1 Left and Right reversed - patch.zip mounted multiple times on start - Possible to load redundant arcade I/O drivers and cause problems - -OpenITG, alpha 8 (August 29th, 2008) ------------------------------------- --Lots of code cleanup --New LightsDriver: - PacDrive ("pacdrive") - run lights using an Ultimarc PacDrive --Misc. changes: - Allow multiple lights drivers (use at your own risk) - Disqualification for music rate under 1.0x --ITGIO changes: - Softcoded ITGIO input and added default mappings - Added mappings for all cabinet lighting - Fixed "no output on ITGIO" issue (read: full I/O support) --PIUIO changes: - Support for r16 kernel hack handling - Lots of misc. structural changes --New modifier: - HoldsToRolls, a reversed NoRolls (make Bend Your Mind a living hell!) --Fixed mistakes: - SCREENMAN doesn't zero update after custom song loading --Fixed bugs: - OptionsList crashes on load - Attract volume immediately resets after round - Attract volume isn't properly reset when entering operator menu - Crash on non-song wheel items after highlighted custom songs --Removals: - ThreadedLights and associated code (too many bugs) - -OpenITG, alpha 7 (July 11th, 2008) ----------------------------------- --Preliminary, hacky lights-cabinet support in theme SM files --Barebones work on tournament mode (it's still a while away) --Input changes: - Newer, more ITG-like input debouncing (half-working...) - "Select" or "MenuLeft+MenuRight" cancels custom song loading - Linux joystick driver is now threaded (and supports DebugUSBInput) - X11 input code backported from 4.0 --New LUA functions: - IsUsingMemoryCard(PlayerNumber) - self-explanatory - Debug() - output debugging lines regardless of log settings --New LUA globals: - "OPENITG" (boolean) - can be used for compatibility with ITG2 AC scripts --New (major) code functions: - StepsUtil::RemoveStepsOutsideMeterRange() - StepsUtil::RemoveStepsOutsideDifficultyRange() - Song::HasStepsWithinMeterRange() --New messages: - "CardReadyP1", "CardReadyP2" - played when a card is verified ready --New preferences: - "DebugInputDrivers" - replaces DebugUSBInput, provides stats on I/O speed - "SoundVolumeAttract" - volume during attract sequences - "ThreadedLights" - run the lights outside the regular game loop, more accurate - "UseUnstablePIUIODriver" - set true to use the experimental I/O driver --New config options: - "SoundVolumeAttract" - see above --New metrics: - "CompareScores" (ScreenGameplay) - manually set whether to compare or not - "OptionsList" (ScreenSelectMusic) - add a side panel to change options - instead of the old options menu --New Screens: - "ScreenExitCommand" - Functions as ScreenExit, but with the ability to launch - an executable file before exiting. Must have 'ExecPath' and 'ExecParams' in the - metrics entry - "ScreenTextEntryArcade" - a more arcade-friendly text entry screen (WIP) --Fixed bugs: - BGCHANGES2 charts don't play properly - Timer is stuck at 0 if timer runs out on "Chance" - "nomines" and "nostretch" transforms have no effect in the editor menu - (OpenGL) Arrow shader fails on full-screen, causing scrolling brackets - Actor sounds ignore attract sound settings - After switching themes, OpenITG crashes on the songwheel - Theme switching sometimes causes failed asserts - Phantom input when canceling custom song loads - ScreenArcadeStart loops endlessly until manual exit - Without song previews, custom song lights don't properly load --Fixed mistakes: - Removed some personalized testing code - Removed some annoying opendir() error messages --Code structure changes: - "MiscITG" moved to "DiagnosticsUtil" - -OpenITG, alpha 6 (May 30th, 2008) ---------------------------------- --Code structure changes: - Reverted InputFilter - too little gain for too many problems --New metrics in ScreenGameplay: - (Note: must be in Event Mode, Versus, and playing the same chart) - "ScorePxAheadCommand" - played when player's score is higher - "ScorePxBehindCommand" - played when player's score is lower --New preferences: - "InputDebounceTime" - self-explanatory --New game commands: - "clearcredits" - clears credits on the machine (useful for testing) - "theme" - sets the theme, by name, when used (useful for theme switchers) --Linux changes: - Tentative fix for memory card port/bus detection on usb_storage --Win32 changes: - Added code to reboot on crashes for arcade builds (#define ITG_ARCADE) --Misc. changes: - Enabled pad lighting on ScreenDemonstration - Coins added by GameCommands are not counted toward bookkeeping totals - Round text on ScreenSelectMusic updates for long/marathon songs - Moved OpenITG-specific profile options to Extra.ini (caused ITG2 crashes) - Disabled autogeneration of new Public/Private RSA keys on load failure --Fixed bugs: - Some custom songs end immediately after start - Repeating menu input error on ScreenSelectMusic - Editor doesn't draw properly, causes failed asserts - Song wheel doesn't "budge" when attempting to move after Chance - "Revert from Disk" in editor causes duplicate charts, crashes - Crash on bookkeeping when switching to an undefined screen - In AutoplayCPU, rolls cause early judgments of arrows and mines - -OpenITG, alpha 5 (April 30th, 2008) ------------------------------------ --New screens: - ScreenArcadeStart - implemented, functional, does stuff --Code structure changes: - Reboot-on-crash is disabled in non-arcade builds - Gameplay lights now autogen from dance-single only - InputHandler_Linux_Iow changed to InputHandler_Iow - InputHandler_Linux_PIUIO changed to InputHandler_PIUIO - InputFilter backported from 4.0, modified a bit --PIUIO changes: - Added timer for testing input speed - Partially added coin counter code (not functional yet) - Changed input from 64-bit datatype to 32-bit datatype --Fixed input bugs: - Input always auto-remaps on startup - Input sometimes locks up after song loading fails - Player 2 I/O board input is mapped to Player 1's side - PIUIO only reports arrow presses from right sensor --Fixed general bugs: - Edits for Single show on all difficulties - Some modifiers don't animate in the editor - Song wheel can be moved on Chance - Voltage doesn't calculate correctly (lol, DDR) --Fixed mistakes: - "ITGIO" and "PIUIO" were reversed in RageInputDevice --Mapping changes: - Added working Iow input mappings (output is still borked) - Added working service/test and coin mappings for PIUIO --New code functions: - LOG->Debug() - always displays to stdout, without logging - GetIP() - currently Linux-only, returns IP and subnet --New preferences: - "CustomSongPreviews" - play audio previews of custom songs - "InputDebounceTime" - self-explanatory; smooth out bouncing input --New USB profile features: - "AdditionalSpeedMods" - add specified speed modifiers - -OpenITG, alpha 4 (March 21st, 2008) ------------------------------------ --Fixed Win32 bugs: - OpenITG hangs/crashes/ when custom songs sample plays - Backgrounds are centered on the top left during gameplay - (Maybe?) Color1 as boolean LUA parsing error --Fixed cross-platform bugs: - Editor's stepchart doesn't scroll properly --Fixed package mistakes: - data.zip causes "Assertion 'm_LockCnt == 0' failed" error - -OpenITG, alpha 3 (March 17th, 2008) ------------------------------------ --Mapping changes: - Added PIUIO/IOW default mappings - Added default keyboard maps for Select (P1 = right Shift, P2 = numpad 0) --PrefsManager changes: - Removed "BrokenBGs" - binary plays BG scripts from all songs now - Added "DebugUSBInput" - output raw and formatted USB data to console - Backported "VisualDelaySeconds" on request --Fixed bugs: - Start sound doesn't play when course is selected - Potential memory leak (minor) on SongManager array --New Screens: - ScreenArcadeStart (unfinished/not implemented in the Makefiles) - ScreenArcadeDiagnostics - installation and diagnostic information - ScreenArcadePatch - update the game through USB patches --New data types: - USBDevice - a basic structure for reading USB hardware data - USBDriver - an abstracted USB I/O driver based off of libusb - ITGIO - a USBDriver specialised for ITG-IO JAMMA kits - PIUIO - a USBDriver specialised for ITG2 dedicated cabinet I/O boards --New LightsDriver: - External ("ext") - makes light data globally available for other drivers --New InputHandlers: - Linux_PIUIO ("piuio") - partially functional, not very usable - Linux_Iow ("iow") - untested, should be fully functional --New RageFileDrivers: - RFDCrypt - handles AES-encrypted .zip files - RFDPatch - handles AES-encrypted patches --New USB profile features: - Choose to save Catalog files ("UseCatalogXML") - default off --New licensed code: - -AES encryption/decryption schemes, by Brian Gladman - -Public domain iButton SDK from Maxim IC --New project files: - Patch-OpenITG.rsa - a new Patch verification sig for future OpenITG .bxr patches - -OpenITG, alpha 2 (January 27th, 2008) ---------------------------------------------- --New preference: - BrokenBGs - Emulate R21-style background handling --Some code cleanup --Fixed bugs: - Windows: all of the weird bugs - Wheel changes songs even when Select is held down - Group banners do not load properly --Unfixed bugs: - Cancelling song selection through USB removal causes mount errors - - -OpenITG, alpha 1.1 (December 5th, 2007) ---------------------------------------------- --Windows build, many thanks to Sniper257 --Fixed bugs: - Forced random on customs does not select song - Bizarre behavior when Tab is held during forced random - MAJOR: Gameplay input locks up on some errors - MAJOR: Custom song loading crashes on Windows --Unfixed bugs: - Group banners do not load - Cancelling song selection through USB removal causes mount errors - - -OpenITG, alpha 1 (December 2nd, 2007) ---------------------------------------------- --Revision 21-style song loading support, starting at PlayersFinalized(). - --Settable preferences (defaults in parentheses): - CustomMaxSeconds - Maximum allowed song length (120 seconds) - CustomMaxSizeMB - Maximum allowed song size (5 MB) - CustomMaxStepSizeKB - Maximum allowed SM file size (100 KB) - CustomsLoadMax - Limit amount of songs loaded (50 songs) - CustomsLoadTimeout - Custom song loading timeout (5.00 seconds) - SongEdits - Enable/disable custom songs. (0 [false]) - --Significant new code functions: - SCREENMAN->OverlayMessage() - message overlay on top of screen - SCREENMAN->HideOverlayMessage - remove message from screen - SONGMAN->LoadPlayerSongs() - loads songs from a player's profile - (RageUtil) CopyWithProgress() - copy a file while sending progress - (fPercent) to a function pointer diff --git a/Docs/release/WhoToSue.txt b/Docs/release/WhoToSue.txt deleted file mode 100644 index cc344ce3..00000000 --- a/Docs/release/WhoToSue.txt +++ /dev/null @@ -1,46 +0,0 @@ -These are all the awesome people who were involved in making this project just -as awesome as they are. - -Lead Developers: - - Vyhd - - infamouspat - -Assistant Developer: - - Matt1360 - -Network Manager / Webmasters: - - Matt1360 - - Zero - - sherl0k - - Lightning - -Testers: - - GRIM.657 - - mDaWg - - Darklink - - Wanny - - Kung - - JJSz / Beaver Valley Mall - - Boxorroxors.net - - Rhythmatic.net/ITGFreak.com - - Sigma - -Special Thanks: - - KholdFuzion - - bacon - - Spectere and friends at Spectere.net - - StepMania team for making an awesome framework - - StepMania.com - - Sourceforge.net - -Contributions: - - GRIM.657 (ScreenExitCommand) - - cyt0plas & Spectere (LUA 5.1 patches) - - dawnwolf (x64/GCC 4.3 compatibility patch) - - Lightning (OpenITG logo & title screen theme stuff) - - xjen0vax (theme metrics, Long/Marathon notifiers) - -If we forgot to mention you, hit us up at one of the following places: - http://www.boxorroxors.net/forum/viewforum.php?f=13 - http://www.rhythmatic.net/phpBB2/viewforum.php?f=51 - http://www.stepmania.com/forums/forumdisplay.php?f=99 diff --git a/util/USBIO.cpp b/util/USBIO.cpp deleted file mode 100644 index 58ea60b5..00000000 --- a/util/USBIO.cpp +++ /dev/null @@ -1,398 +0,0 @@ -#include -#include -#include "USBIO.h" - -/* - * Global functions - */ - -// probes for a board type as given. -USBDriver *USBIO::TryBoardType( Board type ) -{ - USBDriver *pDriver = NULL; - switch( type ) - { - case BOARD_ITGIO: pDriver = new ITGIO; break; - case BOARD_PIUIO: pDriver = new PIUIO; break; - case BOARD_PACDRIVE: pDriver = new PacDrive; break; - } - - // this board couldn't be opened - delete the object - if( !pDriver->Open() ) - { - delete( pDriver ); - pDriver = NULL; - } - else - { - // close the board, so it's ready for whatever else. - pDriver->Close(); - } - - // we'll return the object if it could open. - // if not, we return NULL, as set above. - return pDriver; -} - -// probes for all known board types -USBDriver *USBIO::FindBoard( Board &type ) -{ - USBDriver *pDriver; - for( Board b = BOARD_ITGIO; b < NUM_BOARDS; b = (Board)(b+1) ) - { - pDriver = TryBoardType( b ); - - if( pDriver == NULL ) - continue; - - type = b; - break; - } - - if( pDriver == NULL ) - type = BOARD_INVALID; - - // if this ends up NULL, the calling program must handle it. - return pDriver; -} - -void USBIO::MaskOutput( Board type, uint32_t *pData ) -{ - switch( type ) - { - // the first 16 seem to enable input. - case BOARD_ITGIO: *pData |= 0xFFFF0000; break; - - // avoid pulsing the coin counter and missetting the sensors - case BOARD_PIUIO: *pData &= 0xE7FCFFFC; break; - - // I'm not sure what happens when we write past 16, but don't do it. - case BOARD_PACDRIVE: *pData &= 0xFFFF0000; break; - } -} - -/* - * USBDriver - */ - -USBDriver::USBDriver() -{ - m_pHandle = NULL; -} - -USBDriver::~USBDriver() -{ - Close(); -} - -bool USBDriver::Matches( int idVendor, int idProduct ) const -{ - return false; -} - -struct usb_device *USBDriver::FindDevice() -{ - for( usb_bus *bus = usb_get_busses(); bus; bus = bus->next ) - for( struct usb_device *dev = bus->devices; dev; dev = dev->next ) - if( this->Matches(dev->descriptor.idVendor, dev->descriptor.idProduct) ) - return dev; - - // fall through - return NULL; -} - -void USBDriver::Close() -{ - // never opened - if( m_pHandle == NULL ) - return; - - usb_set_altinterface( m_pHandle, 0 ); - usb_reset( m_pHandle ); - usb_close( m_pHandle ); - m_pHandle = NULL; -} - -bool USBDriver::Open() -{ - Close(); - - usb_init(); - - if( usb_find_busses() < 0 ) - { - printf( "USBDriver::Open(): usb_find_busses: %s\n", usb_strerror() ); - return false; - } - - if( usb_find_devices() < 0 ) - { - printf( "USBDriver::Open(): usb_find_devices: %s\n", usb_strerror() ); - return false; - } - - struct usb_device *dev = FindDevice(); - - if( dev == NULL ) - return false; - - m_pHandle = usb_open( dev ); - - if( m_pHandle == NULL ) - { - printf( "USBDriver::Open(): usb_open: %s\n", usb_strerror() ); - return false; - } - -// The device may be claimed by a kernel driver. Attempt to reclaim it. -// This macro is self-porting, so no ifdef LINUX should be needed. -#ifdef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP - for( unsigned i = 0; i < dev->config->bNumInterfaces; i++ ) - { - int iResult = usb_detach_kernel_driver_np( m_pHandle, i ); - - switch( iResult ) - { - // no kernel drivers needed detached ("No data available") - not an error - case -61: - // no error - case 0: - continue; - break; - default: - printf( "USBDriver::Open(): usb_detach_kernel_driver_np: %s\n", usb_strerror() ); - return false; - break; - } - } -#endif - - if ( usb_set_configuration(m_pHandle, dev->config->bConfigurationValue) < 0 ) - { - printf( "USBDriver::Open(): usb_set_configuration: %s\n", usb_strerror() ); - Close(); - return false; - } - - // claim all interfaces for this device - for( unsigned i = 0; i < dev->config->bNumInterfaces; i++ ) - { - if ( usb_claim_interface(m_pHandle, i) < 0 ) - { - printf( "USBDriver::Open(): usb_claim_interface(%i): %s\n", i, usb_strerror() ); - Close(); - return false; - } - } - - return true; -} - -/* - * ITGIO - */ - -bool ITGIO::DeviceMatches( int idVendor, int idProduct ) -{ - if ( idVendor == 0x7c0 ) - { - if ( idProduct == 0x1501 || idProduct == 0x1582 || idProduct == 0x1584 ) - return true; - } - - return false; -} - -bool ITGIO::Matches( int idVendor, int idProduct ) const -{ - return ITGIO::DeviceMatches( idVendor, idProduct ); -} - -bool ITGIO::Read( uint32_t *pData ) -{ - int iResult; - - while( 1 ) - { - iResult = usb_control_msg(m_pHandle, USB_ENDPOINT_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, - HID_GET_REPORT, HID_IFACE_IN, 0, (char *)pData, 4, 1000 ); - if( iResult == 4 ) // all data read - break; - - // all data not read - Reconnect(); - } - - return true; -} - -bool ITGIO::Write( uint32_t iData ) -{ - int iResult; - - while( 1 ) - { - iResult = usb_control_msg(m_pHandle, USB_ENDPOINT_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, - HID_SET_REPORT, HID_IFACE_OUT, 0, (char *)&iData, 4, 1000 ); - - if( iResult == 4 ) // all data read - break; - - Reconnect(); - } - - return true; -} -void ITGIO::Reconnect() -{ - printf( "ITG I/O error: %s\n", usb_strerror() ); - Close(); - - printf( "Attempting to reconnect...\n" ); - - while( !Open() ) - sleep( 1 ); - - printf( "Successfully reconnected.\n" ); -} - -/* - * PIUIO - */ - -bool PIUIO::DeviceMatches( int idVendor, int idProduct ) -{ - if( idVendor == 0x547 && idProduct == 0x1002 ) - return true; - - return false; -} - -bool PIUIO::Matches( int idVendor, int idProduct ) const -{ - return PIUIO::DeviceMatches( idVendor, idProduct ); -} - -bool PIUIO::Read( uint32_t *pData ) -{ - int iResult; - - while( 1 ) - { - iResult = usb_control_msg(m_pHandle, USB_ENDPOINT_IN | USB_TYPE_VENDOR, 0xAE, 0, 0, (char *)pData, 8, 10000); - if( iResult == 8 ) // all data read - break; - - Reconnect(); - } - - return true; -} - -bool PIUIO::Write( uint32_t iData ) -{ - int iResult; - - while( 1 ) - { - iResult = usb_control_msg(m_pHandle, USB_ENDPOINT_OUT | USB_TYPE_VENDOR, 0xAE, 0, 0, (char *)&iData, 8, 10000 ); - - if( iResult == 8 ) - break; - - Reconnect(); - } - - return true; -} - -bool PIUIO::BulkReadWrite( uint32_t *pData ) -{ - int iResult; - - while ( 1 ) - { - // XXX: what are the reason(s) for the first 2 numbers being 0? - iResult = usb_control_msg(m_pHandle, 0, 0, 0, 0, (char*)(pData), 32, 10011); - - if ( iResult == 32 ) - break; - - Reconnect(); - } - return true; -} - -void PIUIO::Reconnect() -{ - printf( "PIU I/O error: %s\n", usb_strerror() ); - Close(); - - printf( "Attempting to reconnect...\n" ); - - while( !Open() ) - sleep( 1 ); - - printf( "Successfully reconnected.\n" ); -} - -/* - * PacDrive - */ - -bool PacDrive::Matches( int idVendor, int idProduct ) const -{ - if( idVendor != 0xd209 ) - return false; - - /* PacDrives have PIDs 1500-1508 */ - if( (idProduct & ~0x07) != 0x1500 ) - return false; - - return true; -} - -/* While waiting for this to reconnect, we would likely run into a condition - * where LightsDriver::Set() is being called constantly and none of the calls - * actually terminate. If this write fails, assume it's lost and don't reconnect. - */ -bool PacDrive::Write( uint32_t iData ) -{ - // output is within the first 16 bits - accept a - // 16-bit arg and cast it, for simplicity's sake. - - int iReturn = usb_control_msg( m_pHandle, USB_ENDPOINT_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, - HID_SET_REPORT, HID_IFACE_OUT, 0, (char *)&iData, 4, 10000 ); - - if( iReturn == 4 ) - return true; - - printf( "PacDrive writing failed, returned %i: %s\n", iReturn, usb_strerror() ); - - return false; -} - -/* - * Copyright (c) 2008 BoXoRRoXoRs - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/util/USBIO.h b/util/USBIO.h deleted file mode 100644 index 3ed637db..00000000 --- a/util/USBIO.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef USBIO_H -#define USBIO_H - -#include - -#define HID_GET_REPORT 0x01 -#define HID_SET_REPORT 0x09 - -// For HIDs, these addresses are used for interface-level I/O. -#define HID_IFACE_IN 256 -#define HID_IFACE_OUT 512 - -class USBDriver -{ -public: - USBDriver(); - virtual ~USBDriver(); - - bool Open(); - void Close(); - - virtual bool Read( uint32_t *pData ) = 0; - virtual bool Write( uint32_t iData ) = 0; -protected: - virtual bool Matches(int idVendor, int idProduct) const; - virtual void Reconnect() { return; } - - struct usb_device *FindDevice(); - usb_dev_handle *m_pHandle; -}; - -class ITGIO: public USBDriver -{ -public: - static bool DeviceMatches( int idVendor, int idProduct ); - bool Read( uint32_t *pData ); - bool Write( uint32_t iData ); - -protected: - bool Matches( int idVendor, int idProduct ) const; - void Reconnect(); -}; - - -class PIUIO: public USBDriver -{ -public: - static bool DeviceMatches( int idVendor, int idProduct ); - bool Read( uint32_t *pData ); - bool Write( uint32_t iData ); - bool BulkReadWrite( uint32_t *pArray ); - -protected: - bool Matches( int idVendor, int idProduct ) const; - void Reconnect(); -}; - -class PacDrive: public USBDriver -{ -public: - bool Read( uint32_t *pData ) { return false; } - bool Write( uint32_t iData ); - -protected: - bool Matches( int idVendor, int idProduct ) const; -}; - -enum Board -{ - BOARD_ITGIO, - BOARD_PIUIO, - BOARD_PACDRIVE, - NUM_BOARDS, - BOARD_INVALID -}; - -// Global functions that may be useful. -namespace USBIO -{ - // tries to open the given board type - USBDriver *TryBoardType( Board type ); - - // probes for boards and sets type to a match - USBDriver *FindBoard( Board &type ); - - // sets bitmasks specific to each board - void MaskOutput( Board type, uint32_t *pData ); -}; - -#endif /* USBIO_H */ - - -/* - * Copyright (c) 2008 BoXoRRoXoRs - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/util/bulk-read-test.cpp b/util/bulk-read-test.cpp deleted file mode 100644 index da5d6b3f..00000000 --- a/util/bulk-read-test.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include -#include -#include - -#include "USB-classes.h" - -/* Exit codes for this program: - * 1: board connection error - * 2: invalid arguments - */ - -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; - -const int VERSION = 1; - -/* the length of the data arrays */ -#define MAX_LEN 8 - -int main( int argc, char *argv[] ) -{ - printf( "bulk-read-test, version %i, starting.\n\n", VERSION ); - - if( argc != 2 ) - { - printf( "Usage: ./bulk-read-test [value]\n" ); - printf( "Value is read as 32-bit, unsigned hexadecimal.\n" ); - exit( 2 ); - } - - uint32_t iWriteData[MAX_LEN]; - uint32_t iLastData[MAX_LEN]; - - // assign the read value and clear the sensor bits - uint32_t iLightData = strtoul( argv[1], NULL, 16 ); - iLightData &= 0xE7FCFFFC; - - /* assign the given values in hex format */ - for( int i = 0; i < 4; i++ ) - { - iWriteData[i*2+0] = iLightData; - iWriteData[i*2+0] |= (i | (i << 16)); - - // clear the input field, so to speak... - iWriteData[i*2+1] = 0xFFFFFFFF; - - // debug line - printf( "Assigned %08x to iWriteData[%i]\n", iWriteData[i*2+0], i*2+0 ); - } - - /* since we write directly to iWriteData, save a backup. */ - for( int i = 0; i < MAX_LEN; i++ ) - iLastData[i] = iWriteData[i]; - - for( int i = 0; i < MAX_LEN; i++ ) - printf( "Data %i: Input: %08x, output: %08x (inverted: %08x)\n", i+1, iLastData[i], iWriteData[i], ~iWriteData[i] ); - - PIUIO Board; - - /* not as succinct as !, but more readable */ - if( Board.Open() == false ) - { - printf( "I/O board could not be found or assigned.\n" ); - exit( 1 ); - } - - printf( "Opened and claimed I/O board.\n" ); - - Board.BulkReadWrite( iWriteData ); - Board.Close(); - - for( int i = 0; i < MAX_LEN; i++ ) - printf( "Data %i: Input: %08x, output: %08x\n", i+1, iLastData[i], iWriteData[i] ); - - printf( "Program exited successfully.\n" ); - return 0; -} diff --git a/util/check-itg-load.cpp b/util/check-itg-load.cpp deleted file mode 100644 index 5e6259b9..00000000 --- a/util/check-itg-load.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include -#include -#include "USB-classes.h" - -/* Exit codes: - * 0 - no button press, no error - * 1 - button press, no error - * 2 - board could not be found - */ - -//typedef unsigned int uint32_t; -//typedef unsigned short uint16_t; - -enum BoardType -{ - BOARD_ITGIO, - BOARD_PIUIO, - BOARD_NONE -}; - -// convenient helper function -template -void safe_delete( T *pointer ) -{ - delete pointer; - pointer = NULL; -} - -template -bool bit_set( T iData, uint8_t iBit ) -{ - int iLength = sizeof(T) * 8; - assert( iLength >= iBit ); - - printf( "iLength: %i, iBit: %i, shift: %i\n", iLength, iBit, iLength - iBit ); - - // in some cases, this must be cast (if 1's assumed type is smaller than iData) - return iData & ((T)1 << (iLength-iBit)); -} - -int main() -{ - // load the appropriate driver - USBDriver *pDriver; - BoardType Board = BOARD_NONE; - - // Attempt to find a PIUIO device - pDriver = new PIUIO; - - if( pDriver->Open() ) - Board = BOARD_PIUIO; - else - safe_delete( pDriver ); - - // Attempt to find an ITGIO device otherwise - if( Board == BOARD_NONE ) - { - pDriver = new ITGIO; - - if( pDriver->Open() ) - Board = BOARD_ITGIO; - else - safe_delete( pDriver ); - } - - // couldn't find any boards - if( Board == BOARD_NONE ) - return 2; - - { - uint32_t iData = 0; - - // initialization write - if( Board == BOARD_PIUIO ) - pDriver->Write( 0xE7FCFFFC ); - else - pDriver->Write( 0xFFFFFFFF ); - - pDriver->Read( &iData ); - - // we have our data, so we can clean up here - pDriver->Close(); safe_delete( pDriver ); - - // both I/O boards open high - invert the data - iData = ~iData; - - // check for the start button bits on each board - if( Board == BOARD_ITGIO ) - if( bit_set(iData, 5) || bit_set(iData,12) ) - return 1; - else if( Board == BOARD_PIUIO ) - if( bit_set(iData, 12) || bit_set(iData,28) ) - return 1; - } - - return 0; -} diff --git a/util/ffmpeg-configure.txt b/util/ffmpeg-configure.txt deleted file mode 100644 index 9e241223..00000000 --- a/util/ffmpeg-configure.txt +++ /dev/null @@ -1,10 +0,0 @@ -# Thanks to Steve Checkoway for this information. - -./configure --disable-shared --enable-static --disable-debug --disable-vhook --enable-memalign-hack --disable-network --enable-small --disable-encoders --disable-ffmpeg \ ---disable-ffserver --disable-ffplay --disable-muxers --enable-demuxer=avi --enable-demuxer=h261 --enable-demuxer=h263 --enable-demuxer=h264 --enable-demuxer=m4v \ ---enable-demuxer=mjpeg --enable-demuxer=mov --enable-demuxer=mpegps --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-demuxer=ogg --enable-demuxer=rawvideo \ ---enable-demuxer=yuv4mpegpipe --disable-decoders --enable-decoder=h261 --enable-decoder=h263 --enable-decoder=h263i --enable-decoder=h264 --enable-decoder=huffyuv \ ---enable-decoder=mjpeg --enable-decoder=mjpegb --enable-decoder=mpeg_xvmc --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=mpeg4 \ ---enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=rawvideo --enable-decoder=theora \ ---disable-parsers --enable-parser=h261 --enable-parser=h263 --enable-parser=h264 --enable-parser=mjpeg --enable-parser=mpeg4video --enable-parser=mpegaudio \ ---enable-parser=mpegvideo --enable-parser=ac3 diff --git a/util/joy-test.cpp b/util/joy-test.cpp deleted file mode 100644 index 8a5f7726..00000000 --- a/util/joy-test.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* Old util I wrote a while back to test joystick input independently - * of StepMania's InputHandler systems. You might find it useful. ~ Vyhd */ - -#include -#include - -#include -#include -#include - -#include - -char *joydev = "/dev/input/js0"; - -int jstest_open( char *path, int mode ) -{ - struct stat st; - if( stat( path, &st ) == -1 ) - { - printf( "Couldn't stat %s: %s\n", path, strerror(errno) ); - return -1; - } - - if( !S_ISCHR(st.st_mode) ) - { - printf( "Ignoring %s: not a character device.\n", path ); - return -1; - } - - return open( path, mode ); -} - -void jstest_find( int &fd ) -{ - fd = jstest_open( joydev, O_RDONLY ); - - if( fd != -1 ) - return; - - printf( "Joystick not found. Polling every 5 seconds...\n" ); - - int iTimes = 0; - - while( iTimes < 12 ) - { - iTimes++; - - fd = jstest_open( joydev, O_RDONLY ); - - // not found - if( fd == -1 ) - sleep( 5 ); - else - break; - } - - if( fd == -1 ) - { - printf( "No joystick found in one minute; ceasing find operation.\n" ); - return; - } -} - -int main() -{ - int fd; - - jstest_find( fd ); - printf( "Value of fd: %i\n", fd ); - - char sBuffer[1024]; - char *sName; - - if( ioctl( fd, JSIOCGNAME(sizeof(sBuffer)), sBuffer) < 0 ) - sName = "error obtaining name."; - else - sName = sBuffer; - - printf( "Found joystick: %s\n", sName ); - - struct js_event event; - - unsigned int iBitField = 0; - - while( 1 ) - { - int iResult = read(fd, &event, sizeof(js_event)); - - if( iResult != sizeof(js_event) ) - { - printf( "Unexpected read result: got %i.\n", iResult ); - break; - } - - if( event.type != JS_EVENT_BUTTON ) - { - if( !(event.type | JS_EVENT_INIT) ) - printf( "Non-button event: ignored.\n" ); - - continue; - } - - printf( "Button number %i %s\n", event.number, event.value == 1 ? "pressed" : "released" ); - } - - close( fd ); - - return 0; -} diff --git a/util/piuio-coin-test.cpp b/util/piuio-coin-test.cpp deleted file mode 100644 index 34139e10..00000000 --- a/util/piuio-coin-test.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include "USB-classes.h" - -// Service, test buttons - increments the counter -const uint32_t COIN_EVENT = (1 << 14) | (1 << 9); -// P1 and P2 Start - ends the program -const uint32_t END_EVENT = (1 << 4) | (1 << 20); - -int main() -{ - PIUIO Board; - - if( !Board.Open() ) - { - printf( "Could not open PIUIO.\n" ); - return 1; - } - - uint32_t InputData, OutputData; - - // initialization write - Board.Write( 0xE7FCFFFC ); - - while( 1 ) - { - InputData = 0; - OutputData = 0xEFFCFFFC; - - Board.Read( &InputData ); - - // invert, for logical processing - InputData = ~InputData; - - if( InputData & COIN_EVENT ) - OutputData |= (1 << 28); - - Board.Write( OutputData ); - - if( InputData & END_EVENT ) - break; - } - - Board.Close(); - return 0; -} diff --git a/util/usb-input.cpp b/util/usb-input.cpp deleted file mode 100644 index 745936a6..00000000 --- a/util/usb-input.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include "USBIO.h" - -/* -void LongToBitString( uint32_t data, char *str ) -{ - for( int i = 0; i < 32; i++ ) - str[i] = (data & (1<<(32-i))) ? "1" : "0"; -} -*/ - -int main() -{ - // probe for any readable boards - USBDriver *pDriver; - Board BoardType; - - pDriver = USBIO::FindBoard( BoardType ); - - if( pDriver == NULL ) - { - printf( "Error: no boards could be opened for input!\n" ); - return 2; - } - - if( BoardType == BOARD_PACDRIVE ) - { - printf( "The PacDrive cannot read input - terminating.\n" ); - return 4; - } - - // mask the values as needed for each board - if( !pDriver->Open() ) - { - printf( "Crash reason: WinDEU\n" ); - return 2; - } - - // initialization write - uint32_t iWrite = 0xFFFFFFFF; - USBIO::MaskOutput( BoardType, &iWrite ); - pDriver->Write( iWrite ); - - uint32_t iData; - char sBits[32]; - while( 1 ) - { - pDriver->Read( &iData ); - iData = ~iData; - printf( "%8#x\r", iData ); -// LongToBitString( iData, &sBits ); -// printf( "%s\n", sBits ); - } - - pDriver->Write( 0 ); - pDriver->Close(); - - return 0; -} diff --git a/util/usb-output.cpp b/util/usb-output.cpp deleted file mode 100644 index c4770834..00000000 --- a/util/usb-output.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include "USBIO.h" - -int main( int argc, char *argv[] ) -{ - if( argc != 2 ) - { - printf( "Usage: %s [32-bit hex]\n", argv[0] ); - return 1; - } - - uint32_t iData = strtoul( argv[1], NULL, 16 ); - printf( "Output data: %#8x\n", iData ); - - // try to find a board we can actually output this to. - - USBDriver *pDriver; - Board BoardType; - pDriver = USBIO::FindBoard( BoardType ); - - if( pDriver == NULL ) - { - printf( "Error: no boards could be opened for output!\n" ); - return 2; - } - - // mask the values as needed for each board - USBIO::MaskOutput( BoardType, &iData ); - printf( "New output data: %#8x\n", iData ); - - // not sure why this would fail now, but better check. - if( !pDriver->Open() ) - { - printf( "Crash reason: WinDEU\n" ); - return 2; - } - - pDriver->Write( iData ); - pDriver->Close(); - - return 0; -} -- 2.11.0