Thursday, April 29, 2010

FSD 2.0 r658

Rss Reader is now in!
Current way to add feeds :
Add this to confix.xml (below )
<feeds>
      <rss>http://feeds.feedburner.com/XboxScene</rss>
      <rss>http://www.logic-sunrise.com/xml/news.xml</rss>
< /feeds>
Currently integrated in status bar, but will probably change in final release.












Equinox readded overscan feature!

Tuesday, April 27, 2010

FSD 2.0 r653

Added some nice stuff to FSD 2.0 today :
Internal indexer is now using the real marketplace data, not using that html parsing code anymore!
So indexer is now downloading : boxart, game backgrounds, screenshots, game preview video, game banner and game text info (description, genre, publisher, developer).
Also fixed most of the HTTP Downloader issue!
I added description, game genre an banner to gui. Banner was mostly hacked in and will be propered in later version.
Here how it look :






















No I didnt made that banner in mspaint :P Its really comming from market place! as well as the description!

Sunday, April 25, 2010

FSD 2.0 r643

I did finally figured out some stuff that been anoying us for a while yesterday!
There was a random freezing issue in the boot process and the game list was behaving really weird (games with no title...).
This being fixed will really change FSD 2.0 development to 2nd gear!

Another issue that i fixed yesterday is the string convertion problem : remember those gamelist screenshot with some square instead of special char?
This was caused by a bad string to wide string convertion. We were still using the code from original author, and while it work, it doesnt support special char.

Original code :
wstring strtowstr(string str)
{
     wstring s(str.begin(), str.end());
     s.assign(str.begin(),str.end());
     return s;
}

Working code :
WCHAR* strtowchar(string str)
{
     WCHAR* retVal;
     int Length = MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,retVal,0);
     retVal = new WCHAR[Length+1];
     MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,retVal,Length);
     return retVal;
}

By the way.. never call this 400 times per frame :P it will freeze the xbox! :P


Screenshot :
Cant remember if I explained this earlier : you'll notice that fps was locked at 60 mostly because at 500 we at tearing issues.


See those fancy chars? :P

Here the basic music player. Gui is in no way final. I think this is mostly a proof of concept. It does work great!


Video Player. Playing a 720p wmvhd in preview window.
 Video player playing 720p wmvhd full screen

 Playing wmvhd 1080p video. Playing works great without and issue except the fact the the ratio is messed...





Friday, April 23, 2010

Development on retail 360

Developping on a retail 360 is a real pain. The default behavior of the 360 on an unhandled exception is to freeze... just freeze... Need to cold reboot the xbox, rebuild a version that may be fixed, transfer using a stable software, test and if youre lucky your freeze is gone.

There's way to make this issue more bearable :
Define an unhandled exception filter :
LONG WINAPI UnHandleExceptionFilter(struct _EXCEPTION_POINTERS *lpExceptionInfo) {}

Then first line in you main fuction  :
SetUnhandledExceptionFilter(UnHandleExceptionFilter);

Now, instead of freezing, your UnHandleExceptionFilter method will be called, if the function return EXCEPTION_CONTINUE_EXECUTION then execution of software continue, but thread that crashed is still stopped, meaning that if your GUI thread throwed the exception , even if you ask to continue, you are pretty much screwed (can still have a network listener running). So exception are "No Continuable" : returning EXCEPTION_CONTINUE_EXECUTION on those will just rethrow another exception and may totally freeze the 360.

Our current solution is to have a XShowMessageBoxUI displayed in the filter method. The msg box have 3 options : Restart FSD, Go Back to NXE, Try to continue.
If no options are selected within 20 seconds, we restart FSD (most of the time, GUI Thread has crashed, then XShowMessageBoxUI  wont display anything).

So we dont have to reboot at every exception, but finding those are a real chore : we need to disables each module 1 by 1, trying to figure out which one cause the crash. When we found the module, we need to find what happened in the module.... makes the whole software a Debug Log Party!

One thing you can do to help pinpoint the exceptions : the struct you receive in the filter does contain an exception code (lpExceptionInfo->ExceptionRecord->ExceptionCode) but they sometime are really strange: been having a lot of EXCEPTION_BREAKPOINT... which obviously I didnt hit a breakpoint!

Those random crash are a real pain in the a** to fix... having an XDK would so much help!!

You can get our exeption handling code here :
http://tinypaste.com/260814

You'll then just need to add SetUnhandledExceptionFilter(UnHandleExceptionFilter); in your main and change the DebugMsg, Restart and BackToNxe methods!

Wednesday, April 21, 2010

XeXtractor v1.03

XeXtractor v1.03
-Added XACH and XITB support. (Now list achievements in every language possible and image file names are now the original filename) This can only be done when opening a XEX or XBDF file.
-Added XITB sample class.
-Added a file name level in xuiz extraction so not all xuiz extracted file ends up in the same folder.







































