summaryrefslogtreecommitdiffhomepage
path: root/wiiyourself/History.txt
blob: 6601dc97e703e95db5d98da2df43cc459d190dc5 (plain)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
____________________________________________________________

  - WiiYourself! - native C++ Wiimote library  v1.15
    (c) gl.tter 2007-10 - http://gl.tter.org
____________________________________________________________

History:

What's new since 1.01a? - Main Features (see ReadMe & full history for details)

    + Balance Board support with automatic offset removal.

    + Seemingly solid MotionPlus support.

    + Library no longer includes project files - just add wiimote.cpp &
      header to your project (avoids all build-settings releated issues)
    
    + better MinGW support:  (thanks Elmo)
      adds functional _ASSERT/TRACE/WARN/DEEP_TRACE macros
          non-MSYS dependent build option via 'make_mingw.bat'.
          Demo builds & works under MinGW.
    
    + new Python wrapper (by Robert Xiao, see 'Python' folder for details)
    
    + library now compiles on Borland (thanks Griff - demo not tested).
    
    + many fixes, connections should be more reliable.
    
    + join my mailing list to give feedback, share ideas & stay informed:
        http://gl.tter.org/mailman/listinfo/wiiyourself_gl.tter.org

1.15 Final:
    + fixed MotionPlus detection on stacks that require HID writes!
    + Balance Board corner weight values have been quartered (.Total remains
       unchanged).  The non-raw corner weight incorrectly reported 4x their
       real value.
    + Wiimote calibration info is more reliably received (it may not have
       arrived in many instances)
    + exposed a partially-unique device ID (wiimote::UniqueID).  This 64bit
       number is set during the Connect() call, and is derived from the
       device-specific calibration values.  It's therefore not guaranteed to
       be truly unique (several devices may conceivably hold the same calibration
       values).  However in practice it is likely to be unique between a
       few wiimotes, so it can be used to eg. assign a particular wiimote to the
       same player every time.
    + internal: made the HID report output queue fixed-size to remove any
                 glitches from frequent dynamic memory allocation (thanks
                 Steve).  The old STL-queue based code can still be reenabled
                 by defining USE_DYNAMIC_HIDQUEUE.

1.15 RC2:
    + added Python wrapper by Robert Xiao - you can now use WiiYourself! with
       Python! (thanks Robert)
    + hopefully fixed MotionPlus connection problems! (send report to my
       mailing list)

    + added virtual event-change notifier to the wiimote object (thanks Robert
       Xio) - works the same as external callbacks.  To use, derive your own
       class from the wiimote object and override ChangedNotifier()

    + changed the way callbacks work:
    
      in previous versions, it was OK to access the wiimote object's state
        from callbacks.  This required an internal RefreshState() call just
        before the callback function is executed - but this could then change
        the internal state unexpectedly, so values could change in polling
        loops even between the app's own RefreshState() calls.
        
      to correct this, the callback functions now get a read-only copy
       of the newest state passed in, you should only access this copy as
       state in the wiimote object is likely out-of-date.
       
      In short, the wiimote object's exposed state is now _only_ refreshed
       by the application, not by callbacks.
       
      (this also solved Motion+ connection and disabling failures).
      
    + added new change event 'CONNECTED'
    
      the demo previously used callbacks to set most of its report types, but
       it also set them once shortly after connecting the wiimote, and this could
       cause it to set the wrong one, breaking extension data.  Instead it now
       uses the CONNECTED event in the callback.  It's best to only set these
       in one place.
       
1.15 RC:
    + fixed missing Balance Board calibration values for the 34kg category
       (thanks Benjamin Lassort).
    
    + fixed Wiimote disconnecting in certain scenarios (ReportType wasn't
       initialised, and this could sometimes be sent to the 'mote, causing
       it to disconnect - thanks Robert Xiao).
       
    + minor changes to support Robert Xiao's WiiYourself! Python Wrapper!
      (next release).

