diff --git a/.gitignore b/.gitignore index 74b6220..a320c3c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ */*/obj/ */bin/ */obj/ +*/*/*/bin/ +*/*/*/obj/ diff --git a/PinkConnection2-Firmware-Valve/PinkConnection2-Firmware-Valve.ino b/Arduino Firmware/PinkConnection2-Firmware-8Valve/PinkConnection2-Firmware-8Valve.ino similarity index 100% rename from PinkConnection2-Firmware-Valve/PinkConnection2-Firmware-Valve.ino rename to Arduino Firmware/PinkConnection2-Firmware-8Valve/PinkConnection2-Firmware-8Valve.ino diff --git a/PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino b/Arduino Firmware/PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino similarity index 100% rename from PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino rename to Arduino Firmware/PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino diff --git a/PinkConnection2-Firmware-Servo-HelenMitzi/PinkConnection2-Firmware-Servo-HelenMitzi.ino b/Arduino Firmware/PinkConnection2-Firmware-Servo-HelenMitzi/PinkConnection2-Firmware-Servo-HelenMitzi.ino similarity index 83% rename from PinkConnection2-Firmware-Servo-HelenMitzi/PinkConnection2-Firmware-Servo-HelenMitzi.ino rename to Arduino Firmware/PinkConnection2-Firmware-Servo-HelenMitzi/PinkConnection2-Firmware-Servo-HelenMitzi.ino index 23be133..aa12af9 100644 --- a/PinkConnection2-Firmware-Servo-HelenMitzi/PinkConnection2-Firmware-Servo-HelenMitzi.ino +++ b/Arduino Firmware/PinkConnection2-Firmware-Servo-HelenMitzi/PinkConnection2-Firmware-Servo-HelenMitzi.ino @@ -3,10 +3,10 @@ #include #include -Servo servoChannel[11]; -byte onDegrees[19] = { 45, 0, 0, 0, 0, 0, 0, 45, 135, 135, 90 , 90, 90, 90 , 90 , 90, 0, 0, 0 }; -byte offDegrees[19] = { 0, 0, 0, 0, 0, 0, 0, 90, 90 , 90 , 180, 0 , 0 , 180, 180, 0 , 0, 0, 0 }; -byte mapping[19] = { 0, 0, 0, 0, 0, 0, 0, 2 , 2 , 1 , 6 , 3 , 4 , 7 , 8 , 5 , 0, 0, 0 }; +Servo servoChannel[11]; // mouth earL earR eyelidL eyelidR eyeL eyeR headR headL headUp armUpL armUpR elbowR elbowL armTwistL armTwistR bodyTwistR bodyTwistL bodyLean +byte onDegrees[19] = { 45, 0, 0, 0, 0, 0, 0, 45, 135, 135, 90, 90, 90, 90, 90, 90, 0, 0, 0 }; +byte offDegrees[19] = { 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 180, 0, 0, 180, 180, 0 , 0, 0, 0 }; +byte mapping[19] = { 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 6, 3, 4, 7, 8, 5, 0, 0, 0 }; int byte1 = 0; int byte2 = 0; diff --git a/Arduino Firmware/ServoWorker/ServoWorker.ino b/Arduino Firmware/ServoWorker/ServoWorker.ino new file mode 100644 index 0000000..d74c247 --- /dev/null +++ b/Arduino Firmware/ServoWorker/ServoWorker.ino @@ -0,0 +1,18 @@ +// tp1sm + +#include + +Servo servoChannel; + +void setup() +{ + servoChannel.attach(2); +} + +void loop() +{ + servoChannel.write(0); + delay(1000); + servoChannel.write(180); + delay(1000); +} diff --git a/Bit Mappings.md b/Bit Mappings.md new file mode 100644 index 0000000..8f8d6d8 --- /dev/null +++ b/Bit Mappings.md @@ -0,0 +1,238 @@ +# PINKCONNECTION2 Bit Mappings + +This information was sourced from Cheese-E-Pedia, the Showbiz Pizza Cyberstar Install Manual, and the Chuck E. Cheese 2-Stage Install Manual. + +## RAE/3 stage + +### Rolfe Dewolfe & Earl Schmerle/Chuck E. Cheese + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | +| Mouth | 1 | 1 | 1 | 1-1 | TB1 1-2 H1 | No | +| Left Ear | 2 | 2 | 9 | 1-9 | | | +| Right Ear | 3 | 3 | 10 | 1-10 | | | +| Left Eyelid | 4 | 4 | 2 | 1-2 | TB1 11-12 H1 | Yes | +| Right Eyelid | 5 | 5 | 3 | 1-3 | | | +| Eyes Left | 6 | 6 | 4 | 1-4 | TB1 15-16 H1 | No | +| Eyes Right | 7 | 7 | 5 | 1-5 | TB1 9-10 H1 | No | +| Head Left | 8 | 8 | 6 | 1-6 | TB1 3-4 H1 | No | +| Head Right | 9 | 9 | 7 | 1-7 | TB1 5-6 H1 | No | +| Head Up | 10 | 10 | 8 | 1-8 | TB1 7-8 H1 | Yes | +| Left Arm Up | 11 | 11 | 11 | 1-11 | | | +| Left Arm Twist | 12 | 12 | 12 | 1-12 | | | +| Left Elbow | 13 | 13 | 13 | 1-13 | | | +| Right Arm Up | 14 | 14 | 17 | 1-17 | | | +| Right Arm Twist | 15 | 15 | 18 | 1-18 | | | +| Right Elbow | 16 | 16 | 19 | 1-19 | TB1 13-14 H1 | No | +| Body Left | 17 | 17 | 14 | 1-14 | | | +| Body Right | 18 | 18 | 15 | 1-15 | | | +| Body Lean | 19 | 19 | 16 | 1-16 | | | +| Earl Head Tilt | 20 | 20 | 20 | 1-20 | | | +| Earl Mouth | 21 | 21 | 36 | 1-36 | | | +| Earl Eyebrow | 22 | 22 | 37 | 1-37 | | | + +Earl's movements were removed during Concept Unification. + +### Mitzi Mozzarella/Helen Henny + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | +| Mouth | 1 | 23 | 185 | 2-35 | TB1 1-2 H5 | No | +| Left Ear | 2 | 24 | 176 | 2-26 | | | +| Right Ear | 3 | 25 | 177 | 2-27 | | | +| Left Eyelid | 4 | 26 | 181 | 2-31 | TB1 11-12 H5 | Yes | +| Right Eyelid | 5 | 27 | 182 | 2-32 | | | +| Eyes Left | 6 | 28 | 183 | 2-33 | TB1 15-16 H5 | No | +| Eyes Right | 7 | 29 | 184 | 2-34 | TB1 9-10 H5 | No | +| Head Left | 8 | 30 | 178 | 2-28 | TB1 3-4 H5 | No | +| Head Right | 9 | 31 | 179 | 2-29 | TB1 5-6 H5 | No | +| Head Up | 10 | 32 | 180 | 2-30 | TB1 7-8 H5 | Yes | +| Left Arm Up | 11 | 33 | 173 | 2-23 | | | +| Left Arm Twist | 12 | 34 | 175 | 2-25 | | | +| Left Elbow | 13 | 35 | 174 | 2-24 | | | +| Right Arm Up | 14 | 36 | 168 | 2-18 | | | +| Right Arm Twist | 15 | 37 | 170 | 2-20 | | | +| Right Elbow | 16 | 38 | 169 | 2-19 | TB1 13-14 H5 | No | +| Body Left | 17 | 39 | 186 | 2-36 | | | +| Body Right | 18 | 40 | 187 | 2-37 | | | +| Body Lean | 19 | 41 | 188 | 2-38 | | | + +No movements were removed during Concept Unification. + +### Fatz Geronimo/Mr. Munch + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | +| Mouth | 1 | 42 | 45 | 1-45 | TB1 1-2 H4 | No | +| Left Eyelid | 2 | 43 | 41 | 1-41 | TB1 11-12 H4 | Yes | +| Right Eyelid | 3 | 44 | 42 | 1-42 | | | +| Eyes Left | 4 | 45 | 43 | 1-43 | TB1 15-16 H4 | No | +| Eyes Right | 5 | 46 | 44 | 1-44 | TB1 9-10 H4 | No | +| Head Left | 6 | 47 | 54 | 1-54 | TB1 3-4 H4 | No | +| Head Right | 7 | 48 | 55 | 1-55 | TB1 5-6 H4 | No | +| Head Tilt Left | 8 | 49 | 51 | 1-51 | | | +| Head Tilt Right | 9 | 50 | 52 | 1-52 | | | +| Head Up | 10 | 51 | 53 | 1-53 | | | +| Left Arm Swing | 11 | 52 | 57 | 1-57 | | | +| Left Elbow | 12 | 53 | 59 | 1-59 | TB1 7-8 H4 | Yes | +| Right Arm Swing | 13 | 54 | 58 | 1-58 | TB1 13-14 H4 | Yes | +| Right Elbow | 14 | 55 | 60 | 1-60 | | | +| Foot Tap | 15 | 56 | 61 | 1-61 | | | +| Body Lean | 16 | 57 | 62 | 1-62 | | | + +No movements were removed during Concept Unification. + +### Beach Bear/Jasper T. Jowls + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------------------- | ------------ | +| Mouth | 1 | 58 | 166 | 2-16 | TB1 1-2 H2 | No | +| Left Eyelid | 2 | 59 | 151 | 2-1 | TB1 11-12 H2 | Yes | +| Right Eyelid | 3 | 60 | 152 | 2-2 | | | +| Eyes Cross | 4 | 61 | 153 | 2-3 | | | +| Head Left | 5 | 62 | 156 | 2-6 | TB1 3-4 H2 & TB1 15-16 H2 | No | +| Head Right | 6 | 63 | 157 | 2-7 | TB1 5-6 H2 & TB1 9-10 H2 | No | +| Head Up | 7 | 64 | 158 | 2-8 | TB1 7-8 H2 | Yes | +| Right Arm Raise | 8 | 65 | 161 | 2-11 | | | +| Right Arm Twist | 9 | 66 | 162 | 2-12 | | | +| Right Elbow | 10 | 67 | 163 | 2-13 | TB1 13-14 H2 | No | +| Right Wrist | 11 | 68 | 164 | 2-14 | | | +| Left Hand Slide | 12 | 69 | 154 | 2-4 | | | +| Guitar Raise | 13 | 70 | 155 | 2-5 | | | +| Left Leg Kick | 14 | 71 | 159 | 2-9 | | | +| Right Leg Kick | 15 | 72 | 160 | 2-10 | | | +| Body Lean | 16 | 73 | 165 | 2-15 | | | + +No movements were removed during Concept Unification. + +### Dook Larue/Pasqually + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | +| Mouth | 1 | 74 | 30 | 1-30 | TB1 1-2 H3 | No | +| Left Ear | 2 | 75 | 23 | 1-23 | | | +| Right Ear | 3 | 76 | 24 | 1-24 | | | +| Left Eyelid | 4 | 77 | 26 | 1-26 | TB1 11-12 H3 | Yes | +| Right Eyelid | 5 | 78 | 27 | 1-27 | | | +| Eyes Left | 6 | 79 | 28 | 1-28 | TB1 15-16 H3 | No | +| Eyes Right | 7 | 80 | 29 | 1-29 | TB1 9-10 H3 | No | +| Head Left | 8 | 81 | 25 | 1-25 | TB1 3-4 H3 | No | +| Head Right | 9 | 82 | 21 | 1-21 | TB1 5-6 H3 | No | +| Head Up | 10 | 83 | 22 | 1-22 | | | +| Left Arm Swing | 11 | 84 | 33 | 1-33 | | | +| Left Elbow | 12 | 85 | 35 | 1-35 | TB1 7-8 H3 | Yes | +| Right Arm Swing | 13 | 86 | 34 | 1-34 | | | +| Right Elbow | 14 | 87 | 31 | 1-31 | TB1 13-14 H3 | Yes | +| Hi-Hat | 15 | 88 | 32 | 1-32 | | | +| Kick Drum | 16 | 89 | 63 | 1-63 | | | +| Body Lean | 17 | 90 | 64 | 1-64 | | | + +Ear movements and Kick Drum were removed during Concept Unification. + +### Billy Bob + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | +| Mouth | 1 | 91 | 196 | 2-46 | +| Left Eyelid | 2 | 92 | 197 | 2-47 | +| Right Eyelid | 3 | 93 | 198 | 2-48 | +| Eyes Left | 4 | 94 | 199 | 2-49 | +| Eyes Right | 5 | 95 | 200 | 2-50 | +| Head Left | 6 | 96 | 201 | 2-51 | +| Head Right | 7 | 97 | 202 | 2-52 | +| Head Tilt Left | 8 | 98 | 203 | 2-53 | +| Head Tilt Right | 9 | 99 | 204 | 2-54 | +| Head Up | 10 | 100 | 205 | 2-55 | +| Right Arm Raise | 11 | 101 | 206 | 2-56 | +| Right Arm Twist | 12 | 102 | 207 | 2-57 | +| Right Elbow | 13 | 103 | 208 | 2-58 | +| Right Wrist | 14 | 104 | 209 | 2-59 | +| Left Hand Slide | 15 | 105 | 189 | 2-39 | +| Guitar Raise | 16 | 106 | 190 | 2-40 | +| Foot Tap | 17 | 107 | 194 | 2-44 | +| Body Left | 18 | 108 | 211 | 2-61 | +| Body Right | 19 | 109 | 212 | 2-62 | +| Body Lean | 20 | 110 | 213 | 2-63 | + +Entire bot was removed during Concept Unification. + +### Looney Bird/Pizzacam + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | +| --------------- | ------------------------ | ------------------ | ------------- | ----------- | +| Mouth | 1 | 111 | 167 | 2-17 | +| Left Eyelid | 2 | 112 | 191 | 2-41 | +| Right Eyelid | 3 | 113 | 192 | 2-42 | +| Eyes Cross | 4 | 114 | 193 | 2-43 | +| Head Left | 5 | 115 | 171 | 2-21 | +| Raise | 6 | 116 | 172 | 2-22 | +| Hands | 7 | 117 | 48 | 1-48 | + +Hand movement was removed during Concept Unification. + +## R12 (Road/1-Stage/2-Stage) + +### Chuck E. Cheese + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------- | ------------------------ | ------------------ | ------------- | ------------ | +| Mouth | 1 | 1 | 1 | TB1 1-2 H1 | +| Head Left | 2 | 2 | 2 | TB1 3-4 H1 | +| Head Right | 3 | 3 | 3 | TB1 5-6 H1 | +| Head Up | 4 | 4 | 4 | TB1 7-8 H1 | +| Eyes Left | 5 | 5 | 8 | TB1 15-16 H1 | +| Eyes Right | 6 | 6 | 5 | TB1 9-10 H1 | +| Eyelids | 7 | 7 | 6 | TB1 11-12 H1 | +| Right Arm | 8 | 8 | 7 | TB1 13-14 H1 | + +### Helen Henny/Guest Star + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------- | ------------------------ | ------------------ | ------------- | ------------ | +| Mouth | 1 | 9 | 65 | TB1 1-2 H5 | +| Head Left | 2 | 10 | 66 | TB1 3-4 H5 | +| Head Right | 3 | 11 | 67 | TB1 5-6 H5 | +| Head Up | 4 | 12 | 68 | TB1 7-8 H5 | +| Eyes Left | 5 | 13 | 72 | TB1 15-16 H5 | +| Eyes Right | 6 | 14 | 69 | TB1 9-10 H5 | +| Eyelids | 7 | 15 | 70 | TB1 11-12 H5 | +| Right Arm | 8 | 16 | 71 | TB1 13-14 H5 | + +### Mr. Munch + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------- | ------------------------ | ------------------ | ------------- | ------------ | +| Mouth | 1 | 17 | 49 | TB1 1-2 H4 | +| Head Left | 2 | 18 | 50 | TB1 3-4 H4 | +| Head Right | 3 | 19 | 51 | TB1 5-6 H4 | +| Eyes Left | 4 | 20 | 56 | TB1 15-16 H4 | +| Eyes Right | 5 | 21 | 53 | TB1 9-10 H4 | +| Eyelids | 6 | 22 | 54 | TB1 11-12 H4 | +| Right Arm | 7 | 23 | 55 | TB1 13-14 H4 | +| Left Arm | 8 | 24 | 52 | TB1 7-8 H4 | + +### Jasper T. Jowls + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------- | ------------------------ | ------------------ | ------------- | ------------ | +| Mouth | 1 | 25 | 17 | TB1 1-2 H2 | +| Head Left | 2 | 26 | 18 | TB1 3-4 H2 | +| Head Right | 3 | 27 | 19 | TB1 5-6 H2 | +| Head Up | 4 | 28 | 20 | TB1 7-8 H2 | +| Eyes Left | 5 | 29 | 24 | TB1 15-16 H2 | +| Eyes Right | 6 | 30 | 21 | TB1 9-10 H2 | +| Eyelids | 7 | 31 | 22 | TB1 11-12 H2 | +| Strum | 8 | 32 | 23 | TB1 13-14 H2 | + +### Pasqually + +| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------- | ------------------------ | ------------------ | ------------- | ------------ | +| Mouth | 1 | 33 | 33 | TB1 1-2 H3 | +| Head Left | 2 | 34 | 34 | TB1 3-4 H3 | +| Head Right | 3 | 35 | 35 | TB1 5-6 H3 | +| Eyes Left | 4 | 36 | 40 | TB1 15-16 H3 | +| Eyes Right | 5 | 37 | 37 | TB1 9-10 H3 | +| Eyelids | 6 | 38 | 38 | TB1 11-12 H3 | +| Right Arm | 7 | 39 | 39 | TB1 13-14 H3 | +| Left Arm | 8 | 40 | 36 | TB1 7-8 H3 | diff --git a/Future Goals.md b/Future Goals.md new file mode 100644 index 0000000..55e623f --- /dev/null +++ b/Future Goals.md @@ -0,0 +1,17 @@ +# Future Goals + +## PC2Converter + + - .SHW (ProgramBlue) input format + - .3ST/.R12/.C&R (APS) input format + - Biphase (Pianocorder and Cyberstar) from tape input format (unlikely) + - Studio C from Floppy Disk input format + - UST Full Stage to Single Character Stripper + +## PC2Player + + - Make the program. + +## Firmwares + + - Send controlling computer information about the number of outputs and which character it is set up for diff --git a/MitziPlayer/INIFile.cs b/Legacy Tools/MitziPlayer/INIFile.cs similarity index 100% rename from MitziPlayer/INIFile.cs rename to Legacy Tools/MitziPlayer/INIFile.cs diff --git a/MitziPlayer/MitziPlayer.csproj b/Legacy Tools/MitziPlayer/MitziPlayer.csproj similarity index 100% rename from MitziPlayer/MitziPlayer.csproj rename to Legacy Tools/MitziPlayer/MitziPlayer.csproj diff --git a/MitziPlayer/Program.cs b/Legacy Tools/MitziPlayer/Program.cs similarity index 100% rename from MitziPlayer/Program.cs rename to Legacy Tools/MitziPlayer/Program.cs diff --git a/PC2SSTPlayer/INIFile.cs b/Legacy Tools/PC2SSTPlayer/INIFile.cs similarity index 100% rename from PC2SSTPlayer/INIFile.cs rename to Legacy Tools/PC2SSTPlayer/INIFile.cs diff --git a/PC2SSTPlayer/PC2SSTPlayer.csproj b/Legacy Tools/PC2SSTPlayer/PC2SSTPlayer.csproj similarity index 100% rename from PC2SSTPlayer/PC2SSTPlayer.csproj rename to Legacy Tools/PC2SSTPlayer/PC2SSTPlayer.csproj diff --git a/PC2SSTPlayer/Program.cs b/Legacy Tools/PC2SSTPlayer/Program.cs similarity index 100% rename from PC2SSTPlayer/Program.cs rename to Legacy Tools/PC2SSTPlayer/Program.cs diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Info.plist b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Info.plist similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Info.plist rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Info.plist diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj b/Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj similarity index 100% rename from PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj rename to Legacy Tools/PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj diff --git a/PinkConnection2-TestApp/build_linux.sh b/Legacy Tools/PinkConnection2-TestApp/build_linux.sh similarity index 100% rename from PinkConnection2-TestApp/build_linux.sh rename to Legacy Tools/PinkConnection2-TestApp/build_linux.sh diff --git a/PinkConnection2-TestApp/build_mac.sh b/Legacy Tools/PinkConnection2-TestApp/build_mac.sh similarity index 100% rename from PinkConnection2-TestApp/build_mac.sh rename to Legacy Tools/PinkConnection2-TestApp/build_mac.sh diff --git a/PinkConnection2-TestApp/build_windows.bat b/Legacy Tools/PinkConnection2-TestApp/build_windows.bat similarity index 100% rename from PinkConnection2-TestApp/build_windows.bat rename to Legacy Tools/PinkConnection2-TestApp/build_windows.bat diff --git a/Legacy Tools/README.md b/Legacy Tools/README.md new file mode 100644 index 0000000..af0ba30 --- /dev/null +++ b/Legacy Tools/README.md @@ -0,0 +1 @@ +# It is recommended that you do not use these, as they do not work with the latest version of the firmware diff --git a/mitzifier/Program.cs b/Legacy Tools/mitzifier/Program.cs similarity index 100% rename from mitzifier/Program.cs rename to Legacy Tools/mitzifier/Program.cs diff --git a/mitzifier/RSHWFile.cs b/Legacy Tools/mitzifier/RSHWFile.cs similarity index 100% rename from mitzifier/RSHWFile.cs rename to Legacy Tools/mitzifier/RSHWFile.cs diff --git a/mitzifier/mitzifier.csproj b/Legacy Tools/mitzifier/mitzifier.csproj similarity index 100% rename from mitzifier/mitzifier.csproj rename to Legacy Tools/mitzifier/mitzifier.csproj diff --git a/rshw2sst/Program.cs b/Legacy Tools/rshw2sst/Program.cs similarity index 100% rename from rshw2sst/Program.cs rename to Legacy Tools/rshw2sst/Program.cs diff --git a/rshw2sst/RSHWFile.cs b/Legacy Tools/rshw2sst/RSHWFile.cs similarity index 100% rename from rshw2sst/RSHWFile.cs rename to Legacy Tools/rshw2sst/RSHWFile.cs diff --git a/rshw2sst/rshw2sst.csproj b/Legacy Tools/rshw2sst/rshw2sst.csproj similarity index 100% rename from rshw2sst/rshw2sst.csproj rename to Legacy Tools/rshw2sst/rshw2sst.csproj diff --git a/PC2Converter/PC2Converter.Gtk/PC2Converter.Gtk.csproj b/PC2Converter/PC2Converter.Gtk/PC2Converter.Gtk.csproj new file mode 100644 index 0000000..7e86dbd --- /dev/null +++ b/PC2Converter/PC2Converter.Gtk/PC2Converter.Gtk.csproj @@ -0,0 +1,17 @@ + + + + WinExe + net8.0 + true + + + + + + + + + + + diff --git a/PC2Converter/PC2Converter.Gtk/Program.cs b/PC2Converter/PC2Converter.Gtk/Program.cs new file mode 100644 index 0000000..3297df7 --- /dev/null +++ b/PC2Converter/PC2Converter.Gtk/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PC2Converter.Gtk +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Gtk).Run(new MainForm()); + } + } +} diff --git a/PC2Converter/PC2Converter.Mac/Icon.icns b/PC2Converter/PC2Converter.Mac/Icon.icns new file mode 100644 index 0000000..8f385bb Binary files /dev/null and b/PC2Converter/PC2Converter.Mac/Icon.icns differ diff --git a/PC2Converter/PC2Converter.Mac/Info.plist b/PC2Converter/PC2Converter.Mac/Info.plist new file mode 100644 index 0000000..6157797 --- /dev/null +++ b/PC2Converter/PC2Converter.Mac/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleName + PC2Converter + CFBundleIdentifier + com.example.PC2Converter + CFBundleShortVersionString + 1.0 + LSMinimumSystemVersion + 10.15 + CFBundleDevelopmentRegion + en + NSHumanReadableCopyright + + CFBundleIconFile + Icon.icns + + diff --git a/PC2Converter/PC2Converter.Mac/PC2Converter.Mac.csproj b/PC2Converter/PC2Converter.Mac/PC2Converter.Mac.csproj new file mode 100644 index 0000000..437ecec --- /dev/null +++ b/PC2Converter/PC2Converter.Mac/PC2Converter.Mac.csproj @@ -0,0 +1,18 @@ + + + + Exe + net8.0 + true + osx-x64;osx-arm64 + + + + + + + + + + + diff --git a/PC2Converter/PC2Converter.Mac/Program.cs b/PC2Converter/PC2Converter.Mac/Program.cs new file mode 100644 index 0000000..973dc3d --- /dev/null +++ b/PC2Converter/PC2Converter.Mac/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PC2Converter.Mac +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Mac64).Run(new MainForm()); + } + } +} diff --git a/PC2Converter/PC2Converter.Wpf/PC2Converter.Wpf.csproj b/PC2Converter/PC2Converter.Wpf/PC2Converter.Wpf.csproj new file mode 100644 index 0000000..32ab58c --- /dev/null +++ b/PC2Converter/PC2Converter.Wpf/PC2Converter.Wpf.csproj @@ -0,0 +1,17 @@ + + + + WinExe + net8.0-windows + true + + + + + + + + + + + diff --git a/PC2Converter/PC2Converter.Wpf/Program.cs b/PC2Converter/PC2Converter.Wpf/Program.cs new file mode 100644 index 0000000..8a370b0 --- /dev/null +++ b/PC2Converter/PC2Converter.Wpf/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PC2Converter.Wpf +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Wpf).Run(new MainForm()); + } + } +} diff --git a/PC2Converter/PC2Converter/MainForm.cs b/PC2Converter/PC2Converter/MainForm.cs new file mode 100644 index 0000000..171d3f3 --- /dev/null +++ b/PC2Converter/PC2Converter/MainForm.cs @@ -0,0 +1,448 @@ +using System; +using System.Collections; +using System.IO; + +using Eto.Forms; +using Eto.Drawing; + +namespace PC2Converter +{ + public partial class MainForm : Form + { + DropDown InputTypeSelector = new DropDown(); + DropDown OutputTypeSelector = new DropDown(); + DropDown CharacterSelector = new DropDown(); + TextBox FilePathTextBox = new TextBox(); + Button BrowseFileButton = new Button { Text = "Browse", Width = 100 }; + Button ConvertButton = new Button { Text = "Convert", Width = 100 }; + + string[] InputTypes = { "RSHW File (RR Engine)", "CSHW File (RR Engine)", "SSHW File (RR Engine)" }; + + string[] RSHWOutputTypes = { "UST 32 Bits (Single Bot RAE/3st)", "UST 8 Bits (Single Bot Cybers Rosetta)", "UST 256 Bits (Full RAE/3st)" , "UST 256 Bits (Full Cybers Rosetta)" }; + string[] CSHWOutputTypes = { "UST 8 Bits (Single Bot Cybers)", "UST 256 Bits (Full Cybers)" }; + string[] SSHWOutputTypes = { "UST 32 Bits (Single Bot Studio C)", "UST 256 Bits (Full Studio C)" }; + + string[] RAE3stCharacters = { "Rolfe/Chuck E.", "Mitzi/Helen", "Fatz/Munch", "Beach Bear/Jasper", "Dook/Pasqually", "Billy Bob", "Looney Bird/PizzaCam"}; + string[] CyberCharacters = { "Chuck E.", "Helen/Guest Star", "Munch", "Jasper", "Pasqually" }; + string[] StudioCCharacters = { "Chuck E." }; + + int[][] SC_CyberBitMapR12 = + { + /* chuck */ new int[]{ 1, 2, 3, 4, 8, 5, 6, 7 }, + /* helen */ new int[]{ 65, 66, 67, 68, 72, 69, 70, 71 }, + /* munch */ new int[]{ 49, 50, 51, 56, 53, 54, 55, 52 }, + /* jasper */ new int[]{ 17, 18, 19, 20, 24, 21, 22, 23 }, + /* pasqually */ new int[]{ 33, 34, 35, 40, 37, 38, 39, 36 } + }; + + int[][] SC_CyberBitMapRosetta = + { + /* chuck */ new int[]{ 1, 6, 7, 8, 4, 5, 2, 19 }, + /* helen */ new int[]{ 185, 178, 179, 180, 183, 184, 181, 169 }, + /* munch */ new int[]{ 45, 54, 55, 43, 44, 41, 58, 59 }, + /* jasper */ new int[]{ 166, 156, 157, 158, 156, 157, 151, 163 }, + /* pasqually */ new int[]{ 30, 25, 21, 28, 29, 26, 31, 35 } + }; + + int[] CyberRosettaInvertedBits = { 2, 8, 181, 169, 41, 59, 58, 151, 158, 26, 35, 31 }; + + int[][] SC_RAE3stBitMap = + { + /* rolfe/chuck */ new int[]{ 1, 9, 10, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 17, 18, 19, 14, 15, 16, 20, 36, 37 }, + /* mitzi/helen */ new int[]{ 185, 176, 177, 181, 182, 183, 184, 178, 179, 180, 173, 175, 174, 168, 170, 169, 186, 187, 188 }, + /* fatz/munch */ new int[]{ 45, 41, 42, 43, 44, 54, 55, 51, 52, 53, 57, 59, 58, 60, 61, 62 }, + /* beach bear/jasper */ new int[]{ 166, 151, 152, 153, 156, 157, 158, 161, 162, 163, 164, 154, 155, 159, 160, 165 }, + /* dook/pasqually */ new int[]{ 30, 23, 24, 26, 27, 28, 29, 25, 21, 22, 33, 35, 34, 31, 32, 63, 64 }, + /* billy bob */ new int[]{ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 189, 190, 194, 211, 212, 213 }, + /* looney/pizzacam */ new int[]{ 167, 191, 192, 193, 171, 172, 48 } + }; + + int[][] SC_StudioCBitMap = + { + /* chuck e. */ new int[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 } + }; + + bool FullStage = false; + const int USTVersion = 1; + + public MainForm() + { + Title = "PinkConnection2 Showtape Converter"; + Size = new Size(512, 384); + Maximizable = false; + Resizable = false; + + BrowseFileButton.Command = new Command((sender, e) => { Event_BrowseFileButton(); }); + ConvertButton.Command = new Command((sender, e) => { Event_ConvertFileButton(); }); + + InputTypeSelector.SelectedValueChanged += (sender, e) => Event_ChangeInputType(); + OutputTypeSelector.SelectedValueChanged += (sender, e) => Event_ChangeOutputType(); + + foreach (string s in InputTypes) + { + InputTypeSelector.Items.Add(s); + } + + Content = BuildLayout(); + } + + DynamicLayout BuildLayout() + { + DynamicLayout layout = new DynamicLayout { DefaultSpacing = new Size(10, 10), DefaultPadding = new Padding(5, 5, 5, 5) }; + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Input Format" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(InputTypeSelector, true); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Output Type" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(OutputTypeSelector, true); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Character" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(CharacterSelector, true); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "File to convert" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(FilePathTextBox, true); + layout.Add(BrowseFileButton); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(null, true); + layout.Add(ConvertButton); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.Add(null, true); + layout.EndVertical(); + + return layout; + } + + string MakeHeader(string showName, string outputType, string character) + { + string headerOut = $"UST,{USTVersion.ToString()},{showName.Replace(",", "_").Replace(";", "_")},"; + bool fullStage = false; + switch (outputType) + { + case "UST 32 Bits (Single Bot RAE/3st)": + headerOut += "32,"; + headerOut += "Rockafire Explosion/3-Stage (Single Character),"; + break; + case "UST 8 Bits (Single Bot Cybers Rosetta)": + headerOut += "8,"; + headerOut += "Cyberamics (Single Character),"; + break; + case "UST 256 Bits (Full RAE/3st)": + headerOut += "256,"; + headerOut += "Rockafire Explosion/3-Stage (Full Stage),"; + fullStage = true; + break; + case "UST 256 Bits (Full Cybers Rosetta)": + headerOut += "256,"; + headerOut += "Cyberamics (Full Stage),"; + fullStage = true; + break; + case "UST 8 Bits (Single Bot Cybers)": + headerOut += "8,"; + headerOut += "Cyberamics (Single Character),"; + break; + case "UST 256 Bits (Full Cybers)": + headerOut += "256,"; + headerOut += "Cyberamics (Full Stage),"; + fullStage = true; + break; + case "UST 32 Bits (Single Bot Studio C)": + headerOut += "32,"; + headerOut += "Studio C (Single Character),"; + break; + case "UST 256 Bits (Full Studio C)": + headerOut += "256,"; + headerOut += "Studio C (Full Stage),"; + fullStage = true; + break; + } + if (fullStage) headerOut += "N/A,"; + else headerOut += character + ";"; + return headerOut; + } + + void Event_ChangeInputType() + { + switch(InputTypeSelector.SelectedIndex) + { + case 0: + OutputTypeSelector.Items.Clear(); + CharacterSelector.Items.Clear(); + foreach (string s in RSHWOutputTypes) + { + OutputTypeSelector.Items.Add(s); + } + break; + case 1: + OutputTypeSelector.Items.Clear(); + CharacterSelector.Items.Clear(); + foreach (string s in CSHWOutputTypes) + { + OutputTypeSelector.Items.Add(s); + } + break; + case 2: + OutputTypeSelector.Items.Clear(); + CharacterSelector.Items.Clear(); + foreach (string s in SSHWOutputTypes) + { + OutputTypeSelector.Items.Add(s); + } + break; + } + } + + void Event_ChangeOutputType() + { + switch(InputTypeSelector.SelectedIndex) + { + case 0: + switch(OutputTypeSelector.SelectedIndex) + { + case 0: + CharacterSelector.Items.Clear(); + foreach (string s in RAE3stCharacters) + { + CharacterSelector.Items.Add(s); + } + CharacterSelector.Enabled = true; + FullStage = false; + break; + case 1: + CharacterSelector.Items.Clear(); + foreach (string s in CyberCharacters) + { + CharacterSelector.Items.Add(s); + } + CharacterSelector.Enabled = true; + FullStage = false; + break; + case 2: + CharacterSelector.Items.Clear(); + CharacterSelector.Enabled = false; + FullStage = true; + break; + case 3: + CharacterSelector.Items.Clear(); + CharacterSelector.Enabled = false; + FullStage = true; + break; + } + break; + case 1: + switch(OutputTypeSelector.SelectedIndex) + { + case 0: + CharacterSelector.Items.Clear(); + foreach (string s in CyberCharacters) + { + CharacterSelector.Items.Add(s); + } + CharacterSelector.Enabled = true; + FullStage = false; + break; + case 1: + CharacterSelector.Items.Clear(); + CharacterSelector.Enabled = false; + FullStage = true; + break; + } + break; + case 2: + switch(OutputTypeSelector.SelectedIndex) + { + case 0: + CharacterSelector.Items.Clear(); + foreach (string s in StudioCCharacters) + { + CharacterSelector.Items.Add(s); + } + CharacterSelector.Enabled = true; + FullStage = false; + break; + case 1: + CharacterSelector.Items.Clear(); + CharacterSelector.Enabled = false; + FullStage = true; + break; + } + break; + } + } + + void Event_BrowseFileButton() + { + OpenFileDialog fileDialog = new OpenFileDialog(); + string[] showFiles = { ".rshw", ".cshw", ".sshw" }; + string[] allFiles = { ".*" }; + fileDialog.Filters.Add(new FileFilter("Show Files (.rshw, .cshw, .sshw)", showFiles)); + fileDialog.Filters.Add(new FileFilter("All Files", allFiles)); + fileDialog.Title = "Select Show File."; + fileDialog.ShowDialog(this); + if (File.Exists(fileDialog.FileName)) FilePathTextBox.Text = fileDialog.FileName; + } + + void Event_ConvertFileButton() + { + // safeties + if (InputTypeSelector.SelectedIndex == -1) + { + MessageBox.Show("Fatal: You must select an input type."); + return; + } + if (OutputTypeSelector.SelectedIndex == -1) + { + MessageBox.Show("Fatal: You must select an output type."); + return; + } + if (CharacterSelector.SelectedIndex == -1 && !FullStage) + { + MessageBox.Show("Fatal: You must select a character."); + return; + } + if (FilePathTextBox.Text.Trim() == "") + { + MessageBox.Show("Fatal: You must select an input file."); + return; + } + if (!File.Exists(FilePathTextBox.Text.Trim())) + { + MessageBox.Show("Fatal: Specified input file does not exist."); + return; + } + + if (FullStage) + { + MessageBox.Show("Fatal: Full Stage mode is not supported at this time."); + return; + } + + SaveFileDialog fileDialog = new SaveFileDialog(); + fileDialog.Filters.Add(new FileFilter("UST Files (.ust)", new string[]{".ust"})); + fileDialog.Title = "Select Show File."; + fileDialog.ShowDialog(this); + if (fileDialog.FileName.Trim() == "") return; + string outFilePath = fileDialog.FileName; + + // now its actually time to start doing some shit + string inputType = InputTypeSelector.SelectedKey; + string outputType = OutputTypeSelector.SelectedKey; + string filePath = FilePathTextBox.Text.Trim(); + if (inputType == "RSHW File (RR Engine)" || inputType == "CSHW File (RR Engine)" || inputType == "SSHW File (RR Engine)") + { + // at some point there should be a warning displayed if the input type does not match the file extension but i dont feel like doing that right now + + // rshw time + RSHWFile file = RSHWLoader.Load(filePath); + if (file.signalData == null) + { + MessageBox.Show("Fatal: This file contains no signal data."); + return; + } + if (file.audioData == null) + { + MessageBox.Show("Fatal: This file contains no audio data."); + return; + } + + List rshwBits = new List(); + int countlength = 0; + if (file.signalData[0] != 0) + { + countlength = 1; + BitArray bit = new BitArray(300); + rshwBits.Add(bit); + } + for (int i = 0; i < file.signalData.Length; i++) + { + if (file.signalData[i] == 0) + { + countlength += 1; + BitArray bit = new BitArray(300); + rshwBits.Add(bit); + } + else + { + rshwBits[countlength - 1].Set(file.signalData[i], true); + } + } + + // pick which target bits to use and how many bytes the output should be + int bitsCount = 0; + int[] targetBits = { 0 }; + switch (outputType) + { + case "UST 32 Bits (Single Bot RAE/3st)": + bitsCount = 32; + targetBits = SC_RAE3stBitMap[Array.IndexOf(RAE3stCharacters, CharacterSelector.SelectedKey)]; + break; + case "UST 8 Bits (Single Bot Cybers Rosetta)": + bitsCount = 8; + targetBits = SC_CyberBitMapRosetta[Array.IndexOf(CyberCharacters, CharacterSelector.SelectedKey)]; + break; + case "UST 256 Bits (Full RAE/3st)": + bitsCount = 256; + break; + case "UST 256 Bits (Full Cybers Rosetta)": + bitsCount = 256; + break; + case "UST 8 Bits (Single Bot Cybers)": + bitsCount = 8; + targetBits = SC_CyberBitMapR12[Array.IndexOf(CyberCharacters, CharacterSelector.SelectedKey)]; + break; + case "UST 256 Bits (Full Cybers)": + bitsCount = 256; + break; + case "UST 32 Bits (Single Bot Studio C)": + bitsCount = 32; + targetBits = SC_StudioCBitMap[Array.IndexOf(StudioCCharacters, CharacterSelector.SelectedKey)]; + break; + case "UST 256 Bits (Full Studio C)": + bitsCount = 256; + break; + } + + List writeOut = new List(); + foreach (BitArray bits in rshwBits) + { + int frameByte = 0; + for (int i = 0; i < targetBits.Length; i++) + { + if (bits.Get(targetBits[i])) frameByte += 1 << i; + } + writeOut.Add(frameByte.ToString($"X{(bitsCount/4).ToString()}")); + } + File.WriteAllText(outFilePath, MakeHeader(Path.GetFileNameWithoutExtension(outFilePath), outputType, CharacterSelector.SelectedKey)+String.Join(",", writeOut.ToArray())+";"+Convert.ToBase64String(file.audioData)); + } + MessageBox.Show("Conversion complete!"); + } + } +} diff --git a/PC2Converter/PC2Converter/PC2Converter.csproj b/PC2Converter/PC2Converter/PC2Converter.csproj new file mode 100644 index 0000000..aa99079 --- /dev/null +++ b/PC2Converter/PC2Converter/PC2Converter.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + true + + + + + + + diff --git a/PC2Converter/PC2Converter/RSHWFile.cs b/PC2Converter/PC2Converter/RSHWFile.cs new file mode 100644 index 0000000..d155ddf --- /dev/null +++ b/PC2Converter/PC2Converter/RSHWFile.cs @@ -0,0 +1,31 @@ +using System.IO; +using System.Reflection; +using System.Runtime.Serialization.Formatters.Binary; + +sealed class AntiUnityBinder : System.Runtime.Serialization.SerializationBinder +{ + public override Type BindToType(string assemblyName, string typeName) + { + return Type.GetType(String.Format("RSHWFile, " + Assembly.GetExecutingAssembly().FullName)); + } +} + +[System.Serializable] +public class RSHWFile +{ + public byte[]? audioData { get; set; } + public int[]? signalData { get; set; } + public byte[]? videoData { get; set; } +} + +public class RSHWLoader +{ + public static RSHWFile Load(string path) + { + BinaryFormatter formatter = new BinaryFormatter(); + formatter.Binder = new AntiUnityBinder(); + FileStream stream = File.OpenRead(path); + return (RSHWFile)formatter.Deserialize(stream); + } +} + diff --git a/PC2Player/PC2Player.Gtk/PC2Player.Gtk.csproj b/PC2Player/PC2Player.Gtk/PC2Player.Gtk.csproj new file mode 100644 index 0000000..954d1bf --- /dev/null +++ b/PC2Player/PC2Player.Gtk/PC2Player.Gtk.csproj @@ -0,0 +1,16 @@ + + + + WinExe + net8.0 + + + + + + + + + + + diff --git a/PC2Player/PC2Player.Gtk/Program.cs b/PC2Player/PC2Player.Gtk/Program.cs new file mode 100644 index 0000000..9f64bff --- /dev/null +++ b/PC2Player/PC2Player.Gtk/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PC2Player.Gtk +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Gtk).Run(new MainForm()); + } + } +} diff --git a/PC2Player/PC2Player.Mac/Icon.icns b/PC2Player/PC2Player.Mac/Icon.icns new file mode 100644 index 0000000..8f385bb Binary files /dev/null and b/PC2Player/PC2Player.Mac/Icon.icns differ diff --git a/PC2Player/PC2Player.Mac/Info.plist b/PC2Player/PC2Player.Mac/Info.plist new file mode 100644 index 0000000..7ca4266 --- /dev/null +++ b/PC2Player/PC2Player.Mac/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleName + PC2Player + CFBundleIdentifier + com.example.PC2Player + CFBundleShortVersionString + 1.0 + LSMinimumSystemVersion + 10.15 + CFBundleDevelopmentRegion + en + NSHumanReadableCopyright + + CFBundleIconFile + Icon.icns + + diff --git a/PC2Player/PC2Player.Mac/PC2Player.Mac.csproj b/PC2Player/PC2Player.Mac/PC2Player.Mac.csproj new file mode 100644 index 0000000..f568b7d --- /dev/null +++ b/PC2Player/PC2Player.Mac/PC2Player.Mac.csproj @@ -0,0 +1,18 @@ + + + + Exe + net8.0 + + osx-x64;osx-arm64 + + + + + + + + + + + diff --git a/PC2Player/PC2Player.Mac/Program.cs b/PC2Player/PC2Player.Mac/Program.cs new file mode 100644 index 0000000..69685a0 --- /dev/null +++ b/PC2Player/PC2Player.Mac/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PC2Player.Mac +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Mac64).Run(new MainForm()); + } + } +} diff --git a/PC2Player/PC2Player.Wpf/PC2Player.Wpf.csproj b/PC2Player/PC2Player.Wpf/PC2Player.Wpf.csproj new file mode 100644 index 0000000..1acb68b --- /dev/null +++ b/PC2Player/PC2Player.Wpf/PC2Player.Wpf.csproj @@ -0,0 +1,16 @@ + + + + WinExe + net8.0-windows + + + + + + + + + + + diff --git a/PC2Player/PC2Player.Wpf/Program.cs b/PC2Player/PC2Player.Wpf/Program.cs new file mode 100644 index 0000000..4fc7a29 --- /dev/null +++ b/PC2Player/PC2Player.Wpf/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PC2Player.Wpf +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Wpf).Run(new MainForm()); + } + } +} diff --git a/PC2Player/PC2Player/MainForm.cs b/PC2Player/PC2Player/MainForm.cs new file mode 100644 index 0000000..f3bc1a3 --- /dev/null +++ b/PC2Player/PC2Player/MainForm.cs @@ -0,0 +1,57 @@ +using System; +using Eto.Forms; +using Eto.Drawing; + +namespace PC2Player +{ + public partial class MainForm : Form + { + public MainForm() + { + Title = "My Eto Form"; + MinimumSize = new Size(200, 200); + + Content = new StackLayout + { + Padding = 10, + Items = + { + "Hello World!", + // add more controls here + } + }; + + // create a few commands that can be used for the menu and toolbar + var clickMe = new Command { MenuText = "Click Me!", ToolBarText = "Click Me!" }; + clickMe.Executed += (sender, e) => MessageBox.Show(this, "I was clicked!"); + + var quitCommand = new Command { MenuText = "Quit", Shortcut = Application.Instance.CommonModifier | Keys.Q }; + quitCommand.Executed += (sender, e) => Application.Instance.Quit(); + + var aboutCommand = new Command { MenuText = "About..." }; + aboutCommand.Executed += (sender, e) => new AboutDialog().ShowDialog(this); + + // create menu + Menu = new MenuBar + { + Items = + { + // File submenu + new SubMenuItem { Text = "&File", Items = { clickMe } }, + // new SubMenuItem { Text = "&Edit", Items = { /* commands/items */ } }, + // new SubMenuItem { Text = "&View", Items = { /* commands/items */ } }, + }, + ApplicationItems = + { + // application (OS X) or file menu (others) + new ButtonMenuItem { Text = "&Preferences..." }, + }, + QuitItem = quitCommand, + AboutItem = aboutCommand + }; + + // create toolbar + ToolBar = new ToolBar { Items = { clickMe } }; + } + } +} diff --git a/PC2Player/PC2Player/PC2Player.csproj b/PC2Player/PC2Player/PC2Player.csproj new file mode 100644 index 0000000..f8e4f2a --- /dev/null +++ b/PC2Player/PC2Player/PC2Player.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + \ No newline at end of file diff --git a/ServoWorker/ServoWorker.ino b/ServoWorker/ServoWorker.ino deleted file mode 100644 index 99cd853..0000000 --- a/ServoWorker/ServoWorker.ino +++ /dev/null @@ -1,48 +0,0 @@ -// tp1sm - -#include - -Servo servoChannel[11]; - -void setup() -{ - servoChannel[0].attach(2); - servoChannel[1].attach(3); - servoChannel[2].attach(4); - servoChannel[3].attach(5); - servoChannel[4].attach(6); - servoChannel[5].attach(7); - servoChannel[6].attach(8); - servoChannel[7].attach(9); - servoChannel[8].attach(10); - //servoChannel[10].attach(5); -} - -void loop() -{ - servoChannel[0].write(0); - servoChannel[1].write(90); - servoChannel[2].write(90); - servoChannel[3].write(0); - servoChannel[4].write(0); - servoChannel[5].write(0); - servoChannel[6].write(180); - servoChannel[7].write(180); - servoChannel[8].write(180); - //servoChannel[10].write(160); - delay(500); - servoChannel[2].write(45); - //servoChannel[10].write(120); - delay(500); - servoChannel[0].write(45); - servoChannel[1].write(135); - servoChannel[2].write(135); - servoChannel[3].write(90); - servoChannel[4].write(90); - servoChannel[5].write(90); - servoChannel[6].write(90); - servoChannel[7].write(90); - servoChannel[8].write(90); - //servoChannel[10].write(135); - delay(1000); -}