-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathREADME
More file actions
1430 lines (1324 loc) · 79.6 KB
/
README
File metadata and controls
1430 lines (1324 loc) · 79.6 KB
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
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
___ _ _ ___
| | | | |
___| | | ___| PS2DEV Open Source Project.
---------------------------------------------------------
Copyright 2001-2005, ps2dev - http://www.ps2dev.org
All rights reserved.
Created by Eugene Plotnikov <e-plotnikov@operamail.com>
-----------------------------------------------------------------------
Introduction
-----------------------------------------------------------------------
Simple Media System (SMS) is a result of my curiosity about Sony's Playstation2,
MIPS, DivX and MP3. My original goal was to create a simplest DivX player able
to play good resolution movies at good frame rate on the unmodded PS2 without
any extra equipment such as HDD and network adapter. Why "system"? Just because
having only a player program is not enough. Since PS2 is forced to ignore "illegal"
disks, I've took an idea of Drakonite with his UMCDR and developed my own "UMCDR".
(I called it CDDAFS). It just stores data on CD audio disk, which can be read on
(I hope) any PS2. So this is a first component of SMS. Second component is a PC
program that makes cue/bin files in order to burn such a disk. And, finally, comes
a player program itself. This system is not complete yet, but it can play DivX movies
with sound at good frame rate already. Player's base is a famous ffmpeg project.
I took just some parts of it (DivX 5XX and MP3) and made some modifications specific
to PS2 hardware. I've tested it with a couple of DivX/XviD movies with different
screen resolutions and encoding methods and it seems to be working. So, I've decided
to put all this stuff to the CVS at ps2dev in hope that it could be interesting for
PS2 enthusiasts who use it as base for their development. This "document" provides
basic info about SMS.
CDDAFS
----------------------------------------------------------------------
It's just a method of storing a data on audio CD, so PS2 hardware can authenticate
such a CD as "valid" one. Logical structure of such a CD is quite simple. Audio tracks
are "directories". Track 0 is a control track, which stores global disk information.
Following "diagram" presents a logical disk structure:
Track 0:
GUID - 16 bytes
Disk name - 64 bytes
Disk description - 512 bytes
Disk picture - 9216 bytes (48x48x4 raw RGB image)*
; then follows image table
Number of images - 2 bytes (short, little endian)*
Image 1 - 4096 bytes (32*32*4 raw RGB image)*
.......
Image N - 4096 bytes (32*32*4 raw RGB image)*
; then follows "directory" table (number of directories is number of tracks from
; CD TOC minus one)
Track name 1 - 32 bytes
Track image index 1 - 2 bytes (short, little endian, zero based)
Reserved 1 - 30 bytes (just for possible future enhancements)
Track name 2 - 32 bytes
Track image index 2 - 2 bytes (short, little endian, zero based)
Reserved 2 - 30 bytes (just for possible future enhancements)
.......
Other tracks:
; Directory entry 1
Number of files - 2 bytes (short, little endian)
File name - 32 bytes
File image index - 2 bytes (short, little endian, zero based)
Reserved - 30 bytes
Start offset - 4 bytes (physical sector relative to start sector of
the current track, int, little endian, zero based
)
File size(in bytes) - 4 bytes (int, little endian)
; Directory entry 2
; etc.
; File data
* these "pictures" and "images" are in fact RGBA raw bitmaps, so future browser
can be decorated with them;
Such a disk (without extra ECC codes) proved reliable enough in my configuration.
Source code that handles CD I/O located in CDDA.c (low level sector read operations)
and in FileContext.c (logical read operations). I've also started implementation of
"standard" I/O (STIO_xxx routines). Well, for me CDDA is enough. So anyone can
finish "standard" I/O (perhaps, using asynchronous fileXio routines from ps2sdk).
PC program
----------------------------------------------------------------------
I've called it CDXplorer. Not fully completed yet, but it does its job of
making cue/bin pair. This program is uses Win32 API, so it is not compatible with
linux (even WINE has troubles running it). I'm using Nero's Disk-At-Once/96 burning
option. It is also possible to read CDDAFS using this proggy. Just insert CDDAFS disk
in the drive and run the program. Maybe someone would like to create fs driver to
support it :)?
SMS Player
----------------------------------------------------------------------
Just a test program for now and PS2 optimized ffmpeg. No GUI. It is possible to
benchmark video/audio decoding process (I've got sometimes peak ~70 fps with
640x464 movie (~60fps is average)). I was able to play 720x528 DivX with sound
at 25fps (but in this case there're slight sound distortions on scenes with a
lot of motions (mainly "global" ones). Just watching a movie is also possible.
Modify main's source at your taste. For sound output I'm using 'audsrv' 0.75
(magnificent work of gawd).
ffmpeg modifications
----------------------------------------------------------------------
Two things here. Using IPU for colorspace conversion (interrupt driven process that
performs CSC->Display sequence for 640x464 picture in just ~4ms). This process goes
in parallel with video/audio decoding. Second, I've made a transition from planar
image format to the packed one, so video decoder produces macroblocks in IPU format.
This notable reduced data traffic between main CPU and memory. SPR is also
heavily used in conjunction with DMA transfers. This things gave ~300% performance
boost (comparing to the original ffmpeg) in video decoding. MP3 decoder is virtually
unmodified.
Things to do
----------------------------------------------------------------------
There still a lot to do. As I'm a professional programmer, I just can't do this
alone quickly. SMS is just a working skeleton of the future player. I've created it
in my own free time. The following things I'd like to do with it:
- more testing (I've tested it with just about a dozen of DivX/XviD movies);
- more optimizations (mainly for GMC decoding. I've made just an 'ad hoc' code to
show that it works. But this code is ugly and slow). QPel works, but it is
unoptimized too (just an original ffmpeg). The MP3 decoder from ffmpeg is also
almost untouched;
- better A/V synchronization. In fact there's no synchronization at all.
But because multithreading on PS2 is not preemptive it happens
"automatically" with a surprisingly good accuracy :). The only thing to
fix was initial "audio preload". I'm not sure if I made it correctly, but
it seems to be working at the moment. Realtime clock with 1ms resolution is
also implemented, so it could be used for more precise synchronization;
- creation of the GUI. In case of CDDAFS it would be just a disk browser.
There's already a base for it. There're routines to use ROM font (FONTM) and display
icons from CDDAFS disk. There're also routines to load directory/file lists.
The only thing missing is a pad management and an event loop;
- implementation of pause/stop functionality; As movie starts, there's no way back now;
- error checking (there're minimal checks only, so if, for example, press
'eject' CD button, then...a very interesting effect can be achieved :);
- btw, can somebody modify Makefile in order to make whole project more structured
(all these 'ee', 'iop' etc. directories)?
Restrictions
----------------------------------------------------------------------
- no support for interlaced movies;
- no support for non-interleaved avi files;
- only CodecID_MPEG4 support (that is DivX 5XX/XviD (I never, however, tried
these 'MP4S', 'BLZ0' etc. (what are they?)) and MP3;
- other possible restrictions due to lack of detailed knowledge about things :);
How to compile
----------------------------------------------------------------------
I'm using latest toolchain/ps2sdk from ps2dev and Win32 platform. Just 'make'.
Do not use 'old' ps2sdk (earlier than january 2005), since there's a bug in
'realloc', so program crashes immediately. In my setup I use ps2link at PS2 side
and InLink at the PC. Note also that performace depends on PS2 cache usage,
so even changing link order in Makefile can get more than 10% penalty (
Currently Makefile contains 'best' link order (I think so). Pay attention to
the location of 'audsrv.irx' (currently 'host:audsrv.irx').
How to debug
----------------------------------------------------------------------
Crazy enough, but I've made the code Win32 compatible (with exception of some
files). So, I'm using MSVC6 to debug major bugs, memory leaks and to understand
ffmpeg's code. 'printf' does debug for PS2 :);
How to make modifications
----------------------------------------------------------------------
At your taste (be careful, any alignment failure causes a crash (especially with
structures allocated dynamically)). But first compile and run existing code (the only
thing to modify is a filename in 'main.c'). To do that it's necessary to waste at least
one CD-R for CDDAFS. Use CDXplorer application to make cue/bin pair. It is possible
to copy files back from CDDAFS disk. Drag-and-drop is supported (one direction only:
to the application). Context menus are also available. Number of directories has upper
limit of 99 (only one level), and number of files is restricted by the CD capacity
(I've put a 800MB movie, for example, on the ordinary 700MB disk without any problem).
I have SCPH-30004R PAL unit, so it works at least on this model.
Modified ps2sdk code
----------------------------------------------------------------------
It could be noted that there's a lot of modified ps2sdk code here. Why?
I wanted maximum performance. For 'audsrv' for example there's an unnecessary
(I think so) calls for memcpy and FlushCache. 'libcdvd' caused strange problems
of data corruprion when SifLoadModule was called. GSkit uses SPR badly needed
for video decoding. Instead, I decode MP3 stream directly to the uncached, 64 byte
aligned memory, I'm using 64 byte aligned buffers for disk I/O, and GS kit was
modified to avoid SPR usage. Maybe I'm just a stupid person :o).
License
----------------------------------------------------------------------
For my code it is the same as for ps2sdk (AFL). For ffmpeg -
"GNU Lesser General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version" :).
Miscellaneous
----------------------------------------------------------------------
I've made this just for myself. I don't want to make any profit from it.
Anyone is free to make anything with it (according to aforementioned licenses).
If my code sucks (especially my formatting habits) - it sucks. I don't care.
I just hope that it will help PS2 enthusiasts to make their programs quicker.
I will continue slowly to make it more like a real system, but for me alone
it will take ages to finish it :).
Questions
----------------------------------------------------------------------
- by email (see beginning of file);
- using private messages at ps2dev's forums;
Thanks (in no particular order) ;o)
----------------------------------------------------------------------
- Sony for PS2 and Linux for it;
- Marcus R. Brown for discovering an exploit (without it I would never begin);
- Drakonite for UMCDR idea;
- Pixel for making an estimation of the code and for helping me out with CVS;
- J.F. for trying this out (btw. I don't know if you succeeded with it or not);
- PS2Reality team for inspiration and timer code;
- ffmpeg contributors;
- Chris "Neovanglist" Gilbert for GS and DMA code;
- gawd for 'audsrv' (virgin version was enough :));
- all others whose posts in the forums helped me in development;
Update (16-JUN-2005)
--------------------
STIO_XXX routines are implemented. Though not fully tested, but at least I was
able to play a file using 'host:file.avi' syntax. Loading goes slower than from
CDDAFS but movie plays OK. This feature can be helpful for programmers (no need
anymore to make CD :)). Well, these STIO_XXX routines call 'fioxxx' from ps2sdk,
so, alas, no hdd support. Anyone is free to replace 'fioxxx' by 'fileXioxxx' and
try it with hdd. To use 'STIO_XXX' just replace 'CDDA_InitFileContext' call by
'STIO_InitFileContext' (and remove other CDDA_XXX calls).
Update (19-JUN-2005)
--------------------
HDD support added. All requred .irx modules are loaded from memory (They reside in
SMS_Data.c (Note that data buffer is then reused by audio decompressor)).
HDD partition "SMS_Media" (FS_GROUP_COMMON) is mounted automatically. Finally fixed
ring buffers issue (the problem was main's thread priority (I thought it is 1 by default,
but 'ps2link' sets it to 64)). Now it explicitly set to 1. Changed audio decompression
buffer (I'm preparing A/V synchronization in such a way that there will be two more
queues with already decompressed audio/video frames (I'm not sure yet if it will work
at all :)). Audio preload functionality is removed (no need of it as my idea with A/V
sync will not depend on it). I don't know at the moment how USB devices work with ps2sdk,
so any help will be appreciated. Project structure is also reorganized.
Update (28-JUN-2005)
--------------------
Some MP3 bugs (typoes) fixed. New FONTM autokerning algorithm is implemented (strings look
much nicer now). 'audsrv' updated. Region autodetection code is added to the GS code.
Update (03-JUL-2005)
--------------------
A very primitive A/V syncronization added. Video output V-Blank synchronization added.
Update (15-JUL-2005)
--------------------
At last I've added a GUI and pause/stop functionality, so it looks more like a real program.
Here's short manual:
- SMS screen is divided in 3 areas: device menu at the top, file menu in the middle and
status line at the bottom;
- each area is bounded by a red rectangle with round corners;
- device menu and file menu can be activated;
- active menu is bounded by a white rectangle;
- device menu is navigated by "left" and "right" pad buttons;
- "down" pad button switches from device menu to the file menu;
- file menu is navigated by "up" and "down" pad buttons;
- "left" or "right" pad button switches from file menu to the device menu;
- active item in both menus is highlighted by semitransparent rectangle;
- selection is made by pressing "cross" pad button;
- "triangle" pad button navigates one level up (directory->parent directory->partition list)
in the file menu;
- menu items with different contexts (file/directory/partition) are represented by
different icons;
- CDDAFS disks are recognized automatially (just insert it and wait for a while);
- during playback use "select" pad button to pause, "start" to resume and "triangle"
to stop and return to the filebrowser;
- press "select" and "circle" pad buttons in the filebrowser to switch PS2 off;
That's it. Note, that during that "harsh stop action" no IOP reset, program restart etc.
is performed. So, memory and other resource leaks etc. are possible (I've tried to be
as accurate as possible but who knows ;)). No USB mass-stoarge device support, since my
only USB memory stick doesn't work with ps2sdk tests. Note also, that I've changed that
magic MAGV, MAGH and other numbers in GS.c to get nice aligned picture on my TV and TV
tuner card (SMS in NTSC mode also works there). If anyone has a problems with improperly
aligned picture - just play around with these numbers. VESA modes are not tested at all
(perhaps I'll try to play with it).
Another thing: as this become more or less complete version there could be a huge mess
with distributed versions. There are two choises here: maintain only one version or change
something to make a difference. I personally don't believe in choise 1. So, SVN will also
contain a precompiled SMS.elf (let's call it "reference executable"). There's a function
called 'GUIStub_DrawBackground' which is empty in SVN (in my case it draws a gradient
background, animation and version number (currently 1.0 Rev.2)). Different "distributors"
would implement their own "signature" by implementing aforementioned function
(its parameter gives an access to the GSContext etc.), so people will know who's
to blame ;)). Anyone is welcome to send me code modifications, so I'll update SVN.
There's still an optimization potential (GMC, MP3, for example) if someone thinks that
SMS is too slow. For audio issues, please, contact 'gawd', the creator of 'audsrv'
(32000 upsampler does not exist, for example). Better A/V sync could also be implemented
(the existing one is rather primitive (though, it works in most cases)).
There're a dosen of various DivX/XviD encoding parameters and their combinations etc.
I just could not handle them alone, sorry for that.
Update (20-JUL-2005)
--------------------
Fiexed bugs:
- movie stop action does not work always;
- movie freezes after some time when launched via LaunchElf;
- motion compenstation does not perform properly for some motion types;
New features:
- saved file browser state when selecting partition/directory;
- screen adjustments actions added:
select-R1 - move right;
select-L1 - move left;
select-R2 - move down;
select-L2 - move up;
- save configuration (select-SQUARE) action added ("mc0:/SMS" directory)
(currntly screen settings and HDD mounted partition name);
- MP3 optimization added (assembly source from BroadQ) - audio decoding
performance increased by ~30%;
- new version number - 1.1 ;);
Update (23-JUL-2005)
-------------------
- added "exit to the ps2 browser" action (select-TRIANGLE);
- tried to fix difficult-to-catch (thread stuff) "movie stop action does not work always";
- USB support added (thanks and regards to 'weltall'):
USBD.IRX is not included (licensing issues). SMS looks for it in:
- host:USBD.IRX
- mc0:/BOOT/USBD.IRX
- mc0:/PS2OSCFG/USBD.IRX
- mc0:/SYS-CONF/USBD.IRX
- mc0:/PS2MP3/USBD.IRX
- mc0:/BOOT/PS2MP3/USBD.IRX
- mc0:/SMS/USBD.IRX
*** in aforementioned order ***;
I'm using legal USBD.IRX from Playstation 2's Linux kit.
Note: there's modified usb_mass.irx integrated into SMS. I've made it in
order to get my USB flash drive (Apacer Handy Steno HT202 128MB USB2.0)
working. Hot swapping apparently works also in my case. Any remarks are
welcome. NO WARRANTY THAT USB FUNCTIONALITY WILL BEHAVE PROPERLY WITH OTHER DEVICES.
Update (31-JUL-2005)
--------------------
- another algorithm of A/V syncronization implemented;
- some bugs hopefully fixed :);
- video output V-Blank synchronization scheme changed;
Update (07-AUG-2005)
--------------------
- an attempt to fix a bug due to XviD's packed bitstream;
- translational global motion compensation routine is rewritten
using EE's MMI. I'm not sure if it will be really noticeable
but tests show that new routine is >4x faster than the original
C code;
Update (13-AUG-2005)
--------------------
- got rid of the spontaneous noise (audsrv's problem);
- "player hangs on movie stop" bug fixed (thanks to 'Mr. Worm~~' for being
patient with testing);
- got rid of "Paused" message by holding "select" button for > 200ms;
- performance slightly improved for some cases (avoiding calculations
of skipped macroblocks);
- added video mode selection at program's startup
(select-R1 for NTSC, select-R2 for PAL). Timeout is 1 second, then
(if no aforementioned pad button combinations were pressed)
program continues with default video mode (from saved configuration or
autodetected one);
Update (19-AUG-2005)
--------------------
- AC3 audio decoder added. Absolutely unoptimized yet (just an original
C code) but at least appears to be working (thanks to 'Mr. Worm~~' for
his test video clips);
- Filebrowser's font color changed to yellow (an idea of 'Mr. Worm~~' again);
- 'DSP_PutPixels8XY2' and 'DSP_PutPixels16XY2' routines are rewritten in
assembly using MMI;
- Some other changes that could be interesting only for programmers;
Update (26-AUG-2005)
--------------------
- Ronald Andersson (AKA: dlanor) has added network (host) support
(thanks and regards to him):
- ISO CD/DVD support added (thanks to 'Mr. Worm~~' for real help in testing);
- Added MPEG2 unquantizer (fixes bad video quality issues in some cases)
(this thing is to be optimized with MMI, anyone can try his (her) skills
with MIPS/EE assembly ;) (thanks to 'koki373737' for his video clips);
- Added an ability to choose between interlaced and non-interlaced video
signal at program's startup (select-R1-square - for non-interlaced NTSC
and select-R2-square for non-intrlaced PAL);
- Attempt to fix "movie dimensions must be dividable by 16" issue. I've only
tested it with height of 396 pixels, but I hope that it will work in other
cases too (thanks to 'koki373737' again for his video clips);
Update (02-SEP-2005)
--------------------
- 'usb_mass.irx' updated (thanks to 'hip203' for source code of 'LaunchElf');
- AC3 sound is made louder (thanks to 'Mr. Worm~~' for playing with it);
- slightly improved performance ("CSC - display" cycle (IPU code) is shortened
and some code is rewritten in assembly);
- removed "black bars" on the left and right sides of the picture for some movies
with "incorrect" aspect ratios;
Update (21-SEP-2005)
--------------------
- DVD video disks support added (an ability to read .avi files from DVD video disks
on "unmodded" consoles). New CDVD.IRX (supporting UDF filesystem) allows that.
Update (29-SEP-2005 "Birthday edition" :))
--------------------
- Added support for following codecs:
'DIV3', 'MP43', 'MPG3', 'DIV5', 'DIV6', 'DIV4', 'AP41', 'COL1', 'COL0';
- Slightly changed 'audsrv' (an attempt to solve spontaneous "hangings");
- Some changes in the source code to prepare OSD support etc.;
Update (07-OCT-2005)
--------------------
- Changed/rewritten 'audsrv':
- removed CDDA stuff (not used);
- reduced data traffic;
- upsamplers rewritten in assembler;
Result: improved performance -> no sound crackling during network playback;
- Volume control is implemented (up/down buttons);
- AVI demuxer changed (OpenDML support (not tested - I don't have any .avi ot that type));
- General demuxer code is redesigned (this can make life easier for programmers
who want to implement different file formats support);
Update (15-OCT-2005)
--------------------
- Fixed bug in cdvd.irx/UDF filesystem code;
- New audio upsampling routine is implemented. It employs linear interpolation
algorithm and it still works at the IOP side (it uses no division instructions).
It sould also support other sample rates (at least 32000 does work at my site);
Update (30-OCT-2005)
--------------------
- Attempt to fix misterious SifRpc/fioRead problem (decreased buffer size);
- Yet another A/V syncronization algorithm is implemented;
- Fixed a typo bug caused really bad A/V sync in some cases;
- Added movie "scrolling" actions:
- "right" pad button - "scroll" forward;
- "left" pad button - "scroll" backward;
- "cross" pad button - terminate "scrolling" and continue playing;
- "triangle" pad button - terminate "scrolling" and return to the browser;
This "scrolling" begins at 3 seconds intervals looking for closest keyframe
which is displayed (so 3 seconds is only a hint, it can become, for example,
20 or more/less actual seconds depending on keyframe locations). Pressing
"left"/"right" while "scrolling" increases/ decreases intervals by 3 seconds
(for forward "scrolling" "right" button increases interval and "left" button
decreases it, for backward "scrolling" it's the other way around). Minimum
value for the "scrolling" interval is 3 sec. Maximum is 1 min and 3 sec. If
"scrolling" reaches begin of the movie then it begins to play from the beginning.
Reaching end of the movie causes exit to the browser. Reaction time to pad
buttons depends on the media speed etc., so sometimes it's necessary to hold
buttons for a while for the response. At the beginning of "scrolling" and at the
end of it some pause can happen (flush file buffers and termination of pending
I/O requests) which again depends on the device speed. It is also possible to
"wrap" scrolling process, for example, if while "scrolling" forward "left" button
was pressed at the minimum "scrolling" interval then backward "scrolling" begins
and vise versa. Note, that during "scrolling" image distortion can occur ("square"
arifacts etc., I don't have any interest to investigate reasons for it :) ).
Anyone is free to implement more advanced seeking functionality with time scale,
"mouse" pointers etc. Current implementation permits "jumps" to arbitrary movie
location (time based), so it can be easly reused for these "advanced" actions;
- added support for second gamepad. Thanks to 'bix64' for research and
implementation;
- added very basic support for background image (skin) in the browser. Thanks to
'bix64' for research and implementation. Skin file is a DivX5xx/XviD encoded
I-Frame. It must be "mc0:SMS/skin.sms" file and it must have 640x512 dimensions;
Update (12-NOV-2005)
--------------------
- new font is introduced. It is internationalized and
there's a possibility to choose "codepages". Four "codepages" are available:
WinLatin1, WinLatin2, WinCyrillic and WinGreek.
Thanks to "Mr.Worm~~" for the cool font utility;
- SMS menu is implemented ("start" pad button) providing configuration options etc.
Thanks to "bix64" for the code, "Mr.Worm~~", "rathunter" and "HypERSoniC" for ideas;
Note on color selection: to make life easier for me :) I've made a 16 color palette
(standard CGA colors), so there's a color choice from these 16 colors. It's possible
to customize this palette by providing "mc0:SMS/SMS.pal" file. It should be a binary
file of 64 bytes length. Each color takes 4 bytes (R,G,B,A);
- Fixed small issue with "Initializing SMS..." message when there's no media
available (thanks to "jacky401" and "Mr. Worm~~" for note and research);
Update (24-DEC-2005 "Christmas edition" :))
--------------------
- subtitles support is added for .srt (SubRip) and .sub (MicroDVD) formats. Subtitle
files are recognized automatically by file extension (".srt" has precedence over
".sub") as they are located at the same place as .avi file and have the same name.
Subtitles can be switched on/off via player menu. Note that this support is rather
strict in sense that no advanced text parsing was implemented, so subtitle file must
follow specifications (for .srt refer http://www.matroska.org). In case of "Subtitle
error" message refer displayed number as line number near the place where error
condition was detected. If subtitle line is too long to fit the screen it will be
splitted (by word) in two or more lines (space character is treated as word separator).
Thanks to "BraveDog" for the research/implementation, "Mr.Worm~~" for advises
and testing and "mastaalien" for remark about long subtitle lines;
- player menu is introduced ("start" button during playback);
- multi-audio support is added (if multiple sudio streams are present in the .avi file).
Note that all audio streams have to be encoded using same codec and same codec settings,
otherwise results are unpredictable :). Language can be changed via player menu;
Thanks to "Mr.Worm~~" for sample clip;
- SMS menu is extended with new options ("circle" pad button can also be used for action
(for numeric input it reverses "scrolling" direction));
- external font support added. Following fonts can be loaded:
- mc0:SMS/ascii.mtf - contains 96 ascii characters ( 32-127)
- mc0:SMS/latin2.mtf - contains 128 latin2 characters (128-255)
- mc0:SMS/cyrillic.mtf - contains 128 cyrillic characters (128-255)
- mc0:SMS/latin1.mtf - contains 128 latin1 characters (128-255)
- mc0:SMS/greek.mft - contains 128 greek characters (128-255)
New font can be created by 'MTKFontCreator' utility (google) (I've used version 0.6.2).
During font save select "Save Mediatek Font -> 4 color comp., variable width (NEW mode)".
Min height must be set to 32. During font generation Max Width and Height parameters
(displayed on the status line) must not exceed 32. No error checks etc. are performed
by SMS here, so use it very carefully and on your own risk :). Probably .ini file
for that utility has to be adjusted on site in order to generate reduced character sets
(96 and 128 characters instead of 256). By changing that .ini file it's possible to
create virtually any character sets (ISO-8859-7, for instance);
- pan-scan display is implemented. By default SMS displays movie in letterbox mode
(widescreen movies are shown in full width). 3 pan-scan modes are available (via player
menu or "square" pad button during playback). In pan-scan mode it's possible to scroll
picture left or right using "L1"/"R1" pad buttons ("L1"+"R1" resets changes);
- "about" screen is added ("L1"+"R1"+"R2"+"L2" pad buttons in the browser);
- ps2host.irx driver is updated (fixed "DVD hang" issue on some consoles);
- fixed bug (only one file can be opened) in cdvd.irx;
- playback time OSD added ("cross" button during playback);
- auto poweroff timer added (start counting from the moment of pad button press).
"auto" mode there means "poweroff when movie ends";
- fixed bug "mounted partition saved in the configuration when there's no partition
mounted. Thanks to JuddMan for the remark;
- audio/video and subtitle/video manual synchronization added. "circle" pad button
activates OSD for it and "L2"/"R2" adjusts time delay (from -5sec to 5sec (for
subtitles from -30sec to 30sec) with 250ms interval);
- basic and primitive mp3/m3u playback support added with silly "ballsim" demo :);
- bug fixed (sceen offset adjustment settings is saved incorrectly) - thanks to
'dave_t' for the fix;
- video timeline/scrollbar added. This option is configurable and activated by "select"
pad button during playback (instead of pause). The use "left"/"right" pad buttons
to set new time offset, "start"/"cross" pad button(s) to resume playback. Thanks to
bix64 for the implementation;
- enabled support of VESA video modes: 640x480@60Hz ("select+L1" pad buttons at startup)
and 640x480@75Hz ("select+L2" pad buttons at startup). Tested only with ViewSonic VX910
TFT monitor with official Sony's cable. These modes are not selectable via SMS menu to
avoid confusions :);
- fixed bug upsampler routine ("ticking" noise with sample rates < 48KHz);
- new bugs have been "implemented" ;);
Update (31-DEC-2005 "New Year edition" :))
--------------------
- fixed "hang" bug during m3u playback (thanks to "Mr.Worm~~" for nice Spanish
music);
- fixed "subtitles are out of sync after scroll operations (using scrollbar)" bug (thanks
to "Mr.Worm~~" for the remark);
- fixed "hang on loading .sub format subtitles" bug (thanks to "LaptoniC" for the remark);
- opaque subtitles support is added (thanks to "HUB107" for the note);
- added "support" for ".SRT" and ".SUB" (capital letters) subtitles;
- slightly changed AC3 decoder to get rid of some "effects" (thanks to "firehawk" for
the research);
- removed garbage at the bottom of screen;
- added "fullscreen display" player option (thanks to "deank" for the note);
- fixed "movie jumps backward when resuming from pause using scrollbar" bug (thanks to
"Mr.Worm~~" for the remark);
Update (01-JAN-2006)
--------------------
- fixed "first letter is missing" for "sub" subtitles format bug (thanks to
"LaptoniC" and "deank" for remarks);
- fixed "SMS crashes when an unsupported file is selected" (thanks to "deank"
for the remark);
- added "save display mode (letterbox/pan-scan)" feature; (thanks to "deank"
for the remark);
Update (16-JAN-2006)
--------------------
- fixed bug in MP3 decoder - sound quality is improved (thanks to "Mr.Worm~~"
and "Voldemar_u2" for testing);
- another attempt has been made to fix hang during m3u playback/scroll;
- relaxed format interpretation for .srt subtitles. Thanks to "Voldemar_u2"
for the implementation;
Update (19-FEB-2006)
--------------------
- GS related code is rewritten from scratch (no VESA video mode support yet);
- Browser and GUI are rewritten (same look and feel, but totally different code
featuring "object oriented" desktop, so, new GUI objects can be added without
changing other parts of the application);
- Scalable fonts are implemented, so, subtitle size is adjustable now;
- Multilanguage support is implemented. Custom language strings are loaded from
mc0:/SMS/SMS.lng file (which is just a text file);
- Skin format is changed slightly, so, it's possible to create skins of arbitrary
size using updated version of "SMS Skin generator" application. Old skins are not
supported anymore. Don't use a very high resulution (> 800x600) skins, otherwise
results are not guaranteed. Note: new filename for skin is "mc0:/SMS/SMS.skn"
(for consistency with other filenames like "SMS.lng" and "SMS.pal");
- Added functionality to select custom subtitles. This works as follows: pressing
"circle" pad button while .avi file is selected activates a "mini-browser" with
.sub/.srt files found in the same directory as .avi. If there're no .sub/.srt
files found then playback begins instantly. Pressing "triangle" pad button while
in "mini-browser" cancels selection, and starts playback with default subtitle
selection algorithm (same name as .avi etc.). Pressing "cross" or "circle" button
while in "mini-browser" selects subtitle and starts playback;
- .avi files with associated subtitles are displayed using different icon;
- added a possibility to launch user defined application upon exit. There're 3
options: boot browser and 2 user defined (in SMS.lng) applications (default
are "mc0:/BOOT/BOOT.ELF" and "mc0:/B?DATA-SYSTEM/BOOT.ELF). This feature is still
experimental one, so, results are not guaranteed and the only supported media for
launched programs is memory card and CD-ROM (not tested).
(thanks to "Marcus R. Brown" for the loader code example);
- some new configuration options are added (thanks to "bix64" for IPCONFIG.DAT
"editor");
- some other "cosmetic" changes are made;
Thanks to "Mr.Worm~~" for suggestions and testing;
Update (21-FEB-2006)
--------------------
- an attempt to fix "can't browse folders" bug;
(thanks to everybody involved in this discovery);
- an attempt to fix "files on USB device are not selectable" bug;
- added possibility to decrease screen height in "display settings" ->
"advanced settings" menu (thanks to "Voldemar_u2" for suggestion);
Update (22-FEB-2006)
--------------------
- fixed "Display subtitles" checkmark issue in player menu;
- fixed error reporting issue (too long messages leave onscreen artefacts);
- changed IOP reset routine (thanks to "dlanor" for the research/note);
- disabled internal queue locks by removing -DLOCK_QUEUES macro from the
Makefile (it appears that queue locks are not needed since threads are
non-preemptive anyway);
Update (23-FEB-2006)
--------------------
- changed loader code in attempt to fix "hangings" upon exit to
user defined aplication;
Update (03-MAR-2006)
--------------------
- fixed incorrect subtitle position for multiline subtitles (thanks to
"Voldemar_u2" for the note);
- sound made louder a bit (SPU2 volume values are adjusted);
- changed character indentation;
- added separate management for image offsets in different video modes
(thanks to "Mr. Worm~~" and "Voldemar_u2" for the suggestion);
- added sound effects to the browser (for errors, usb/host mount/unmount
and file/folder actions) - rather silly, just for demonstration of some
SPU2 ADPCM decoding features;
- fixed a "crash" issue with some mp3 files (thanks to "sigmar" for the
research/note);
Update (10-MAR-2006)
--------------------
- fixed "autoload subtitles" issue. Thanks to "suram884" for the remark;
- "Dolby Digital" passthrough mode (via S/PDIF optical output) is implemented
(available through SMS Menu -> Player settings). Tested only with SoundBlaster
PC sound card and 384kb/s ac3 streams. No volume adjustment is possible in
this mode;
- fixed "Display Settings"/"TV system" menu issue (thanks to "Voldemar_u2" for
the remark);
- fixed usb device hot swapping issue (bug in "usb_mass" device driver). Thanks
to "hip203" for the research and note;
Update (16-MAR-2006)
--------------------
- Updated code for "Dolby Digital" output, so, any valid ac3 streams should be
playable now (formerly only 5 channel streams were supported)(thanks to
"lolo123" and "rathunter" for sample video clips);
- Added "play all mp3 files in the folder" functionality. It is activated by
"circle" pad button while the folder is selected in the browser. Files are
played in alphabethical order;
- USBD.IRX (free one, from ps2dev) is now integrated into SMS. No need for
"external" usb driver anymore (thanks to "dlanor" for the suggestion);
- fixed "double speed ac3 sound" issue (thanks to "shiro" for the sample video
clip);
Update (06-APR-2006)
--------------------
- Performance is improved (video decoder core is rewritten in assembler using
R5900 CPU multimedia instructions). Mainly this affects video clips encoded
with QPel/GMC options (these are kinda watchable now) though playback of
"usual" video clips also got a bit smoother;
- Some motion compensation related bugs in video decoder are fixed and new ones
are added :);
Update (10-APR-2006)
--------------------
- Fixed bug in video decoder (QPel motion compensation related). Thanks to "Crash"
for sample video clip;
- Fixed scrollbar issue in the player (on-screen garbage in some cases);
Update (27-APR-2006)
--------------------
- Updated MP3 related code to deal with LAME-encoded files (thanks to
"KanedA_PL" for the sample audio clip);
- Added "randomize playlist" and "repeat" options to the MP3 player.
Note: "repeat" mode is applicable for both "m3u" and "mp3" files;
- Implemented rather primitive "audio spectrum display" feature during
mp3 playback (8 bars for the left channel and 8 for the right one).
It's not very precise for sample rates different from 48000Hz (since
upsampling is performed on IOP side), but it just adds some fanciness
to the "flying balls";
- Slightly improved performance of the MP3 decoder (assembler
implementation of the 64-bit integer multiplication routine);
Update (10-MAY-2006)
--------------------
- Fixed "zero volume" bug in the player. Thanks to "wallacee" for the remark;
- An attempt has been made to get rid of "hangings" for "badly interleaved .avi"
(thanks to "Mr.Worm~~" for sample video clip);
- Changed subtitle selectsion logic. Now pressing "triangle" button in the
"minibrowser" cancels default subtitle selection ("dlanor's" suggestion);
- Audio spectrum is made "symmetric" ("rathunter's" suggestion);
- "Audio animation display" menu option is moved to "MP3 settings..." submenu;
- Timer code is rewritten;
Update (25-MAY-2006)
--------------------
- changed image management routines. Now SMS uses unified image format for
skin and icons. IPU is fully utilized to perform image decompression (it's
quite fast (a 640x480 test image is decompressed from 30KB to 900KB and
uploaded to GS memory in just ~8ms)). A Win32 application (pic2smi.exe) is
provided to create such an images. This application is replaced an old one
(pic2sms.exe). It's possible to adjust image quality (better quality - bigger
image size) and brightness, but default settings should work OK in most cases.
These changes resulted smaller (by ~110KB uncompressed) SMS.elf size. Note new
skin filename: SMS.smi ('i' means "image" :)) (thanks to "Mr. Worm~~" for
trying it);
- high resolution movies are performing using reduced color resolution
(dithered 16 bit), so no artefacts due to insufficient GS RAM should occur.
There's also a possibility to force desired color resolution via SMS menu
as 16 bit color resolution can improve performance a bit (less data traffic).
(thanks to "Mr. Worm~~" again for trying);
- non-interleaved .avi's are treated as "unsupported". File treated as
non-interleaved if it contains more than 256 consecutive packets belonging
to the same stream (audio, video or other);
- added function to copy selected file to HDD's current partition. Pressing
"square" pad button activates file context menu which currently has only
one item (Copy to HDD). Copy process can be terminated by "triangle" (there
can be some delay due to buffering, so press and hold "triangle" till "Stopping"
message will appear at the status line). This function is purely experimental
(just to measure device speed), so, use it on your own risk :) (files will be
overwritten without any prompt). Note also that only PS2 internal HDD is
supported;
Update (06-JUL-2006)
--------------------
- fixed "...the .srt subtitle file which is selected by entering "Select subtitles"
menu can't be loaded with .avi if they are stored in mass:..." bug. Thanks to
"magusneo" for the remark;
- added remote control support and removed gamepad support for slot 1:
* for PS2 models without built-in IR sensor AND WITH rom1:RMMAN module an external
IR sensor should be plugged into slot 1;
* for PS2 models without built-in IR sensor AND WITHOUT rom1:RMMAN module SMS looks
for mc0:/SMS/RMMAN.IRX module which is just a copy of rom1:RMMAN module from PS2
models where this module is present. An external IR sensor should be plugged into
slot 1;
* for PS2 models with built-in IR sensor an external IR sensor has no effect;
* for PS2 models without built-in IR sensor AND without rom1:RMMAN module AND
without mc0:/SMS/RMMAN.IRX module remote control support is disabled;
* Button mappings in SMS file browser:
- "Reset" - turns console off;
- "Enter" - equivalent to "cross" gamepad button;
- "Play" - equivalent to "cross" gamepad button;
- "A-B" - display about;
- "Menu" - display SMS menu;
- "Top menu" - activate device browser menu (ignored in the device browser);
- "Subtitle" - equivalent to "circle" gamepad button (ignored in the device browser);
- "Program" - equivalent to "square" gamepad button (ignored in the device browser);
- "Return" - equivalent to "triangle" gamepad button (ignored in the device browser);
* Button mappings in SMS player:
- "Pause" - pause;
- "Menu" - player menu;
- "Play" - resume;
- "Reset" - equivalent to "triangle" gamepad button;
- "Return" - equivalent to "triangle" gamepad button;
- "Stop" - equivalent to "triangle" gamepad button;
- "Scan >>" - equivalent to "right" gamepad button;
- "Scan <<" - equivalent to "left" gamepad button;
- "Display" - equivalent to "square" gamepad button;
- "Time" - equivalent to "cross" gamepad button;
- "Audio" - equivalent to "circle" gamepad button;
Note that in order to get remote control (with "external" IR sensor) working while
preserving gamepad and memory card functionalities unaffected a modified SIO2MAN
module is created (based on Marcus R. Brown code from SVN and my own disassembly
works) and integrated into SMS (source code of it can also be found in SVN).
THERE'S NO WARRANTY THAT OTHER DEVICES LIKE MULTITAP ETC. WILL WORK WITH IT.
Thanks to "Mr.Worm~~" and "Rathunter" for testing;
- added 'FMP4' fourcc recognition. Thanks to "ntt2005" for the research/note;
- added support for "simple" M3U list. Only relative paths are supported;
- updated some IOP drivers from ps2sdk;
Update (01-SEP-2006)
--------------------
- DTV 480p video mode support added. Note: not tested here;
- added menu option to configure controller port 2. There're 3 options:
- gamepad: remote control is disabled and controller port 2 is configured
for gamepad;
- remote control: controller port 2 is configured for the official remote control
with external IR sensor plugged into controller slot 2;
- none: controller port 2 is disabled and support for the official remote control
with built-in IR sensor is enabled;
Notes: second option will appear only if there's no rom1:RMMAN2 module;
- added brightness control to the player. Use 'L2' gamepad button to decrease
brightness and 'R2' to increase it;
- added high precision mode to the MP3 decoder. Sound appears better in this mode but
it's more demanding in computational sense. This mode is always on for audio files
and it's selectable for video files via SMS menu;
- fixed cdvd driver (ISO9660:1999 mode). Thanks to 'Voldemar_U2' for the research and
implementation;
- added support for arabic subtitles. Activated by
"SMS menu->Player Settings->Subtitle Alignment->right" option. I'm not sure if I did
it correctly (original strings are reversed and displayed right aligned), so any
comments are welcome. Thanks to 'ALI' for explanations;
- updated USB drivers;
- network drivers are slightly optimized resulting a bit faster network transactions
(I've got ~690KB/s while transferring a video file to the hard disk);
Update (20-SEP-2006)
--------------------
- fixed "image flicker" in DTV 480P video mode (thanks to "jacky401" for the
note);
- hopefully fixed SMS crash if pause or menu is activated at the beginning of playback;
- 2 VESA video modes (640x480@60Hz and 640x480@75Hz) are added;
- changed logical screen width in DTV480p mode from 640 to 720 (I'm not sure if this is
correct or not);
- this update uses VU0 unit to compute IDCT for intra macroblocks in micro mode, so,
there's some performance gain in video decoding (~6%);
- there're also some experiments with thread priorities in the player, so there's no
warranty that this1 thing will not hang during playback :);
Update (16-OCT-2006)
--------------------
- new MPEG audio decoder code. Fast (~40% faster than low precision one in the previous
version), precise (uses floating point calculations) and supports MPEG 1.0 layers 1, 2
and 3. For calculations VU0 (macro and micro modes) and VU1 (micro mode) are used;
Note: layer 1 audio is not tested as I couldn't find any files encoded in this format.
Thanks to 'mpg123' project creators/maintainers for the source code;
- 'ffgriever''s code (.txt subtitles) is integrated (thanks to him (her) for adding some
code into this maze :));
- brighness control is updated a bit (if maximum is selected then a fixed value of 32 is
added to each color component to make the whole image "brighter");
- some other internal changes (an attempt to eliminate "choppy playback" at the beginning
of the movie playback (this can result longer pause at movie startup and during scrolling);
Update (20-OCT-2006)
--------------------
- fixed "bad sound from mp3 joint-stereo audio" bug
(thanks to lee99 for the sample clip);
- fixed ".avi files with 'txts' chunk detected as mp3" bug
(thanks to 'Z-Saber' for the sample clip);
- added possibility to playback .avi files with mp1/mp2 audio;
(thanks to 'vitaliyfx' for the sample clip);
- added 'page-up/page-down' actions to the filebrowser (L1/L2 pad buttons);
- added '.mpa/.mp2' media filter to the filebroser;
- there's another guess about 480p mode;
- fixed 'SMS hangs when resumed from pause' bug;
(thans to 'spkleader' for the note);
- fixed incorrect integration 'ffgriever''s code (.txt subtitles);
Update (24-OCT-2006)
--------------------
- fixed bugs related to mp3 sound glitches and m3u crashes;
(thanks to 'lee99' for notes, patience and music);
Update (04-DEC-2006)
--------------------
- network driver is optimized further (host->hdd transfer rate is
about 860 KB/s here and raw download speed is about 900KB/s);
- new data packet management -> the application might be unstable,
since it was not tested a lot;
- sound driver is updated a bit;
- widescreen code of 'hjx' is integrated;
- added dynamic scrollbar scale (L1/R1 padd buttons during scroll);
Update (09-DEC-2006)
--------------------
- fixed "dynamic scrollbar scale" issue (thanks to 'peterdcrees' for
the remark;
- speed up network driver once again a tiny bit (almost 900KB/s
transfer speed to HDD here);
- changed A/V synchronization algorithm (image motions should appear
smoother);
Update (24-DEC-2006)
--------------------
- added SMB/CIFS network protocol. Tested only on Windows XP Pro (SP2)
and Linux/Debian with recent Samba distribution. Only one server
connection is supported (though driver allows two). Network transfer
speed is comparable to host: protocol (if the server supports raw data
transfer (both XP and Linux do), otherwise it will be ~30% slower).
To use this feature perform following steps:
- create SMS.smb text file in a text editor. This file must contain
exactly 5 lines in the following order:
- IP address of the SMB server (ex. 192.168.0.3);
- name of the SMB server (ex. MyServer);
- name of the PS2 (arbitrary) (ex. MyPS2);
Note: I'm not 100% sure about it, maybe this name
must be listed in 'hosts'/'lmhosts' file;
- user name used for authentication (ex. eugene);
- user password used for authentication (ex. myPassword);
Note 1: blank password is not allowed;
Note 2: - "for individuals that think that harm is occurring, or
is going to occur, to him or her"
- "for individuals that think the persecutor has the
intention to cause harm"
PASSWORD IS ONE WAY ENCRYPTED BEFORE ITS TRANSMISSION TO
THE SMB SERVER ONLY IF THE SERVER SUPPORTS SUCH A FEATURE
(at least Windows XP Pro(SP2) and Samba on Libux/Debian do
support this (please, don't consider this as advertisement));
- make sure that IP address is correct;
- make sure that SMB server name is correct;
- make sure that SMB server allows connections (i.e. review firewall/router
settings);
- make sure that user whose credentials supplied in SMS.smb has appropriate
access rights to connect to the SMB server;
- copy this file to mc0:/SMS folder;
- start SMS; If 'autostart network' option is active, then
deactivate it, save settings and restart SMS;
- goto SMS menu -> Device settings;
- select SMB/CIFS network protocol;
- start network support;
New device icon shall appear as soon as connection to the server is
established (or error message if there's a problem with authentication
etc.). Normally this should occur in 0-10 seconds. There's no need to
start SMB server before SMS, as connection is made automatically (SMS tries
to establish connection to the server approximately each 5-10 seconds).
It's possible to shut down SMB server while SMS browser is active. In this
case SMB device icon will disappear and connection attempts are resumed again.
This can however cause hang, so use this functionaliy at your own risk;
In case of problems use 'ethereal'/'wireshark' software to trace activity on
the server's TCP port 139. New SMB device is browseable starting from share
level (note that shares with '$' suffix in their name (like 'C$', 'ADMIN$'
etc.) are explicitly disabled, so they won't ever appear in the file browser);
- increased packet buffer size in attempt to avoid audio.video 'stutter'
(this results longer delays at startup and during scrolling);
- changed '-' and '_' character indentation to prevent overlapping
(thanks to 'shassino' for the remark);
- added UTF8 subtitles support (thank to 'Npl' for the implementation);
Update (05-JAN-2007)
--------------------
- fixed crash issue with QPel-encoded clips. Thanks to 'darkangel84' for
the sample clip;
- improved performance of the network driver (data transfer rate reached
about 1.6MB/s here);
Update (11-02-2007)
--------------------
- fixed directory listing bug for DVD-Video disks. Thanks to 'phillyrider807'
for the remarks;
- AC3 decoder is optimized a bit with "famous" R5900 assembler :) and a bug
in (random crash) it fixed;
- an attempt to fix scrollbar issues;
- fixed network driver bug (random data corruption). Thanks to 'user112' for
the report/research;
- updated USB driver;
- fixed incorrect subtitle line splitting. Thank to 'rainrix' for the note
and sample subtitle file;
- first attempt to support MPEG1/2 video (program streams only). Not scrollable,
so only 'pause'/'resume' actions are available (in future it can be implemented).
Programmers can find it interesting as it fully uses PS2 hardware (IPU, MMI,
scratchpad RAM with doublebuffering) for decoding. Interlaced MPEG2 video is
supported (both frame/field encoding). CSS decryption is not supported. There might
be bigger delays while loading individual mp3 files as program tries to detect
file format automatically and mpeg1/2 and mp3 streams have no real headers to judge
with 100% accuracy about the format. MPEG program streams without (or unsupported)
video or/and audio might be incorrectly treated as mp3 (with a lot of noise), so
don't damage your ears :). There's no "official" support of VCD as I don't have any
(and no modchip here). Playback of .VOB files is not really supported either as
they don't contain proper information about clip boundaries (I think that one comes
from .IFO files). I've tested this stuff here only with some mpeg1 files downloaded
via eMule and mpeg2 files recorded by Hauppauge WinTV PVR-350 PCI card on PC;
- updated SMB/CIFS driver in attempt to get it working with "cheap" NAS devices.
Syntax of 'SMS.smb' file is relaxed, so username and password can be omitted.
I've tested it here with Conceptronic CHD3LAN network HDD (DON'T EVER THINK TO BUY
THIS ONE UNLESS YOU FEEL OK TO UPDATE ITS FIRMWARE as it shipped here with crappiest
one I've ever seen (though after update (quite a process I must admit) it performs quite
OK (to say nothing of the jet sound from its fan which I've just cut off (invalidating
warranty thus) :D))). Note that password protected shares are not supported;
- presumably fixed a bug in GMC calculations;
Update (16-02-2007)
--------------------
- presumably fixed screwed MP3 code (random 'blips' while playing playlists)
(thanks to 'lee99' and 'gukid' for the notes);
Update (23-02-2007)
--------------------
- implemented "scrolling" functionality for mpeg1/2 clips;
- fixed "freeze on video clip end" issue. Thanks to 'lee99' for the sample clip;
- fixed quite serious bug related to mpeg-4 code (crash in flames). Big thanks
to 'user112' for the research and sample clip;
Update (18-03-2007)
--------------------
- fixed "short freeze" issue during back scrolling;
- fixed confusing GUI behavior during device hotplugging while in SMS menu;
- fixed corrupted video in some .avi files (QPel+AC3);
- presumably fixed freeze issue with .avi files while loading index;
- new VU IDCT microprogram (smaller and faster, so all VU microprograms are
squeezed now in 4KB VU0 micro memory, leaving VU1 free for possible future
usage (high quality colorspace conversion, for example :));
- fixed crash due to incorrectly formatted subtitles (error message
is displayed instead) (Thanks to 'gogydm' for the sample file);