1.14 BETA:
	  - added new state & callback event: bBatteryDrained / BATTERY_DRAINED
	     this is sent went the wiimote signals that the batteries are nearly
	     empty.
	  - added MotionPlus extension events (ie. for extensions plugged into it):
	  	  MOTIONPLUS_EXTENSION_CONNECTED
	  	  MOTIONPLUS_EXTENSION_DISCONNECTED
	  	 wiimote::MotionPlusHasExtension()
	  	 wiimote::DisableMotionPlus()
	  	 wiimote::EnableMotionPlus()
         
         (apps can now decide if they want to disable the MotionPlus to read the
         extension instead, see demo for an example)
         
         ** however **, MotionPlus disabling isn't reliable at the moment (it
         rarely works), and so extension connected to an already enabled plus
         rarely are activated.  Could use some help on this one.
	     
1.13 BETA:
      + ** BALANCE BOARDS no longer require setting a report type! **
        there is only one type for it, and this is now set automatically.
        
      + 'At Rest' offset removal added (currently only for Balance Boards).
         this reads the current analogue sensor values after a Connect() call,
         and then subtracts them from future values, to remove any unwanted
         offsets (currently ~ +- 0-2.5kg with Balance Boards).  'raw' values
         are not affected.
         
         If the device was not at rest during Connect(), then the app can
          remove the current offsets manually via CalibrateAtRest().
          
      + ** PRELIMINARY MOTION PLUS SUPPORT! **
      
        Motion Plus does not report itself until queried, so it's currently
        queried every second.  If detected, it is activated and is reported
        like any other extension.  Note that extensions plugged into the
        MotionPlus itself can't currently be used at the same time (it's not
        known if this is even possible).  Right now you need to unplug the
        MotionPlus to use another extension (I will add some way to toggle
        the MotionPlus so that another extensions becomes available again)
        in the next release.
        
        According to this interview with the MotionPlus designers
        
        there are two gyro sensitivity modes, but this has not been reverse
        engineered yet.  Also I'm not 100% certain of the correctness of the
        values (although they seem right), or their actual scale (ie. how many
        degrees rotations per second do the float values actually represent)?
        
      + the Demo has been updated for both devices.
      + ReadMe has been updated with new relevant info.
        