Download :
http://www.sendspace.com/file/x8t0p1

Tuesday, April 20, 2010

FSD 2.0 Current status / Release information

You guys keep asking about an eta : we have no ETA and probably wont have. Working on FSD is a hobby for all the team, so we never know much time we can put on it.

Current Status :
Its pretty hard to give an overall status... Media player is still not in there (JQE is working on this, but still not committed the code)
Recent games list still need to be totally redone. Some skin work need to be done to have a dynamic number of tabs. We still need to experiment and try to figure out how to get stock dash recently played list. If we cant do easily we'll probably just add a last time played datetime to each game and use this.
Favorites : Still need to be 100% rewritten.
Game type switching : Still need to be 100% rewritten
Copy DVD : Still need to adapt FSD 1.XX code and properly clean. Currently not working.
File Manager : Working but we want to change the way it behave (should be back to drive list instead of having to use shoulder button to switch drive)
Nand flasher : working great
About : Still need some work but will be quick.
Game List : Games are listed but not sorted. Everything still need to be plugged in (boxart, game description, preview). I think game renaming feature broke in some previous rev, will need to fix it.
Built-In Indexer : Need to add screenshots and preview movie with proper settings.
HTTP : Still having some freeze issue and need to tweakt it a bit, otherwise its working great. Need to add priorites to the download queue.
XeX extraction : Working great.
Skin Edit Mode : Working great.
Skin customisation : Working great.
RSS Reader : Still need some work.
Internal XML Reader : We're looking to change it to a SAX implementation, still need to be done.
Autoupdater : First tests are working great but still need some intensive testing.
Multilanguage : No work has been done on this yet.

Theres still lots of "Surprise" we have to experiment with and see what can be done than may imply changes in previous listed stuff.

FSD 2.0 r614

Sorry for not posting that much these days, i've been mostly working on "under the hood" features and fixing bug.

Biggest new feature i've accomplished these days is autoupdater. Current at each start, FSD will check online to see if a new version is available, download to cache, and prompt the user when download is completed. My goal is to have 2 "update channels" 1 for svn and one for final. Subscribing to the svn channel will update to every rev we post online (currently working on setting up an automatic daily svn builder).

Now, you guys saw the video... Here's some screenshot of skin customisation in r614 :

In the skin selection panel, open "Customize Skin"

It gets you to the skin customization screen. You can choose background, stage, turn off animations..

Hitting Y will get you into the skin "Edit Mode"
Hit A to Edit the current tab. First options is the tab background.
Change it to the color you prefer.
Next up is the icon color.
Then the Text and Reflection text color
And then, the reflection background color.
Changes are now applied to the current tab.
If you dont wont to customise every single tab, you can apply to current menu or to the complete dash with the push of a button
Or you can randomize every single tab!
Finally done! Saved changed and back to dash with your new tabs color!

Sunday, April 18, 2010

Team FSD official website / blog

http://www.teamfsd.com/

Official site is up and running!
SVN Log is in there as well as some official posting!

(Check out MaesterRo latest video! Pretty amazing!)

Friday, April 16, 2010

XeXtractor v1.02

XeXtractor v1.02

-Fixed with some xex (Halo 3 and Sherlock Holmes)
-Added some file type detection

Download :
http://www.sendspace.com/file/tfb41z

Thursday, April 15, 2010

XeXtractor v1.01

XeXtractor v1.01
-Fixed a know issue with some large compression window XEX (Dash.xex from 8955)
 
Download :
http://www.sendspace.com/file/eby202

XeXtractor v1.00b

*use 1.01 : http://helldoc.blogspot.com/2010/04/xextractor-v101.html*
XeXtractor v1.00b
-Fixed a small display issue with the info group


Download :
http://www.sendspace.com/file/ub2uhu

XeXtractor v1.00

XeXtractor is a generic XEX tool box. Drag a XEX in and extract the files!
*use 1.01 : http://helldoc.blogspot.com/2010/04/xextractor-v101.html*

Change log since v0.20 :
XeXtractor v1.00
-Added icons to treeview
-Allow file drag-in
-Allow "File Open With XeXtractor"
-Added info group in main view (File size, folder size, type of extraction, png preview, extract button)
-Threaded the extraction
-Included Source code for : XACH,XDBF,XEX2,XSRC,XSTR,XUI

XeXtractor v1.00 RC1 *Internal Only*:
-Added Right Click -> Extract All
-Added ability to open file on double click (will open from TEMP folder)

XeXtractor v1.00 beta *Internal Only*:
-Reworked the view (do not auto extract, display in treeview)
-Added XEX Support (Decryption/Decompression, Automatic recursion within the resources)




Browsing Gears of War 2 XEX














Browsing the Blades Dash's dash.xex













 Have fun!

