If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Sonic Free Riders

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Sonic Free Riders

Developer: Sonic Team
Publisher: Sega
Platform: Xbox 360
Released in JP: November 20, 2010
Released in US: November 4, 2010
Released in EU: November 10, 2010
Released in AU: November 18, 2010


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.


PrereleaseIcon.png This game has a prerelease article

Sonic Free Riders is the third and final entry in the Sonic Riders spin-off series, released as a launch title for the Xbox 360's Kinect peripheral. The game received largely negative reception due to unresponsive motion controls, but hey, at least it had a killer opening theme. A user by the name Rei-SanTH released an unofficial patch that allowed the game to be played with a regular Xbox 360 controller, basically making the game actually be playable.

Sub-Pages

Read about prerelease information and/or media for this game.
Prerelease Info

Internal Project Name

The game is internally known as SRN, which can be found many times throughout the executable. "SRN" is likely an abbreviation for "Sonic Riders Natal", especially considering that "Natal" was the codename for the Kinect.

(Source: Original TCRF research)

Uncompiled Source Code

Present at 0x174358 in default.xex (decrypted & decompressed) is some assembly.

vs.1.1                            // ƒVƒF[ƒ_ ƒo[ƒWƒ‡ƒ“ 1.1           
mul r1,v2.zyxw,c0.wwww            // Geforce3 ‚Å UBYTE4 ‚ª‚È‚¢‚Ì‚ð•â‚¤ 
mov a0.x,r1.x                     // 1 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r4,v0,c[a0.x + 9]                                                 
m3x3 r5,v3,c[a0.x + 9]                                                 
mov r4.w,c0.x                     // À•W•ÏŠ·                          
m4x4 oPos,r4,c2                                                        
dp3 r5.w, r5, r5                  // –@ü‚Ì‹KŠi‰»                      
rsq r5.w, r5.w                                                         
mul r5, r5, r5.w                                                       
dp3 r1.x, r5, c1                  // ƒ‰ƒCƒeƒBƒ“ƒO                      
lit r1, r1                        //                                   
mul r0, r1.y, c8                  // •½sŒõŒ¹                          
add r0, r0, c7                    //  +ŠÂ‹«Œõ                          
min oD0, r0, c0.x                 // 1ˆÈ‰º‚ɃNƒ‰ƒ“ƒv                   
mov oD1, c0.zzzz                  // ‚·‚Ø‚«‚ã‚ç[‚ÌÝ’è                
mov oT0, v4                       // ƒeƒNƒXƒ`ƒƒ[À•W‚̃Rƒs[          
vs.1.1                            // ƒVƒF[ƒ_ ƒo[ƒWƒ‡ƒ“ 1.1           
mul r1,v2.zyxw,c0.wwww            // Geforce3 ‚Å UBYTE4 ‚ª‚È‚¢‚Ì‚ð•â‚¤ 
dp3 r0.w,v1.xyz,c0.xzz            // ÅŒã‚ÌŒW”‚̓EƒFƒCƒg‚̍‡Œv‚ª1‚©‚çŽZo 
add r0.w,-r0.w,c0.x                                                    
mov a0.x,r1.x                     // 1 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r4,v0,c[a0.x + 9]                                                 
m3x3 r5,v3,c[a0.x + 9]                                                 
mul r4,r4,v1.xxxx                 // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mul r5,r5,v1.xxxx                                                      
mov a0.x,r1.y                     // 2 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r2,v0,c[a0.x + 9]                                                 
m3x3 r3,v3,c[a0.x + 9]                                                 
mad r4,r2,r0.wwww,r4              // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mad r5,r3,r0.wwww,r5                                                   
mov r4.w,c0.x                     // À•W•ÏŠ·                          
m4x4 oPos,r4,c2                                                        
dp3 r5.w, r5, r5                  // –@ü‚Ì‹KŠi‰»                      
rsq r5.w, r5.w                                                         
mul r5, r5, r5.w                                                       
dp3 r1.x, r5, c1                  // ƒ‰ƒCƒeƒBƒ“ƒO                      
lit r1, r1                        //                                   
mul r0, r1.y, c8                  // •½sŒõŒ¹                          
add r0, r0, c7                    //  +ŠÂ‹«Œõ                          
min oD0, r0, c0.x                 // 1ˆÈ‰º‚ɃNƒ‰ƒ“ƒv                   
mov oD1, c0.zzzz                  // ‚·‚Ø‚«‚ã‚ç[‚ÌÝ’è                
mov oT0, v4                       // ƒeƒNƒXƒ`ƒƒ[À•W‚̃Rƒs[          
vs.1.1                            // ƒVƒF[ƒ_ ƒo[ƒWƒ‡ƒ“ 1.1           
mul r1,v2.zyxw,c0.wwww            // Geforce3 ‚Å UBYTE4 ‚ª‚È‚¢‚Ì‚ð•â‚¤ 
dp3 r0.w,v1.xyz,c0.xxz            // ÅŒã‚ÌŒW”‚̓EƒFƒCƒg‚̍‡Œv‚ª1‚©‚çŽZo 
add r0.w,-r0.w,c0.x                                                    
mov a0.x,r1.x                     // 1 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r4,v0,c[a0.x + 9]                                                 
m3x3 r5,v3,c[a0.x + 9]                                                 
mul r4,r4,v1.xxxx                 // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mul r5,r5,v1.xxxx                                                      
mov a0.x,r1.y                     // 2 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r2,v0,c[a0.x + 9]                                                 
m3x3 r3,v3,c[a0.x + 9]                                                 
mad r4,r2,v1.yyyy,r4              // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mad r5,r3,v1.yyyy,r5                                                   
mov a0.x,r1.z                     // 3 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r2,v0,c[a0.x + 9]                                                 
m3x3 r3,v3,c[a0.x + 9]                                                 
mad r4,r2,r0.wwww,r4              // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mad r5,r3,r0.wwww,r5                                                   
mov r4.w,c0.x                     // À•W•ÏŠ·                          
m4x4 oPos,r4,c2                                                        
dp3 r5.w, r5, r5                  // –@ü‚Ì‹KŠi‰»                      
rsq r5.w, r5.w                                                         
mul r5, r5, r5.w                                                       
dp3 r1.x, r5, c1                  // ƒ‰ƒCƒeƒBƒ“ƒO                      
lit r1, r1                        //                                   
mul r0, r1.y, c8                  // •½sŒõŒ¹                          
add r0, r0, c7                    //  +ŠÂ‹«Œõ                          
min oD0, r0, c0.x                 // 1ˆÈ‰º‚ɃNƒ‰ƒ“ƒv                   
mov oD1, c0.zzzz                  // ‚·‚Ø‚«‚ã‚ç[‚ÌÝ’è                
mov oT0, v4                       // ƒeƒNƒXƒ`ƒƒ[À•W‚̃Rƒs[          
dvs.1.1                            // ƒVƒF[ƒ_ ƒo[ƒWƒ‡ƒ“ 1.1           
mul r1,v2.zyxw,c0.wwww            // Geforce3 ‚Å UBYTE4 ‚ª‚È‚¢‚Ì‚ð•â‚¤ 
dp3 r0.w,v1.xyz,c0.xxx            // ÅŒã‚ÌŒW”‚̓EƒFƒCƒg‚̍‡Œv‚ª1‚©‚çŽZo 
add r0.w,-r0.w,c0.x                                                    
mov a0.x,r1.x                     // 1 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r4,v0,c[a0.x + 9]                                                 
m3x3 r5,v3,c[a0.x + 9]                                                 
mul r4,r4,v1.xxxx                 // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mul r5,r5,v1.xxxx                                                      
mov a0.x,r1.y                     // 2 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r2,v0,c[a0.x + 9]                                                 
m3x3 r3,v3,c[a0.x + 9]                                                 
mad r4,r2,v1.yyyy,r4              // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mad r5,r3,v1.yyyy,r5                                                   
mov a0.x,r1.z                     // 3 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r2,v0,c[a0.x + 9]                                                 
m3x3 r3,v3,c[a0.x + 9]                                                 
mad r4,r2,v1.zzzz,r4              // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mad r5,r3,v1.zzzz,r5                                                   
mov a0.x,r1.w                     // 4 ‚‚߂̍s—ñ‚ðÝ’è                
m4x3 r2,v0,c[a0.x + 9]                                                 
m3x3 r3,v3,c[a0.x + 9]                                                 
mad r4,r2,r0.wwww,r4              // ŒW”‚ð‚©‚¯‚臐¬‚·‚é              
mad r5,r3,r0.wwww,r5                                                   
mov r4.w,c0.x                     // À•W•ÏŠ·                          
m4x4 oPos,r4,c2                                                        
dp3 r5.w, r5, r5                  // –@ü‚Ì‹KŠi‰»                      
rsq r5.w, r5.w                                                         
mul r5, r5, r5.w                                                       
dp3 r1.x, r5, c1                  // ƒ‰ƒCƒeƒBƒ“ƒO                      
lit r1, r1                        //                                   
mul r0, r1.y, c8                  // •½sŒõŒ¹                          
add r0, r0, c7                    //  +ŠÂ‹«Œõ                          
min oD0, r0, c0.x                 // 1ˆÈ‰º‚ɃNƒ‰ƒ“ƒv                   
mov oD1, c0.zzzz                  // ‚·‚Ø‚«‚ã‚ç[‚ÌÝ’è                
mov oT0, v4                       // ƒeƒNƒXƒ`ƒƒ[À•W‚̃Rƒs[
(Source: Original TCRF research)