1.12 BETA:
      + ** REMOVED ALL LIBRARY PROJECTS **
         instead just add wiimote.cpp to your application and include the header
         as before (this removes all build/project related-problems, like matching
         the runtime/Unicode settings etc).
      
      + Balance Board is now working (thanks to Akihiko's donation of a board!)
      + added wiimote::IsBalanceBoard() (Balance Boards are detected as wiimotes
         with a permanent BALANCE_BOARD extension).
         NOTE: Balance Boards require the IN_BUTTONS_BALANCE_BOARD report type
               (see demo).
      + changed some of the wiimote_state extension enums to ID a wider variety.
      + no more invalid acceleration values from devices that don't support it.
      + fixed some project settings.
      
1.11 BETA:
      + new way to detect extensions (supposedly works on all of them, including
         wireless Nunchuks) - only tested on stock Nunchuk.
      + longer sleep after SetReportType (may help data not being reported).

1.1 BETA:
      + beta Balance Board support!
      + better MinGW support:  (thanks Elmo)
          adds functional _ASSERT/TRACE/WARN/DEEP_TRACE macros
          non-MSYS dependent build option via 'make_mingw.bat'.
          Demo builds & works under MinGW.
      + directory reorganisation:
            - Each compiler has own project dir (VC2005/VC2005/MinGW),
              and equivialent lib/ sudir.
      + now ships with working VC2005 SP1 / VC2008 / MinGW libraries
         (and MinGW DLL).
      + library now compiles on Borland (thanks Griff) - demo may not.

1.01a: (1.01 had incorrect version defines)
      + extensions now work when already connected before Connect(),
         & also when an EXT SetReportType() is used initially.
      + ** renamed wiimote_state::IR::dot::bVisible to 'bVisible'. **
      + Disconnect() now waits for its threads to exit.
      +  made TRACE/WARN macros VC2005+ specific (as earlier VC versions don't
         support variable arg macros).
      + corrected wiimote.h Connect() comments (wiimote selection is 1-based,
         not 0-based)

1.00:
    + ** major bug fix, write buffer was abused. ** might have caused various
         problems.
    + ** added delay to EnableIR(), fixed IR init problems for those that
         had them (thanks Cameron) **.  if you had to use your own delays
         to get things to work, try removing them now.
    + wiimote_state::classic_controller::buttons::TriggerL() / R were reversed
       (thanks Vico).
    + patch & Makefile for MSYS / MinGW (thanks Dario).
    + updated ReadMe.

0.99b:
    + added support for the Guitar Hero controller (thanks Morgan).
       It's just a Classic Controller with a different ID and is read the same,
       but can be differentiated via wiimote_state::extension_type::CLASSIC_GUITAR.

0.96b:
    + fix ClassicButtonNameFromBit[]
    + fix WIIYOURSELF_VERSION_MINOR2

0.95b:
    + Classic Controller button fixes (thanks Farshid).
    + sightly longer Sleep() in Reset() - hopefully fixes some reports of
       wiimote acceleration values not working.
    
0.94b:
    + deadzones weren't working.
    
0.93b:
    + ** compiled libs are now stored in /libs **
    + ** up to 4 dots are now available in every IR mode **
    + some 'state_change_flags' weren't quite generated correctly.
    - removed 'wiimote_state::polling' flags (redundant, flags are already
       returned via RefreshState()).
    + various internal improvements
    
0.92b:
    ** Polling changes **
      - now need to call RefreshState() once before each polling pass (see
         header comments & demo). this was done to synchronise the threaded
         state updates, so that data integrity is guaranteed.
    ** Callback changes **
      - combined 'wiimote_state_changed' and 'extension_state_changed' flags
         into 'state_change_flags
      - removed 'ExtensionChangedCallback' (only a single callback is used now)
      - added 'CallbackTriggerFlags' to minimize callback overhead
       (see header comments & demo)
    + added Reset() (see header comments)
    + button mask TRIGGER is now _B
    
    Demo: removed 'wiimote2' line (debug leftover)

0.82b:
    ** code/demo failed pre-XP (HID writes require XP+).  code now detects
        HID write support dynamically. **
    + tidied code & surpressed redundant warning (or just enable C++ exceptions).
    + Improved debug output (mainly DEEP_TRACE)
    + Connect() can now take (and defaults to) 'FIRST_AVAILABLE' as the wiimote
      index (see header comments).
    + 'wiimote_sample' is now auto-cleared on construction
    + Adjusted max 'theoretical' raw IR coord values (1023x767) to largest
       actually observed, to output full 0-1 float range.
    + **Inverted** IR X float coord to match traditional 'left = 0' convention
       (raw coords unaffected for now).
    + Added state recording ability to aid state/motion analysis.  See RecordState();
    - removed RequestBatteryUpdate() (battery level is now periodically refreshed)
    - disabled ...CALIBRATION_CHANGED flags (not useful)
    
    Demo  : should now work pre-XP.
    ReadMe: added Wiimote/PC installation notes (MS stack is especially tricky).

0.81b:
    + connection loss is now detected (via failed writes)
      + ConnectionWasLost() added
    + report modes renamed for clarity.
    + Connect(): added 'force_hidwrites' (for testing only).
    + Extension connections now seem to be reliable.
    + Battery is now periodically refreshed (also used for loss detection)
    + 'BatteryRaw' was set incorrectly
    + added 'wiimote::ClassicButtonNameFromBit[]'

    + Demo   : Classic Controller data shown.
    + Demo   : IR dot sizes now reported when possible (only if extension 
               data isn't requested as they're not available then).
            
    + License: 'no harm' clause added.
    + ReadMe : added build notes etc.

0.1b:
    First release.