Download Link :
http://www.sendspace.com/file/crzgbf

XeXtractor v1.00 RC1 Screenshots

XeXtractor v1.00 is almost ready for public! Lots of stuff added! Major feature is XEX decryption/decompression.
With a dashboard XEX file opened.

You can extract a file, a folder, or everthing! You can also double click to open the file.

With a game XEX file

Wednesday, April 14, 2010

XeXtractor v0.20

Already an update!
XeXtractor v0.20 :
-Extract XBDF files
-Convert XSTR to human readable txt file
-New sample class included : XSTR.cs XBDF.cs

XBDF :
XBDF files are ressources containers. Its basically the same as the xlast xml file but in binary format and including the images.
XSTR files are multilanguage strings map. The file name represent the language id : 1 is english, 3 is german, 4 is french...
The XeXtractor txt output of xstr convertion is just StringId - TheString

Bins folder from XBDF extraction :
Lots of file gets in there, heres the one that i currently know and what they are used for :
XACH : This is the achievement string mapping : it contain the title string id, description string id, unachived title string id, image id, gamer cred the achievment is worth and the type of achievement.
XCXT : Contextual string mapping
XPRP : Properties string mapping
XSCR : This is the xlast xml submission file (I'll include a XSCR decompression feature in future version)
XTHD : This is the game title id
XITB : This is the image name mapping, contain the image id + filename. Current XBDF extraction is not using this yet, but its using the id to figure out which kind of data it is.

Download :
http://www.sendspace.com/file/o019jr

XeXtractor v0.10

While doing the FSD2.0 XEX extraction lib, i made a pc software that do multiple operation on the xex. I think this is something that could be usefull to the 360 community as my app do more than XEXTool and code is a lot more simple. Only problem is that my software is not really user driven, therefore, i decided to clean it up, and release XeXtractor : a cleaner way to handle xex and its component. With each release I'll bundle some sample class file that describe bits of the xex struture.

XeXtractor v0.10 :
-First Release
-Extract XUIZ files
-Sample class included : XUIZ.cs
-XUIZ files are containers for visual data (xur, png...) included mostly in the dashboard xex files.

Download links :
http://www.sendspace.com/file/g1jp8h



V0.20  will have XBDF extraction and XSTR to Clean txt file

Monday, April 12, 2010

Freestyle Dash 2.0 R557

I  just fixed some annoying issue in the game list : some items were not displayed properly (ie totally missing)
I dont quite understand what was going it, just redesigned the whole thing 2-3 times and finally got it right.
As for the "font" issue. Seems like its a unicode to multibyte problem.I kindof fixed it but still need a bit of tweaking.
While texting with game title, i added a feature some of you may found useful, this will probably still be in final version :
When in a game list, if you it lb + rb you will be prompted to rename the game!
Things are starting to take shape! just some minor work required are were back to a fully functionnal state!

What I have in mind to do next :
Change the game picture way of rendering, instead of exporting texture to png and sending it to xuiimage, we should just draw it in the render loop.
I want to experiment with a way to buffer large image before drawing them...

Screenshots :













Game list view with box art.








Fight Night Round 3 before being renamed (Extracted XEX title is EA SPORTS FN 3)












Renamed it to Fight Night Round 3













XBLA view.













New debugger look : left colomn is updated file that needs to be deployed to 360. You can right click the view to deploy changes, deploy the xex or deploy the whole skin.  There is now log tabs. Each tab correspond to a run of the software, ie : if it crash and reboot, it will automatically create a new tab.

Saturday, April 10, 2010

FSD 2.0 R528 - XEX Extraction - Debugger Update - Skin Update

Wow! Rev number are really going up fast!!
XEX Parsing is mostly completely integrated!
Lots of stuff going on with the XEX  (this is the current status, may totally change in 2.0 release)
XEX ressource is extracted to \fsdata\{gameid}\xexress.bin
String ressources are extracted go \fsdata\{gameid}\strings\{languageid}.str
Achievement icons are extracted to \fsdata\{gameid}\achievement\achievement-{achievementid}.png
An achievement xml is created containing Achievement Name, Description, Unachieved name, gamer cred, and image path. Achievement name, description and unachived name are extracted from the string ressources file.
\fsdata\{gameid}\xml\xml.xsrc is the gzip compress xlast xml file. Didnt spent time to uncompress it on xbox as not all game have it (old games like amped 3 does not have it) and i wanted to have a way to get the most out of every game.
\fsdata\{gameid}\unused\* are know file format that are of no use currently. There is contextstringsmap.bin(XCXT) which is a string map to contextual string (mostly point to unused strings...). Imagefilename.bin (XITB) which is the filename of png files, we are not using this as we standardise the filename depending on the image id. propertiesstringsmap.bin (XPRP) which map to some string that are mostly blank (DEFAULT, Insert display string here...). TitleId.bin (XTHD) which is the game title id. The unknow parts are in \fsdata\{gameid}\unknowdata\*
Those are currently kept for development purpose.
\fsdata\{gameid}\gamerpic\* are available gamerpic for this game (included in the xex, not the downloadable one)

One thing i learned with doing the xex extraction code : pragma pack is used to changed to word alignment of struct. Dont use this on xbox! If you include a source file that declare pragma pack more than once, even if you #pragma once, xbox will throw EXCEPTION_BREAKPOINT which really makes you go berserk when trying to understand the problem!.

----------

Debugger is currently going in major redesign!
We now have a filtering feature, so can see only the commands we need! ie : only the modules you are working on
Skin deployment is syncing only the files that were modified
View is a datalistview instead of listview, which provide better performance.

------------

What probably interest you the most, skin update :

Game name + game icon extracted from xex.

Game list filled with game icon  + game name extracted from xex. Font does have trouble rendering special char.












Using game background downloaded from internet.













New about menu.


There's still some missing info.











Surprise! :) (This is still only really experimental!!)

