MacOSX Fixes

git-svn-id: http://svn.purei.org/purei/trunk@261 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
jpd002 2008-03-08 18:50:41 +00:00
parent ccfd6fd65c
commit 61d70ed3bc
5 changed files with 449 additions and 684 deletions

View File

@ -329,7 +329,7 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>7E224E2D0D77A8A6000FAD0C</string>
<string>7E224E2F0D77AADF000FAD0C</string>
<key>history</key>
<array>
<string>7EE1BCFD0D4D895300B502BD</string>

View File

@ -89,8 +89,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 225943925;
PBXWorkspaceStateSaveDate = 225943925;
PBXPerProjectTemplateStateSaveDate = 226693562;
PBXWorkspaceStateSaveDate = 226693562;
};
perUserProjectItems = {
7E19A9A30D6C8A2D00B0C6A6 = 7E19A9A30D6C8A2D00B0C6A6 /* PBXTextBookmark */;
@ -102,37 +102,18 @@
7E19A9C10D6C8B6F00B0C6A6 = 7E19A9C10D6C8B6F00B0C6A6 /* PBXTextBookmark */;
7E19A9C70D6C8BC900B0C6A6 = 7E19A9C70D6C8BC900B0C6A6 /* PBXTextBookmark */;
7E19A9C80D6C8BC900B0C6A6 = 7E19A9C80D6C8BC900B0C6A6 /* PBXTextBookmark */;
7E224DF60D77A2B7000FAD0C /* PBXTextBookmark */ = 7E224DF60D77A2B7000FAD0C /* PBXTextBookmark */;
7E224DF70D77A2B7000FAD0C /* PBXTextBookmark */ = 7E224DF70D77A2B7000FAD0C /* PBXTextBookmark */;
7E224DFF0D77A2B9000FAD0C /* PBXTextBookmark */ = 7E224DFF0D77A2B9000FAD0C /* PBXTextBookmark */;
7E224E000D77A2B9000FAD0C /* PBXTextBookmark */ = 7E224E000D77A2B9000FAD0C /* PBXTextBookmark */;
7E224E010D77A2B9000FAD0C /* PBXTextBookmark */ = 7E224E010D77A2B9000FAD0C /* PBXTextBookmark */;
7E224E050D77A335000FAD0C /* PBXTextBookmark */ = 7E224E050D77A335000FAD0C /* PBXTextBookmark */;
7E224E060D77A335000FAD0C /* PBXTextBookmark */ = 7E224E060D77A335000FAD0C /* PBXTextBookmark */;
7E224E070D77A335000FAD0C /* PBXTextBookmark */ = 7E224E070D77A335000FAD0C /* PBXTextBookmark */;
7E224E080D77A335000FAD0C /* PBXTextBookmark */ = 7E224E080D77A335000FAD0C /* PBXTextBookmark */;
7E224E090D77A335000FAD0C /* PBXTextBookmark */ = 7E224E090D77A335000FAD0C /* PBXTextBookmark */;
7E224E0A0D77A335000FAD0C /* PBXTextBookmark */ = 7E224E0A0D77A335000FAD0C /* PBXTextBookmark */;
7E224E0B0D77A335000FAD0C /* PBXTextBookmark */ = 7E224E0B0D77A335000FAD0C /* PBXTextBookmark */;
7E224E100D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E100D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E110D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E110D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E120D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E120D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E130D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E130D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E140D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E140D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E150D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E150D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E160D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E160D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E170D77A6D4000FAD0C /* PBXTextBookmark */ = 7E224E170D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E1F0D77A79E000FAD0C /* PBXTextBookmark */ = 7E224E1F0D77A79E000FAD0C /* PBXTextBookmark */;
7E224E200D77A79E000FAD0C /* PBXTextBookmark */ = 7E224E200D77A79E000FAD0C /* PBXTextBookmark */;
7E224E210D77A79E000FAD0C /* PBXTextBookmark */ = 7E224E210D77A79E000FAD0C /* PBXTextBookmark */;
7E224E220D77A79E000FAD0C /* PBXTextBookmark */ = 7E224E220D77A79E000FAD0C /* PBXTextBookmark */;
7E224E250D77A7CE000FAD0C /* PBXTextBookmark */ = 7E224E250D77A7CE000FAD0C /* PBXTextBookmark */;
7E224E270D77A807000FAD0C /* PBXTextBookmark */ = 7E224E270D77A807000FAD0C /* PBXTextBookmark */;
7E224E280D77A807000FAD0C /* PBXTextBookmark */ = 7E224E280D77A807000FAD0C /* PBXTextBookmark */;
7E224E290D77A807000FAD0C /* PBXTextBookmark */ = 7E224E290D77A807000FAD0C /* PBXTextBookmark */;
7E224E2B0D77A8A6000FAD0C /* PBXTextBookmark */ = 7E224E2B0D77A8A6000FAD0C /* PBXTextBookmark */;
7E224E2C0D77A8A6000FAD0C /* PBXTextBookmark */ = 7E224E2C0D77A8A6000FAD0C /* PBXTextBookmark */;
7E224E2D0D77A8A6000FAD0C /* PBXTextBookmark */ = 7E224E2D0D77A8A6000FAD0C /* PBXTextBookmark */;
7E224DFF0D77A2B9000FAD0C = 7E224DFF0D77A2B9000FAD0C /* PBXTextBookmark */;
7E224E000D77A2B9000FAD0C = 7E224E000D77A2B9000FAD0C /* PBXTextBookmark */;
7E224E110D77A6D4000FAD0C = 7E224E110D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E120D77A6D4000FAD0C = 7E224E120D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E140D77A6D4000FAD0C = 7E224E140D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E150D77A6D4000FAD0C = 7E224E150D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E160D77A6D4000FAD0C = 7E224E160D77A6D4000FAD0C /* PBXTextBookmark */;
7E224E270D77A807000FAD0C = 7E224E270D77A807000FAD0C /* PBXTextBookmark */;
7E224E280D77A807000FAD0C = 7E224E280D77A807000FAD0C /* PBXTextBookmark */;
7E224E2B0D77A8A6000FAD0C = 7E224E2B0D77A8A6000FAD0C /* PBXTextBookmark */;
7E224E2C0D77A8A6000FAD0C = 7E224E2C0D77A8A6000FAD0C /* PBXTextBookmark */;
7E224E2F0D77AADF000FAD0C = 7E224E2F0D77AADF000FAD0C /* PBXTextBookmark */;
7E47E2FD0D6DE90C003F7AC1 = 7E47E2FD0D6DE90C003F7AC1 /* PBXTextBookmark */;
7E47E3040D6DE90C003F7AC1 = 7E47E3040D6DE90C003F7AC1 /* PBXTextBookmark */;
7E47E3090D6DE90C003F7AC1 = 7E47E3090D6DE90C003F7AC1 /* PBXTextBookmark */;
@ -156,10 +137,6 @@
7E91784D0D64F5C00025E2C0 = 7E91784D0D64F5C00025E2C0 /* PBXTextBookmark */;
7E91784E0D64F5C00025E2C0 = 7E91784E0D64F5C00025E2C0 /* PBXTextBookmark */;
7E91784F0D64F5C00025E2C0 = 7E91784F0D64F5C00025E2C0 /* PBXTextBookmark */;
7EAC23570D6EF82700A3624F = 7EAC23570D6EF82700A3624F /* PBXTextBookmark */;
7EAC23580D6EF82700A3624F = 7EAC23580D6EF82700A3624F /* PBXTextBookmark */;
7EC6220C0D709231008B28C1 = 7EC6220C0D709231008B28C1 /* PBXTextBookmark */;
7EC6220F0D709231008B28C1 = 7EC6220F0D709231008B28C1 /* PBXTextBookmark */;
7ED0A4F00D6D28A1008D30EA = 7ED0A4F00D6D28A1008D30EA /* PBXTextBookmark */;
7ED0A4F10D6D28A1008D30EA = 7ED0A4F10D6D28A1008D30EA /* PBXTextBookmark */;
7ED0A4F40D6D28A1008D30EA = 7ED0A4F40D6D28A1008D30EA /* PBXTextBookmark */;
@ -168,7 +145,8 @@
7EE1BCB90D4D522900B502BD = 7EE1BCB90D4D522900B502BD /* PBXTextBookmark */;
7EE1BCBA0D4D522900B502BD = 7EE1BCBA0D4D522900B502BD /* PBXTextBookmark */;
7EE1BCFD0D4D895300B502BD = 7EE1BCFD0D4D895300B502BD /* PBXTextBookmark */;
7EE362DF0D60753D00C21032 = 7EE362DF0D60753D00C21032 /* PBXTextBookmark */;
7EF251B70D83128300D90D20 /* PBXTextBookmark */ = 7EF251B70D83128300D90D20 /* PBXTextBookmark */;
7EF251B80D83128300D90D20 /* PBXTextBookmark */ = 7EF251B80D83128300D90D20 /* PBXTextBookmark */;
};
sourceControlManager = 7E8986DC0D08A3D10077F9ED /* Source Control */;
userBuildSettings = {
@ -279,24 +257,6 @@
vrLen = 1774;
vrLoc = 13141;
};
7E224DF60D77A2B7000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: 'SIZE_MAX' was not declared in this scope";
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
rLen = 1;
rLoc = 0;
rType = 1;
};
7E224DF70D77A2B7000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 3";
rLen = 0;
rLoc = 64;
rType = 0;
vrLen = 509;
vrLoc = 0;
};
7E224DFF0D77A2B9000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E47E3220D6DEA15003F7AC1 /* MainWindow.mm */;
@ -317,96 +277,6 @@
vrLen = 145;
vrLoc = 0;
};
7E224E010D77A2B9000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 81";
rLen = 66;
rLoc = 1716;
rType = 0;
vrLen = 968;
vrLoc = 1362;
};
7E224E050D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 7";
rLen = 0;
rLoc = 62;
rType = 0;
vrLen = 450;
vrLoc = 0;
};
7E224E060D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 6";
rLen = 0;
rLoc = 119;
rType = 0;
vrLen = 509;
vrLoc = 0;
};
7E224E070D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 3";
rLen = 0;
rLoc = 64;
rType = 0;
vrLen = 509;
vrLoc = 0;
};
7E224E080D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 74";
rLen = 36;
rLoc = 2004;
rType = 0;
vrLen = 538;
vrLoc = 0;
};
7E224E090D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 6";
rLen = 0;
rLoc = 119;
rType = 0;
vrLen = 509;
vrLoc = 0;
};
7E224E0A0D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 7";
rLen = 0;
rLoc = 62;
rType = 0;
vrLen = 450;
vrLoc = 0;
};
7E224E0B0D77A335000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 10";
rLen = 0;
rLoc = 119;
rType = 0;
vrLen = 501;
vrLoc = 0;
};
7E224E100D77A6D4000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 82";
rLen = 66;
rLoc = 1716;
rType = 0;
vrLen = 968;
vrLoc = 1363;
};
7E224E110D77A6D4000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7EE1BC870D4D4F8F00B502BD /* PH_HidMacOSX.cpp */;
@ -427,16 +297,6 @@
vrLen = 487;
vrLoc = 17;
};
7E224E130D77A6D4000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 8";
rLen = 0;
rLoc = 62;
rType = 0;
vrLen = 683;
vrLoc = 0;
};
7E224E140D77A6D4000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
@ -467,66 +327,6 @@
vrLen = 487;
vrLoc = 17;
};
7E224E170D77A6D4000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 7";
rLen = 0;
rLoc = 55;
rType = 0;
vrLen = 629;
vrLoc = 0;
};
7E224E1F0D77A79E000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 10";
rLen = 0;
rLoc = 119;
rType = 0;
vrLen = 501;
vrLoc = 0;
};
7E224E200D77A79E000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 3";
rLen = 0;
rLoc = 55;
rType = 0;
vrLen = 451;
vrLoc = 0;
};
7E224E210D77A79E000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 10";
rLen = 0;
rLoc = 119;
rType = 0;
vrLen = 501;
vrLoc = 0;
};
7E224E220D77A79E000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 458;
vrLoc = 0;
};
7E224E250D77A7CE000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 3";
rLen = 0;
rLoc = 55;
rType = 0;
vrLen = 745;
vrLoc = 0;
};
7E224E270D77A807000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
@ -547,16 +347,6 @@
vrLen = 745;
vrLoc = 0;
};
7E224E290D77A807000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
name = "VUShared.cpp: 20";
rLen = 0;
rLoc = 441;
rType = 0;
vrLen = 669;
vrLoc = 0;
};
7E224E2B0D77A8A6000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89883E0D08BD090077F9ED /* VUShared.cpp */;
@ -577,12 +367,12 @@
vrLen = 669;
vrLoc = 0;
};
7E224E2D0D77A8A6000FAD0C /* PBXTextBookmark */ = {
7E224E2F0D77AADF000FAD0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */;
name = "CodeGen_MD.cpp: 1";
name = "CodeGen_MD.cpp: 24";
rLen = 0;
rLoc = 0;
rLoc = 531;
rType = 0;
vrLen = 727;
vrLoc = 0;
@ -1316,13 +1106,6 @@
sepNavVisRange = "{0, 788}";
};
};
7E8988310D08BD090077F9ED /* RangeList16.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1011, 1078}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 577}";
};
};
7E8988370D08BD090077F9ED /* uint128.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1011, 427}}";
@ -1639,8 +1422,8 @@
};
7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1011, 7224}}";
sepNavSelRange = "{0, 0}";
sepNavIntBoundsRect = "{{0, 0}, {1011, 8344}}";
sepNavSelRange = "{531, 0}";
sepNavVisRange = "{0, 727}";
};
};
@ -1693,39 +1476,6 @@
sepNavVisRange = "{0, 318}";
};
};
7EAC23570D6EF82700A3624F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E47E3220D6DEA15003F7AC1 /* MainWindow.mm */;
name = "MainWindow.mm: 16";
rLen = 0;
rLoc = 145;
rType = 0;
vrLen = 145;
vrLoc = 0;
};
7EAC23580D6EF82700A3624F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7EAC23590D6EF82700A3624F /* Lesson34Controller.h */;
name = "Lesson34Controller.h: 26";
rLen = 0;
rLoc = 580;
rType = 0;
vrLen = 587;
vrLoc = 0;
};
7EAC23590D6EF82700A3624F /* Lesson34Controller.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = Lesson34Controller.h;
path = /Users/jpd001/Downloads/Lesson34_OSXCocoa/Lesson34Controller.h;
sourceTree = "<absolute>";
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1070, 549}}";
sepNavSelRange = "{580, 0}";
sepNavVisRange = "{0, 587}";
sepNavWindowFrame = "{{15, 96}, {1129, 677}}";
};
};
7EAD8BE30D4846DE002CC1C1 /* Posix_VolumeStream.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1219, 462}}";
@ -1765,7 +1515,7 @@
hitCount = 0;
ignoreCount = 0;
lineNumber = 7;
modificationTime = 225945192.612399;
modificationTime = 225946084.125788;
state = 1;
};
7EB6F45D0D1B033700A53B0B /* ObjCCall.h */ = {
@ -1776,33 +1526,6 @@
sepNavWindowFrame = "{{15, 96}, {1129, 677}}";
};
};
7EC6220C0D709231008B28C1 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E47E3220D6DEA15003F7AC1 /* MainWindow.mm */;
name = "MainWindow.mm: 16";
rLen = 0;
rLoc = 145;
rType = 0;
vrLen = 145;
vrLoc = 0;
};
7EC6220F0D709231008B28C1 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7EC622100D709231008B28C1 /* Lesson34Controller.h */;
name = "Lesson34Controller.h: 26";
rLen = 0;
rLoc = 580;
rType = 0;
vrLen = 587;
vrLoc = 0;
};
7EC622100D709231008B28C1 /* Lesson34Controller.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = Lesson34Controller.h;
path = /Users/jpd001/Downloads/Lesson34_OSXCocoa/Lesson34Controller.h;
sourceTree = "<absolute>";
};
7ED0A4F00D6D28A1008D30EA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7E89882F0D08BD090077F9ED /* PS2OS.cpp */;
@ -1897,16 +1620,6 @@
vrLen = 702;
vrLoc = 0;
};
7EE362DF0D60753D00C21032 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7EE1BC870D4D4F8F00B502BD /* PH_HidMacOSX.cpp */;
name = "PH_HidMacOSX.cpp: 38";
rLen = 0;
rLoc = 1147;
rType = 0;
vrLen = 831;
vrLoc = 745;
};
7EE584290D23176400AF9DA3 /* PathUtils.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1219, 420}}";
@ -1935,7 +1648,7 @@
ignoreCount = 0;
lineNumber = 17;
location = Purei;
modificationTime = 225945192.612384;
modificationTime = 225946084.125774;
state = 1;
};
7EEF338C0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.h */ = {
@ -1960,6 +1673,39 @@
sepNavVisRange = "{0, 921}";
};
};
7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1011, 2786}}";
sepNavSelRange = "{3719, 0}";
sepNavVisRange = "{3489, 756}";
sepNavWindowFrame = "{{15, 96}, {1129, 677}}";
};
};
7EF251B10D83124D00D90D20 /* Iop_PadMan.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1011, 2464}}";
sepNavSelRange = "{4518, 0}";
sepNavVisRange = "{3479, 1054}";
};
};
7EF251B70D83128300D90D20 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "warning: taking address of temporary";
fRef = 7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */;
rLen = 1;
rLoc = 145;
rType = 1;
};
7EF251B80D83128300D90D20 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */;
name = "Iop_PadMan.cpp: 146";
rLen = 85;
rLoc = 3858;
rType = 0;
vrLen = 566;
vrLoc = 3486;
};
8D1107260486CEB800E47090 /* Purei */ = {
activeExec = 0;
executables = (

View File

@ -129,6 +129,7 @@
7EE5842B0D23176400AF9DA3 /* PathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE5842A0D23176400AF9DA3 /* PathUtils.cpp */; };
7EEF338E0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EEF338D0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.cpp */; };
7EEF350F0D0E6E68005FE2D8 /* X86Assembler_Fpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EEF350E0D0E6E68005FE2D8 /* X86Assembler_Fpu.cpp */; };
7EF251B20D83124D00D90D20 /* Iop_PadMan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
/* End PBXBuildFile section */
@ -253,7 +254,6 @@
7E89882E0D08BD090077F9ED /* Profiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Profiler.h; path = Source/Profiler.h; sourceTree = "<group>"; };
7E89882F0D08BD090077F9ED /* PS2OS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PS2OS.cpp; path = Source/PS2OS.cpp; sourceTree = "<group>"; };
7E8988300D08BD090077F9ED /* PS2OS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PS2OS.h; path = Source/PS2OS.h; sourceTree = "<group>"; };
7E8988310D08BD090077F9ED /* RangeList16.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RangeList16.h; path = Source/RangeList16.h; sourceTree = "<group>"; };
7E8988370D08BD090077F9ED /* uint128.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = uint128.h; path = Source/uint128.h; sourceTree = "<group>"; };
7E8988380D08BD090077F9ED /* Utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Utils.cpp; path = Source/Utils.cpp; sourceTree = "<group>"; };
7E8988390D08BD090077F9ED /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = Source/Utils.h; sourceTree = "<group>"; };
@ -378,6 +378,8 @@
7EEF338C0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSH_OpenGLMacOSX.h; path = Source/macosxui/GSH_OpenGLMacOSX.h; sourceTree = "<group>"; };
7EEF338D0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GSH_OpenGLMacOSX.cpp; path = Source/macosxui/GSH_OpenGLMacOSX.cpp; sourceTree = "<group>"; };
7EEF350E0D0E6E68005FE2D8 /* X86Assembler_Fpu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = X86Assembler_Fpu.cpp; path = Source/X86Assembler_Fpu.cpp; sourceTree = "<group>"; };
7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_PadMan.cpp; path = Source/iop/Iop_PadMan.cpp; sourceTree = "<group>"; };
7EF251B10D83124D00D90D20 /* Iop_PadMan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_PadMan.h; path = Source/iop/Iop_PadMan.h; sourceTree = "<group>"; };
8D1107320486CEB800E47090 /* Purei.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Purei.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@ -633,7 +635,6 @@
7E8988300D08BD090077F9ED /* PS2OS.h */,
7E8987070D08B4640077F9ED /* PS2VM.cpp */,
7E8987080D08B4640077F9ED /* PS2VM.h */,
7E8988310D08BD090077F9ED /* RangeList16.h */,
7E8BEF0F0D171D6300CBEDE8 /* RegisterStateFile.cpp */,
7E8BEF0E0D171D6300CBEDE8 /* RegisterStateFile.h */,
7E9E4F8A0D4531BE003321D8 /* SIF.cpp */,
@ -711,6 +712,8 @@
7E9E4FA70D4531FF003321D8 /* Iop_Modload.cpp */,
7E9E4FA80D4531FF003321D8 /* Iop_Modload.h */,
7E9E4FA90D4531FF003321D8 /* Iop_Module.h */,
7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */,
7EF251B10D83124D00D90D20 /* Iop_PadMan.h */,
7E9E4FAA0D4531FF003321D8 /* Iop_Stdio.cpp */,
7E9E4FAB0D4531FF003321D8 /* Iop_Stdio.h */,
7E9E4FAC0D4531FF003321D8 /* Iop_Sysclib.cpp */,
@ -915,6 +918,7 @@
7EE1BC880D4D4F9000B502BD /* PH_HidMacOSX.cpp in Sources */,
7EE362C20D5FA35800C21032 /* IPU.cpp in Sources */,
7E47E3230D6DEA15003F7AC1 /* MainWindow.mm in Sources */,
7EF251B20D83124D00D90D20 /* Iop_PadMan.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -1,196 +1,211 @@
#include <assert.h>
#include <stdio.h>
#include <boost/bind.hpp>
#include "Iop_PadMan.h"
#include "../Log.h"
#include "../RegisterStateFile.h"
using namespace Iop;
using namespace Framework;
using namespace boost;
using namespace std;
#define PADNUM (1)
#define MODE (0x4)
#define LOG_NAME "iop_padman"
#define STATE_PADDATA ("iop_padman/paddata.xml")
#define STATE_PADDATA_ADDRESS ("address")
#define STATE_PADDATA_TYPE ("type")
CPadMan::CPadMan(CSIF& sif)
{
m_nPadDataAddress = 0;
m_nPadDataType = 0;
m_pPad = NULL;
sif.RegisterModule(MODULE_ID_1, this);
sif.RegisterModule(MODULE_ID_2, this);
sif.RegisterModule(MODULE_ID_3, this);
sif.RegisterModule(MODULE_ID_4, this);
}
string CPadMan::GetId() const
{
return "padman";
}
void CPadMan::Invoke(CMIPS& context, unsigned int functionId)
{
throw runtime_error("Not implemented.");
}
void CPadMan::Invoke(uint32 method, uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(method == 1);
method = args[0];
switch(method)
{
case 0x00000001:
case 0x80000100:
Open(args, argsSize, ret, retSize, ram);
break;
case 0x00000008:
SetActuatorAlign(args, argsSize, ret, retSize, ram);
break;
case 0x00000010:
Init(args, argsSize, ret, retSize, ram);
break;
case 0x00000012:
GetModuleVersion(args, argsSize, ret, retSize, ram);
break;
default:
CLog::GetInstance().Print(LOG_NAME, "Unknown method invoked (0x%0.8X).\r\n", method);
break;
}
}
void CPadMan::SaveState(CZipArchiveWriter& archive)
{
CRegisterStateFile* registerFile = new CRegisterStateFile(STATE_PADDATA);
registerFile->SetRegister32(STATE_PADDATA_ADDRESS, m_nPadDataAddress);
registerFile->SetRegister32(STATE_PADDATA_TYPE, m_nPadDataType);
archive.InsertFile(registerFile);
}
void CPadMan::LoadState(CZipArchiveReader& archive)
{
CRegisterStateFile registerFile(*archive.BeginReadFile(STATE_PADDATA));
m_nPadDataAddress = registerFile.GetRegister32(STATE_PADDATA_ADDRESS);
m_nPadDataType = registerFile.GetRegister32(STATE_PADDATA_TYPE);
}
void CPadMan::SetButtonState(unsigned int nPadNumber, CPadListener::BUTTON nButton, bool nPressed, uint8* ram)
{
if(m_nPadDataAddress == 0) return;
ExecutePadDataFunction(bind(&CPadMan::PDF_SetButtonState, _1, nButton, nPressed),
ram + m_nPadDataAddress, PADNUM);
}
void CPadMan::Open(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
uint32 nPort = args[1];
uint32 nSlot = args[2];
uint32 nAddress = args[4];
if(nPort == 0)
{
m_nPadDataAddress = nAddress;
m_pPad = reinterpret_cast<PADDATA*>(ram + nAddress);
}
CLog::GetInstance().Print(LOG_NAME, "Opening device on port %i and slot %i.\r\n", nPort, nSlot);
ExecutePadDataFunction(&CPadMan::PDF_InitializeStruct0, ram + m_nPadDataAddress, 0);
ExecutePadDataFunction(&CPadMan::PDF_InitializeStruct1, ram + m_nPadDataAddress, 1);
//Returns 0 on error
ret[3] = 0x00000001;
}
void CPadMan::SetActuatorAlign(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(retSize >= 24);
ret[5] = 1;
}
void CPadMan::Init(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(retSize >= 0x10);
m_nPadDataType = 1;
CLog::GetInstance().Print(LOG_NAME, "Init();\r\n");
ret[3] = 1;
}
void CPadMan::GetModuleVersion(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(retSize >= 0x10);
CLog::GetInstance().Print(LOG_NAME, "GetModuleVersion();\r\n");
ret[3] = 0x00000400;
}
void CPadMan::ExecutePadDataFunction(PadDataFunction Function, void* pBase, size_t nOffset)
{
switch(m_nPadDataType)
{
case 0:
Function(&CPadDataHandler<PADDATA>(reinterpret_cast<PADDATA*>(pBase) + nOffset));
break;
case 1:
Function(&CPadDataHandler<PADDATAEX>(reinterpret_cast<PADDATAEX*>(pBase) + nOffset));
break;
}
}
void CPadMan::PDF_InitializeStruct0(CPadDataInterface* pPadData)
{
pPadData->SetFrame(0);
pPadData->SetState(6);
pPadData->SetReqState(0);
pPadData->SetLength(32);
pPadData->SetOk(1);
}
void CPadMan::PDF_InitializeStruct1(CPadDataInterface* pPadData)
{
pPadData->SetFrame(1);
pPadData->SetState(6);
pPadData->SetReqState(0);
pPadData->SetLength(32);
pPadData->SetOk(1);
//EX struct initialization
pPadData->SetModeCurId(MODE << 4);
pPadData->SetModeCurOffset(0);
pPadData->SetModeTable(0, MODE);
}
void CPadMan::PDF_SetButtonState(CPadDataInterface* pPadData, BUTTON nButton, bool nPressed)
{
uint16 nStatus;
nStatus = (pPadData->GetData(2) << 8) | (pPadData->GetData(3));
nStatus &= ~nButton;
if(!nPressed)
{
nStatus |= nButton;
}
pPadData->SetReqState(0);
pPadData->SetData(2, static_cast<uint8>(nStatus >> 8));
pPadData->SetData(3, static_cast<uint8>(nStatus >> 0));
pPadData->SetData(0, 0);
pPadData->SetData(1, MODE << 4);
}
#include <assert.h>
#include <stdio.h>
#include <boost/bind.hpp>
#include "Iop_PadMan.h"
#include "../Log.h"
#include "../RegisterStateFile.h"
using namespace Iop;
using namespace Framework;
using namespace boost;
using namespace std;
#define PADNUM (1)
#define MODE (0x4)
#define LOG_NAME "iop_padman"
#define STATE_PADDATA ("iop_padman/paddata.xml")
#define STATE_PADDATA_ADDRESS ("address")
#define STATE_PADDATA_TYPE ("type")
CPadMan::CPadMan(CSIF& sif)
{
m_nPadDataAddress = 0;
m_nPadDataType = 0;
m_pPad = NULL;
sif.RegisterModule(MODULE_ID_1, this);
sif.RegisterModule(MODULE_ID_2, this);
sif.RegisterModule(MODULE_ID_3, this);
sif.RegisterModule(MODULE_ID_4, this);
}
string CPadMan::GetId() const
{
return "padman";
}
void CPadMan::Invoke(CMIPS& context, unsigned int functionId)
{
throw runtime_error("Not implemented.");
}
void CPadMan::Invoke(uint32 method, uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(method == 1);
method = args[0];
switch(method)
{
case 0x00000001:
case 0x80000100:
Open(args, argsSize, ret, retSize, ram);
break;
case 0x00000008:
SetActuatorAlign(args, argsSize, ret, retSize, ram);
break;
case 0x00000010:
Init(args, argsSize, ret, retSize, ram);
break;
case 0x00000012:
GetModuleVersion(args, argsSize, ret, retSize, ram);
break;
default:
CLog::GetInstance().Print(LOG_NAME, "Unknown method invoked (0x%0.8X).\r\n", method);
break;
}
}
void CPadMan::SaveState(CZipArchiveWriter& archive)
{
CRegisterStateFile* registerFile = new CRegisterStateFile(STATE_PADDATA);
registerFile->SetRegister32(STATE_PADDATA_ADDRESS, m_nPadDataAddress);
registerFile->SetRegister32(STATE_PADDATA_TYPE, m_nPadDataType);
archive.InsertFile(registerFile);
}
void CPadMan::LoadState(CZipArchiveReader& archive)
{
CRegisterStateFile registerFile(*archive.BeginReadFile(STATE_PADDATA));
m_nPadDataAddress = registerFile.GetRegister32(STATE_PADDATA_ADDRESS);
m_nPadDataType = registerFile.GetRegister32(STATE_PADDATA_TYPE);
}
void CPadMan::SetButtonState(unsigned int nPadNumber, CPadListener::BUTTON nButton, bool nPressed, uint8* ram)
{
if(m_nPadDataAddress == 0) return;
ExecutePadDataFunction(bind(&CPadMan::PDF_SetButtonState, _1, nButton, nPressed),
ram + m_nPadDataAddress, PADNUM);
}
void CPadMan::Open(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
uint32 nPort = args[1];
uint32 nSlot = args[2];
uint32 nAddress = args[4];
if(nPort == 0)
{
m_nPadDataAddress = nAddress;
m_pPad = reinterpret_cast<PADDATA*>(ram + nAddress);
}
CLog::GetInstance().Print(LOG_NAME, "Opening device on port %i and slot %i.\r\n", nPort, nSlot);
ExecutePadDataFunction(&CPadMan::PDF_InitializeStruct0, ram + m_nPadDataAddress, 0);
ExecutePadDataFunction(&CPadMan::PDF_InitializeStruct1, ram + m_nPadDataAddress, 1);
//Returns 0 on error
ret[3] = 0x00000001;
}
void CPadMan::SetActuatorAlign(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(retSize >= 24);
ret[5] = 1;
}
void CPadMan::Init(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(retSize >= 0x10);
m_nPadDataType = 1;
CLog::GetInstance().Print(LOG_NAME, "Init();\r\n");
ret[3] = 1;
}
void CPadMan::GetModuleVersion(uint32* args, uint32 argsSize, uint32* ret, uint32 retSize, uint8* ram)
{
assert(retSize >= 0x10);
CLog::GetInstance().Print(LOG_NAME, "GetModuleVersion();\r\n");
ret[3] = 0x00000400;
}
void CPadMan::ExecutePadDataFunction(PadDataFunction Function, void* pBase, size_t nOffset)
{
switch(m_nPadDataType)
{
case 0:
Function(&CPadDataHandler<PADDATA>(reinterpret_cast<PADDATA*>(pBase) + nOffset));
break;
case 1:
Function(&CPadDataHandler<PADDATAEX>(reinterpret_cast<PADDATAEX*>(pBase) + nOffset));
break;
}
}
void CPadMan::PDF_InitializeStruct0(CPadDataInterface* pPadData)
{
pPadData->SetFrame(0);
pPadData->SetState(6);
pPadData->SetReqState(0);
pPadData->SetLength(32);
pPadData->SetOk(1);
}
void CPadMan::PDF_InitializeStruct1(CPadDataInterface* pPadData)
{
pPadData->SetFrame(1);
pPadData->SetState(6);
pPadData->SetReqState(0);
pPadData->SetLength(32);
pPadData->SetOk(1);
//EX struct initialization
pPadData->SetModeCurId(MODE << 4);
pPadData->SetModeCurOffset(0);
pPadData->SetModeTable(0, MODE);
}
void CPadMan::PDF_SetButtonState(CPadDataInterface* pPadData, BUTTON nButton, bool nPressed)
{
uint16 nStatus;
nStatus = (pPadData->GetData(2) << 8) | (pPadData->GetData(3));
nStatus &= ~nButton;
if(!nPressed)
{
nStatus |= nButton;
}
pPadData->SetReqState(0);
pPadData->SetData(2, static_cast<uint8>(nStatus >> 8));
pPadData->SetData(3, static_cast<uint8>(nStatus >> 0));
pPadData->SetData(0, 0);
pPadData->SetData(1, MODE << 4);
}
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeCurId(unsigned int)
{
}
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeCurOffset(unsigned int)
{
}
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeTable(unsigned int, unsigned int)
{
}

View File

@ -1,175 +1,175 @@
#ifndef _IOP_PADMAN_H_
#define _IOP_PADMAN_H_
#include "Iop_Module.h"
#include "../SIF.h"
#include "../PadListener.h"
#include <boost/function.hpp>
#include "zip/ZipArchiveWriter.h"
#include "zip/ZipArchiveReader.h"
//#define USE_EX
namespace Iop
{
class CPadMan : public CModule, public CPadListener, public CSifModule
{
public:
CPadMan(CSIF&);
std::string GetId() const;
void Invoke(CMIPS&, unsigned int);
virtual void Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*);
virtual void SaveState(CZipArchiveWriter&);
virtual void LoadState(CZipArchiveReader&);
virtual void SetButtonState(unsigned int, CPadListener::BUTTON, bool, uint8*);
enum MODULE_ID
{
MODULE_ID_1 = 0x80000100,
MODULE_ID_2 = 0x80000101,
MODULE_ID_3 = 0x8000010F,
MODULE_ID_4 = 0x0000011F,
};
private:
struct PADDATAEX
{
uint8 nData[32];
uint32 nReserved1[4];
uint8 nActuator[32];
uint16 nModeTable[4];
uint32 nFrame;
uint32 nReserved2;
uint32 nLength;
uint8 nModeOk;
uint8 nModeCurId;
uint8 nReserved3[2];
uint8 nNrOfModes;
uint8 nModeCurOffset;
uint8 nActuatorCount;
uint8 nReserved4[5];
uint8 nState;
uint8 nReqState;
uint8 nOk;
uint8 nReserved5[13];
};
struct PADDATA
{
uint32 nFrame;
uint8 nState;
uint8 nReqState;
uint8 nOk;
uint8 nReserved0;
uint8 nData[32];
uint32 nLength;
uint32 nReserved1[5];
};
class CPadDataInterface
{
public:
virtual ~CPadDataInterface() {}
virtual void SetData(unsigned int, uint8) = 0;
virtual uint8 GetData(unsigned int) = 0;
virtual void SetFrame(unsigned int) = 0;
virtual void SetState(unsigned int) = 0;
virtual void SetReqState(unsigned int) = 0;
virtual void SetLength(unsigned int) = 0;
virtual void SetOk(unsigned int) = 0;
virtual void SetModeCurId(unsigned int) = 0;
virtual void SetModeCurOffset(unsigned int) = 0;
virtual void SetModeTable(unsigned int, unsigned int) = 0;
};
template <typename T> class CPadDataHandler : public CPadDataInterface
{
public:
CPadDataHandler(void* pPtr)
{
m_pPadData = reinterpret_cast<T*>(pPtr);
}
virtual ~CPadDataHandler()
{
}
virtual uint8 GetData(unsigned int nIndex)
{
return m_pPadData->nData[nIndex];
}
virtual void SetData(unsigned int nIndex, uint8 nValue)
{
m_pPadData->nData[nIndex] = nValue;
}
virtual void SetFrame(unsigned int nValue)
{
m_pPadData->nFrame = nValue;
}
virtual void SetState(unsigned int nValue)
{
m_pPadData->nState = nValue;
}
virtual void SetReqState(unsigned int nValue)
{
m_pPadData->nReqState = nValue;
}
virtual void SetLength(unsigned int nValue)
{
m_pPadData->nLength = nValue;
}
virtual void SetOk(unsigned int nValue)
{
m_pPadData->nOk = nValue;
}
virtual void SetModeCurId(unsigned int nValue)
{
m_pPadData->nModeCurId = nValue;
}
virtual void SetModeCurOffset(unsigned int nValue)
{
m_pPadData->nModeCurOffset = nValue;
}
virtual void SetModeTable(unsigned int nIndex, unsigned int nValue)
{
m_pPadData->nModeTable[nIndex] = nValue;
}
private:
T* m_pPadData;
};
typedef boost::function< void (CPadDataInterface*) > PadDataFunction;
PADDATA* m_pPad;
unsigned int m_nPadDataType;
uint32 m_nPadDataAddress;
void Open(uint32*, uint32, uint32*, uint32, uint8*);
void SetActuatorAlign(uint32*, uint32, uint32*, uint32, uint8*);
void Init(uint32*, uint32, uint32*, uint32, uint8*);
void GetModuleVersion(uint32*, uint32, uint32*, uint32, uint8*);
void ExecutePadDataFunction(PadDataFunction, void*, size_t);
static void PDF_InitializeStruct0(CPadDataInterface*);
static void PDF_InitializeStruct1(CPadDataInterface*);
static void PDF_SetButtonState(CPadDataInterface*, BUTTON, bool);
};
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeCurId(unsigned int) { }
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeCurOffset(unsigned int) { }
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeTable(unsigned int, unsigned int) { }
}
#endif
#ifndef _IOP_PADMAN_H_
#define _IOP_PADMAN_H_
#include "Iop_Module.h"
#include "../SIF.h"
#include "../PadListener.h"
#include <boost/function.hpp>
#include "zip/ZipArchiveWriter.h"
#include "zip/ZipArchiveReader.h"
//#define USE_EX
namespace Iop
{
class CPadMan : public CModule, public CPadListener, public CSifModule
{
public:
CPadMan(CSIF&);
std::string GetId() const;
void Invoke(CMIPS&, unsigned int);
virtual void Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*);
virtual void SaveState(CZipArchiveWriter&);
virtual void LoadState(CZipArchiveReader&);
virtual void SetButtonState(unsigned int, CPadListener::BUTTON, bool, uint8*);
enum MODULE_ID
{
MODULE_ID_1 = 0x80000100,
MODULE_ID_2 = 0x80000101,
MODULE_ID_3 = 0x8000010F,
MODULE_ID_4 = 0x0000011F,
};
private:
struct PADDATAEX
{
uint8 nData[32];
uint32 nReserved1[4];
uint8 nActuator[32];
uint16 nModeTable[4];
uint32 nFrame;
uint32 nReserved2;
uint32 nLength;
uint8 nModeOk;
uint8 nModeCurId;
uint8 nReserved3[2];
uint8 nNrOfModes;
uint8 nModeCurOffset;
uint8 nActuatorCount;
uint8 nReserved4[5];
uint8 nState;
uint8 nReqState;
uint8 nOk;
uint8 nReserved5[13];
};
struct PADDATA
{
uint32 nFrame;
uint8 nState;
uint8 nReqState;
uint8 nOk;
uint8 nReserved0;
uint8 nData[32];
uint32 nLength;
uint32 nReserved1[5];
};
class CPadDataInterface
{
public:
virtual ~CPadDataInterface() {}
virtual void SetData(unsigned int, uint8) = 0;
virtual uint8 GetData(unsigned int) = 0;
virtual void SetFrame(unsigned int) = 0;
virtual void SetState(unsigned int) = 0;
virtual void SetReqState(unsigned int) = 0;
virtual void SetLength(unsigned int) = 0;
virtual void SetOk(unsigned int) = 0;
virtual void SetModeCurId(unsigned int) = 0;
virtual void SetModeCurOffset(unsigned int) = 0;
virtual void SetModeTable(unsigned int, unsigned int) = 0;
};
template <typename T> class CPadDataHandler : public CPadDataInterface
{
public:
CPadDataHandler(void* pPtr)
{
m_pPadData = reinterpret_cast<T*>(pPtr);
}
virtual ~CPadDataHandler()
{
}
virtual uint8 GetData(unsigned int nIndex)
{
return m_pPadData->nData[nIndex];
}
virtual void SetData(unsigned int nIndex, uint8 nValue)
{
m_pPadData->nData[nIndex] = nValue;
}
virtual void SetFrame(unsigned int nValue)
{
m_pPadData->nFrame = nValue;
}
virtual void SetState(unsigned int nValue)
{
m_pPadData->nState = nValue;
}
virtual void SetReqState(unsigned int nValue)
{
m_pPadData->nReqState = nValue;
}
virtual void SetLength(unsigned int nValue)
{
m_pPadData->nLength = nValue;
}
virtual void SetOk(unsigned int nValue)
{
m_pPadData->nOk = nValue;
}
virtual void SetModeCurId(unsigned int nValue)
{
m_pPadData->nModeCurId = nValue;
}
virtual void SetModeCurOffset(unsigned int nValue)
{
m_pPadData->nModeCurOffset = nValue;
}
virtual void SetModeTable(unsigned int nIndex, unsigned int nValue)
{
m_pPadData->nModeTable[nIndex] = nValue;
}
private:
T* m_pPadData;
};
typedef boost::function< void (CPadDataInterface*) > PadDataFunction;
PADDATA* m_pPad;
unsigned int m_nPadDataType;
uint32 m_nPadDataAddress;
void Open(uint32*, uint32, uint32*, uint32, uint8*);
void SetActuatorAlign(uint32*, uint32, uint32*, uint32, uint8*);
void Init(uint32*, uint32, uint32*, uint32, uint8*);
void GetModuleVersion(uint32*, uint32, uint32*, uint32, uint8*);
void ExecutePadDataFunction(PadDataFunction, void*, size_t);
static void PDF_InitializeStruct0(CPadDataInterface*);
static void PDF_InitializeStruct1(CPadDataInterface*);
static void PDF_SetButtonState(CPadDataInterface*, BUTTON, bool);
};
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeCurId(unsigned int);
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeCurOffset(unsigned int);
template <> void CPadMan::CPadDataHandler<CPadMan::PADDATA>::SetModeTable(unsigned int, unsigned int);
}
#endif