Thursday, April 8, 2010

FSD 2.0 R499

Huge progress since yesterday :
Complete XEX file decryption and extraction is working!
Decrypting and extracting a 6mB xex file currently takes about 2sec.
This will allow us to have a lots of info about games without going online :
Game title, ESRB rating and game icon to name a few.
Extracting is not currently integrated in FSD, its still running as a Debug Command but it shouldnt be too long before it is!

Screenshots of the day  (Showing stage customisation):


Tuesday, April 6, 2010

Customisable Skin

TeamFSD's skinner, MaesterRowen, is currently working on getting customizable skin in fsd2.0

Looks at the feature presentation video :


 Be sure to checkout his youtube channel to see other FSD2.0 related video :

http://www.youtube.com/user/MaesterRowen

Transfert Speed Calculation

Whats the best way to calculate transfer speed?
Currently i made a byte transfered counter, which is resetted everytime its read by an external module. External module is responsible for calculating the time interval between each read, but if I want to use the speed in another module i'm screwed..
Also thought of having a map with ticks since started as key and packetsize as value. This way i could get every packet size that happened in the last X seconds and calculate current speed but I think that cleanup would require too much cpu...

FSD 2.0 r485

Made lots of change to my yesterday fix :
Now, you can call CreateContentItem with the folder of the game (not the executable path) and it will create the proper ContentItem or return NULL if its not a proper folder. This method also take care of validating if the item is already in the content list.
Every file parsing code was removed from ContentList.













Also added http downloader speed reporting and auto retry on Response code 500.

Currently, Downloader start as paused, you need to use the debugger software to start it. (Will make a post describing our debugger later)

Could somebody explain me all xex filesize is determined? Seems like it increment by chunk.. ~100 builds will have the same exact size, then it jump up about 50%.  Is there anyway  to remove the filler data?

Also, there's some weird stuff going on with memory allocation...
If we declare a struct : XEXInfo* xinf;
Some build will be able to write the struct while some other will freeze if we do not malloc it. It seems to happen when were about to hit the file size increment but might be totally unrelated. Anyway, not mallocating it is a bad pratice, but there were almost no malloc in original code so something we get an ususable build without knowing why.

Monday, April 5, 2010

FSD 2.0 r470

I finally spend some time to fix the game list.


Previous implematation of the list was mostly ok, just needed some cleanup.

ScnGames is still not fixed.

ContentList.xml has been reduced to the bare minimum : it contain the game id and game path, everything else will or is currently using the data file structure to get its information.



Instanciating a ContentItem with a path and game id will automatically extract everything it can and put in a download queue whatever it needs.



Design wise, i think that only the ContentItem should handle download. I started some work regarding this. It now implement observable pattern and observers and notified when background or boxart or title changed.This way there wont be any download code in scene.



Skin still need a way to report current download queue and download speed.



I did some performance test with the file structure, when sorting the complete game list with about 150 games in it. If we read the title file everytime, it takes about 15-20 secs before sort is completed which is pretty good if we consider that theres a lots of comparison happening there. (Proper code, with buffered title, run in less than 1 sec, some sorting is almost instant).



Last week, we also figured out that we need to limit the fps to 60 as lots of tearing was happening in the menu. At 60 fps animations are really smooth!



Next steps :

Get ScnMain cleaned. Make a proper xex parser.

Thursday, April 1, 2010

FSD 2.0 r424

Some skin changes, and screenshot code is now fixed :


































Trying to show the stats popup animation in those screenshot, fps may seems low but taking screenshow does slow it down :P

Screenshot definatly needed to be taken from the render loop. And the resolution problem we got earlier was because we were using a Texture the size of output instead of the size of actual rendering. (FSD1.0 was rendering at output rez, FSD2.0 wont render any higher than 720p)