Line endings...be normalized!

This commit is contained in:
Jason Felds
2011-03-17 01:47:30 -04:00
parent 146e8e14f1
commit a085d0d1da
1962 changed files with 444486 additions and 444486 deletions
+83 -83
View File
@@ -1,84 +1,84 @@
sm-ssc Code Style Guidelines
--------------------------------------------------------------------------------
AJ is biased, but prefers to edit text in SciTE and just uses Visual Studio when
necessary. "It's really slow!"
That being said, the sm-ssc code style guidelines are as follows:
1) Follow the current coding conventions set forth in the source code.
This means use tabs. AJ prefers tabs have a width of 4. Visual Studio and web
browsers assume tabs to be 8 by default. :/
Use of the tab character means you can define however wide you want it to be.
Use of the space character is allowed for complex alignment. There are many
examples of this in the code.
If it can be done in one line, do so:
int xTwenty(int factor){ return factor*20; }
Otherwise, follow what's in the code, namely...
for single line ifs :
if( somecrap )
dosomethingelse();
for multi-lines:
if( anothercrap )
{
omg();
lotsofstuff();
}
Naming conventions seem to be Hungarian (of Apps or System, I do not know).
2) Remove any unnecessary whitespace. "Unnecessary" whitespace includes tabs
at the end of } characters, tabs that lead nowhere, like this one:
and keep in mind that this can be done with spaces too:
so watch yourself. Remove 'em all.
3) When making LOG->Trace()s in code, it's best to include the name of the Class
and Function in [], like so:
LOG->Info( "[NetworkSyncManager::Listen] Initializing socket..." );
You may not always need to do this, but it helps for clarity and sanity.
4) Comment style. (This is a preferred suggestion. You may choose to do whatever
you like, but it is recommended to follow this style when submitting code for
inclusion.)
// is preferred for one-liners
// and also blocks of text where the comment isn't too long.
// sometimes you'll find // comments longer than this thrown in there by AJ
/* instead of doing this.
* when making a new line in a long form comment, start like this line.
* and put the end where it fits. */
/*
* doing this (first line blank) is discouraged, but is allowed in certain places.
* Copyright notices use this style and should remain doing so; don't clean it up
* in that instance. All new copyright notices should follow this style as well,
* for consistency's sake.
*/
/* use of long comments for one line is VERY discouraged */
// usually, it will will get cleaned up into this style, but there are exceptions:
// exception #1: function arguments
void SomeFunction(size_t /*ACTUAL DATA TYPE*/)
// where you need to have it be /* */ or else it'll mess up.
// exception #2: #defines
#define /* you must use long form in defines, */ \
// otherwise it won't parse the newline correctly (this will cause an error) \
// exception #3: .h files
/* ScreenTypicalExample - this always shows up like this. It usually is always one line, even when it extends past column 80. This is acceptible; Most people don't write novels here like I just did. */
// on comment length:
/* typically total 80 characters is the preferred width per line, like this one.
* Sometimes, you can get away with sentences where a word or phrase hangs over the edge,
* especially if you can guess the context without needing to scroll.
* Pre-existing comments are usually trimmed to meet the 80-column width if they
* go way overboard. */
sm-ssc Code Style Guidelines
--------------------------------------------------------------------------------
AJ is biased, but prefers to edit text in SciTE and just uses Visual Studio when
necessary. "It's really slow!"
That being said, the sm-ssc code style guidelines are as follows:
1) Follow the current coding conventions set forth in the source code.
This means use tabs. AJ prefers tabs have a width of 4. Visual Studio and web
browsers assume tabs to be 8 by default. :/
Use of the tab character means you can define however wide you want it to be.
Use of the space character is allowed for complex alignment. There are many
examples of this in the code.
If it can be done in one line, do so:
int xTwenty(int factor){ return factor*20; }
Otherwise, follow what's in the code, namely...
for single line ifs :
if( somecrap )
dosomethingelse();
for multi-lines:
if( anothercrap )
{
omg();
lotsofstuff();
}
Naming conventions seem to be Hungarian (of Apps or System, I do not know).
2) Remove any unnecessary whitespace. "Unnecessary" whitespace includes tabs
at the end of } characters, tabs that lead nowhere, like this one:
and keep in mind that this can be done with spaces too:
so watch yourself. Remove 'em all.
3) When making LOG->Trace()s in code, it's best to include the name of the Class
and Function in [], like so:
LOG->Info( "[NetworkSyncManager::Listen] Initializing socket..." );
You may not always need to do this, but it helps for clarity and sanity.
4) Comment style. (This is a preferred suggestion. You may choose to do whatever
you like, but it is recommended to follow this style when submitting code for
inclusion.)
// is preferred for one-liners
// and also blocks of text where the comment isn't too long.
// sometimes you'll find // comments longer than this thrown in there by AJ
/* instead of doing this.
* when making a new line in a long form comment, start like this line.
* and put the end where it fits. */
/*
* doing this (first line blank) is discouraged, but is allowed in certain places.
* Copyright notices use this style and should remain doing so; don't clean it up
* in that instance. All new copyright notices should follow this style as well,
* for consistency's sake.
*/
/* use of long comments for one line is VERY discouraged */
// usually, it will will get cleaned up into this style, but there are exceptions:
// exception #1: function arguments
void SomeFunction(size_t /*ACTUAL DATA TYPE*/)
// where you need to have it be /* */ or else it'll mess up.
// exception #2: #defines
#define /* you must use long form in defines, */ \
// otherwise it won't parse the newline correctly (this will cause an error) \
// exception #3: .h files
/* ScreenTypicalExample - this always shows up like this. It usually is always one line, even when it extends past column 80. This is acceptible; Most people don't write novels here like I just did. */
// on comment length:
/* typically total 80 characters is the preferred width per line, like this one.
* Sometimes, you can get away with sentences where a word or phrase hangs over the edge,
* especially if you can guess the context without needing to scroll.
* Pre-existing comments are usually trimmed to meet the 80-column width if they
* go way overboard. */
5) There are no other rules (yet).
+16 -16
View File
@@ -1,17 +1,17 @@
sm-ssc has a few compile flags that are helpful to know, as well as ones
inherited from StepMania.
================================================================================
stepmania:
================================================================================
WITHOUT_NETWORKING
Disables all networking stuff (SMO).
================================================================================
sm-ssc:
================================================================================
SSC_FUTURES
{todo}
--------------------------------------------------------------------------------
HAVE_VERSION_INFO
If this isn't defined, passing in --version will only show the name of the
current sm-ssc version, no build number or date.
sm-ssc has a few compile flags that are helpful to know, as well as ones
inherited from StepMania.
================================================================================
stepmania:
================================================================================
WITHOUT_NETWORKING
Disables all networking stuff (SMO).
================================================================================
sm-ssc:
================================================================================
SSC_FUTURES
{todo}
--------------------------------------------------------------------------------
HAVE_VERSION_INFO
If this isn't defined, passing in --version will only show the name of the
current sm-ssc version, no build number or date.
Please define HAVE_VERSION_INFO if you can when building sm-ssc.
+22 -22
View File
@@ -1,23 +1,23 @@
The Golden Rules of sm-ssc Development
--------------------------------------------------------------------------------
In addition to CodingStyle.txt, this is the doctrine for operation of sm-ssc.
1) Always remember that the original branch of StepMania exists, and that we need
to give back to it in order for sm-ssc to survive.
(Literal: Be sure to commit useful changes/fixes to the mainline StepMania branch
every so often.)
2) If you want something done, you should probably work on it yourself. However,
SSC members should be willing to help if their area of expertise and the problem
domain overlap (life permitting).
3) Always know your priorities. sm-ssc is important, but it's not life itself.
Take breaks every once in a while. Work on other things. Don't get burned out
from nonstop sm-ssc development.
4) Patches should be checked for compatibility/compilability before being
accepted and integrated. Common sense, but a golden rule nevertheless.
5) Anyone who decides to theme for sm-ssc during development is willing to
accept that occasionally, changes to the default and/or fallback theme will
The Golden Rules of sm-ssc Development
--------------------------------------------------------------------------------
In addition to CodingStyle.txt, this is the doctrine for operation of sm-ssc.
1) Always remember that the original branch of StepMania exists, and that we need
to give back to it in order for sm-ssc to survive.
(Literal: Be sure to commit useful changes/fixes to the mainline StepMania branch
every so often.)
2) If you want something done, you should probably work on it yourself. However,
SSC members should be willing to help if their area of expertise and the problem
domain overlap (life permitting).
3) Always know your priorities. sm-ssc is important, but it's not life itself.
Take breaks every once in a while. Work on other things. Don't get burned out
from nonstop sm-ssc development.
4) Patches should be checked for compatibility/compilability before being
accepted and integrated. Common sense, but a golden rule nevertheless.
5) Anyone who decides to theme for sm-ssc during development is willing to
accept that occasionally, changes to the default and/or fallback theme will
break things.
+466 -466
View File
@@ -1,466 +1,466 @@
PRELIMINARY - - - - - - - - 05/03/2004
Protocol version 4
But 0x04 will be its version for inter-protocol purposes.
This protocol is only intended to replace current protocol. Because current protocol
not expanable
SMLAN PROTCOL TCP/8765
Protcol is entirelly packaged in EzSockets Data Packets (use send and receive packet)
This will prevent any out-of-sync errors with future or past versions.
The protocol is impervious to fragmented, or bonded TCP packets.
Basic Representation:
Octet 0123 4 5
+----+-+---//--+
|ssss|C|Payload|
+----+-+---//--+
ssss - size of packet, handled by ezsockets (if you're using C++)
C - Command.
Payload - variable size based on command
The payload may contain more data than expected, i.e. new protocol version.
In the following protocol, the term size means the size of the chunk of data.
If the "size" is "NT" then that means it's a null-terminating string.
"MSN" most significant 4 bits (byte/16)
"LSN" least significant 4 bits (byte%16)
Note: Primary player is 0x0, secondary player is 0x1
CLIENT to SERVER protocol:
000: No Operation
Desc: This command will cause server to respond with a no op response.
Payload: None
Response: Server 001
001: No Operation Response
Desc: This command is used to respond to a no operation.
Payload: None
Response: None
002: Hello
Desc: This is the first packet from a client to server, stating below
information (NOTE: Names are no longer sent in this packet)
Payload:
Size Description:
1 Client protocol version
NT Name of build of StepMania
Response: Server 002
003: Game Start Request
Desc: This command is called once after most loading is done, and
again immediately before the sound starts.
Payload:
Size Description
MSN Primary player difficulty (feet) (0 for no player)
LSN Secondary player difficulty (feet) (0 for no player)
MSN Primary player difficulty (0=Beginner, 1=easy, etc.)
LSN Second player difficulty (0=Beginner, 1=easy, etc.)
MSN Start Position (0 is pre-sync, 1 is for sync)
LSN Reserved
NT Song Title
NT Song Subtitle
NT Song Artist
NT Course Title (If none exists; make it just a null)
NT Song Options (in string-format)
NT Primary Player's options (Null if non-existant)
NT Secondary Player's Options (Null if non-existant)
Response: Server 003
004: Game Over Notice
Desc: This command is sent when end of game is encounterd
Payload: None.
Response: None.
005: Game Status update
Desc: Updates game info for each step
Payload:
Size Description
MSN Player #
Protocol <= 2
LSN StepID
1: Miss
2: W5
3: W4
4: W3
5: W2
6: W1
7: LetGo
8: Held
Protocol >= 3
LSN StepID
1: HitMine
2: AvoidMine
3: Miss
4: W5
5: W4
6: W3
7: W2
8: W1
9: LetGo
10: Held
MSN Projected Grade (StepMania enum int)
LSN Reserved
4 Net-order long containing score.
2 Net-order int containing combo.
2 Net-order int containing health.
2 Net-order # containing offset
32767 would be DEAD on the note
If the user is hitting late, the # will be higher
It if the user is exactly 0.25 seconds off, the
number will be different by 500, if 0.5, it will be
different by 1000.
Response: None.
006: Style Update (PLEASE NOTE THIS HAS NOTHING TO DO WITH SERVER COMMAND 6)
Desc: This is sent when a style is chosen.
Size:
1 # of enabled players (1 means 1, 2 means 2)
1 Player # (0 means 1st, 1 means 2nd)
NT Player Name for #
(Additional player's and #'s) (enabled players ONLY)
Response: None
007: Chat message
Desc: The user typed a message for general chat.
Size:
NT Message
008: Request Start Game and Tell server existance/non existance of song.
Desc: The user selected a song on a Net-enabled selection
Size:
1 Usage of message
0: (in response to server 8) User has specified song
1: (in response to server 8) User does NOT have specified song
2: User requested a start game on given song
NT Song Title (As gotten by GetTranslitMainTitle)
NT Song Artist (As Gotten by GetTranslitArtist)
NT Song Subtitle (As gotten by GetTranslitSubTitle)
009: //Reserved
010: User entered/exited Network Music Selection Screen
Size:
1
0: exited ScreenNetSelectMusic
1: entered ScreenNetSelectMusic
2: **Not Sent**
3: entered options screen
4: exited the evaluation screen
5: entered evaluation screen
6: exited ScreenNetRoom
7: entered ScreenNetRoom
011: User has changed player options
Size:
NT Player 0's options
NT Player 1's options
012: SMOnline Packet. //SPECIAL CASE!!!
NOTE: The smonline packet is not defined here.
The SMLan packet 12 is a wrapper for the SMOnline packet.
This is so that we can have "protection" of sorts when
it comes to the coding of SMOnline, so we don't have to
use the lower level commands when dealing with SMOnline.
Size:
1 SMOnline command //This used to say 2, but it looks like 1 in all cases
<VARIABLE> SMOnline data
013: Reserved
014: Reserved
015: XML Packet. This packet contains data in XML format.
Size:
NT XML
SERVER to CLIENT protocol: (begins at 128)
NOTE: Server responses always add 128, thus a server response for no operation
is 128, not 000
000(128):No Operation
Desc: This command will cause server to respond with a no op response.
Payload: None
Response: Server 001
001(129):No Operation Response
Desc: This command is used to respond to a no operation.
Payload: None
Response: None
002(130):Server Hello Response
Desc: This introduces the server.
Payload:
Size Description
1 Server protocol version //NOTE: if protocol version is 128+, then this
server is an SMOnline server
NT Server Name
4 Random key ( at the moment only used for an alternate login method )
003(131):Allow Start
Desc: This will cause the client to start the game.
Payload: None
Response: None
004(132):Game over stats
Desc: this packet is send in response to the game over packet
it contains information regarding how well each player did.
Payload:
1 # of players sent in this packet (active players)
The way this works is to send every player's info for a given
field. Like every player's score will be sent first, then every
player's grade.
1 First player's player ID
<Other player's IDs>
4 Score
<Other player's scores>
1 Grade
<Other player's Grades>
1 Difficulty (0=beginner, 1=light, etc.)
<Other player's difficulties>
#this next chunk of step types is actually reversed
2 miss
<Other player's misses>
2 boo
<Other player's boos>
2 good (All players)
2 great (All players)
2 perfect (All players)
2 marvelous (All players)
2 ok (All players)
2 max_combo (All players)
NT Player's options
<Other player's options>
005:(133)Scoreboard update
Desc: This will update the client's scoreboard.
Payload:
Size
1 Which section
0: Names
1: Combos
2: Projected Grades
1 # of players to display
If Names, then:
1 Player in first place's index
1 Player in second place's index
...
1 Last player's index
If Combos, then:
2 First player's combo
2 Second Player's combo
...
2 Last player's combo
If Project grades
1 Player 1's grade (in the same format used when reporting projected grades)
1 Player 2's grade
...
1 Last player's projected grade
006:(134)System Message (PLEASE NOTE THIS HAS NOTHING TO DO WITH CLIENT COMMAND 6)
Desc: Send system message to user
Payload:
Size Description
NT Message
007:(135)Chat Message
Desc: Add a chat message to the chat window on some StepMania screens.
Payload:
Size Description
NT Message
008:(136)Tell client to start song/ask if client has song
Desc: The user selected a song on a Net-enabled selection
Size:
1 Usage of message
0: See if client has song
1: See if client has song, if so, scroll to song
2: See if client has song, if so, scroll to song, and play that song
3: Blindly start song
NT Song Title (As gotten by GetTranslitMainTitle)
NT Song Artist (As Gotten by GetTranslitArtist)
NT Song Subtitle (As gotten by GetTranslitSubTitle)
009:(137)Update user list
Desc: This sends all the users currently connected
Size:
1 Max # of players
1 # of players in this packet
1 Player 0's status
NT Player 0's name (if there is no player here... make it a null (""))
1 Player 1's status
NT Player 1's name
...
1 Last player's status
NT Last player's name
Status:
0 Inative (no info on this user yet)
1 Active (you know who it is)
2 In Selection Screen
3 In Options
4 In Evaluation
010:(138)Force change to Networking select music screen.
Size:
NT Set Specified gametype
NT Set Specified style
011:(139)Reserved
012:(140)SMOnline Packet. //SPECIAL CASE!!!
NOTE: The smonline packet is not defined here.
The SMLan packet 12 is a wrapper for the SMOnline packet.
This is so that we can have "protection" of sorts when
it comes to the coding of SMOnline, so we don't have to
use the lower level commands when dealing with SMOnline.
Size:
1 SMOnline command
<VARIABLE> SMOnline data
013:(141)Formatted information packet
Desc: Send formatted information regarding the server back to the player.
NOTE: The purpose of this function is alternatively to be a broadcast
packet. (You can expect it via UDP broadcast)
Size:
NT Server Name
2 Port the server is listening on
2 Number of players connected
014:(142)Attack Client
Size:
1 Player Number
4 Time to Last (in MS)
NT Text describing modifiers.
015:(143) XML reply. Contains XML
Size:
NT XML
----------------------------------------------------------------
Client SMOnline packets:
000: Send Login Information
Size:
1 Player Number
1 Encryption text
0: MD5 hash
1: MD5 ( MD5 hash + salt ) (salt is plain text, base 10 string )
NT Username
NT Password
Note: The client is not permitted to use method (1) for authentication
if the salt it received from the server is 0
001: User asks to enter room
Size:
1 Enter/Exit?
0: User wishes to exit room
1: User wishes to enter room
NT Room Name (Used when entering rooms)
NT Password (Empty if password not used)
002: Create a new Room
Size:
1 Room Type
0: Normal room (has sub rooms)
1: Game room (no sub rooms)
NT Room Title
NT Room Description
NT Room Password (blank if no password)
003: Requests Room Info
Size:
NT Room Name
Server SMOnline packets:
000: Login Response
1 Approval Status
0: Approved
1: Approval Failed
NT Login response (plain text)
001: Room Update (Changing rooms)
Size:
1 Type of update
0: Change Room Title
1: Update List of other rooms (or games)
If Room Title Update:
NT Room Title
NT Room Description
1 Type of room:
0: Chat room
1: Game room
1 Allows creation of sub room.
0: Does not allow creation of subrooms
1: Allows creation of subrooms
If Room List Update:
1 Number of rooms
NT Room1 Title
NT Room1 Description
NT Room2 Title
NT Room2 Description
...
NT RoomN Title
NT RoomN Description
Room Status appended for reverse compatibility
1 Room1 Status
0: Normal Room
1: Unused
2: Room in game
3: First stage of song selection has been done
4: Second stage of song selection has been done
1 Room2 Status
...
1 RoomN Status
Room Flags appended for reverse compatibility
1 Room1 Flags
bit 0: Passworded if true
1 Room2 Status
...
1 RoomN Status
002: Request general information from server.
1 Format for stats
0: Normal unformatted stats
003: Room Info
Size:
NT Last Song Title
NT Last Song Subtitle
NT Last Song Artist
1 Num Players
1 Max Players
NT Player1 Name
...
NT PlayerN Name
PRELIMINARY - - - - - - - - 05/03/2004
Protocol version 4
But 0x04 will be its version for inter-protocol purposes.
This protocol is only intended to replace current protocol. Because current protocol
not expanable
SMLAN PROTCOL TCP/8765
Protcol is entirelly packaged in EzSockets Data Packets (use send and receive packet)
This will prevent any out-of-sync errors with future or past versions.
The protocol is impervious to fragmented, or bonded TCP packets.
Basic Representation:
Octet 0123 4 5
+----+-+---//--+
|ssss|C|Payload|
+----+-+---//--+
ssss - size of packet, handled by ezsockets (if you're using C++)
C - Command.
Payload - variable size based on command
The payload may contain more data than expected, i.e. new protocol version.
In the following protocol, the term size means the size of the chunk of data.
If the "size" is "NT" then that means it's a null-terminating string.
"MSN" most significant 4 bits (byte/16)
"LSN" least significant 4 bits (byte%16)
Note: Primary player is 0x0, secondary player is 0x1
CLIENT to SERVER protocol:
000: No Operation
Desc: This command will cause server to respond with a no op response.
Payload: None
Response: Server 001
001: No Operation Response
Desc: This command is used to respond to a no operation.
Payload: None
Response: None
002: Hello
Desc: This is the first packet from a client to server, stating below
information (NOTE: Names are no longer sent in this packet)
Payload:
Size Description:
1 Client protocol version
NT Name of build of StepMania
Response: Server 002
003: Game Start Request
Desc: This command is called once after most loading is done, and
again immediately before the sound starts.
Payload:
Size Description
MSN Primary player difficulty (feet) (0 for no player)
LSN Secondary player difficulty (feet) (0 for no player)
MSN Primary player difficulty (0=Beginner, 1=easy, etc.)
LSN Second player difficulty (0=Beginner, 1=easy, etc.)
MSN Start Position (0 is pre-sync, 1 is for sync)
LSN Reserved
NT Song Title
NT Song Subtitle
NT Song Artist
NT Course Title (If none exists; make it just a null)
NT Song Options (in string-format)
NT Primary Player's options (Null if non-existant)
NT Secondary Player's Options (Null if non-existant)
Response: Server 003
004: Game Over Notice
Desc: This command is sent when end of game is encounterd
Payload: None.
Response: None.
005: Game Status update
Desc: Updates game info for each step
Payload:
Size Description
MSN Player #
Protocol <= 2
LSN StepID
1: Miss
2: W5
3: W4
4: W3
5: W2
6: W1
7: LetGo
8: Held
Protocol >= 3
LSN StepID
1: HitMine
2: AvoidMine
3: Miss
4: W5
5: W4
6: W3
7: W2
8: W1
9: LetGo
10: Held
MSN Projected Grade (StepMania enum int)
LSN Reserved
4 Net-order long containing score.
2 Net-order int containing combo.
2 Net-order int containing health.
2 Net-order # containing offset
32767 would be DEAD on the note
If the user is hitting late, the # will be higher
It if the user is exactly 0.25 seconds off, the
number will be different by 500, if 0.5, it will be
different by 1000.
Response: None.
006: Style Update (PLEASE NOTE THIS HAS NOTHING TO DO WITH SERVER COMMAND 6)
Desc: This is sent when a style is chosen.
Size:
1 # of enabled players (1 means 1, 2 means 2)
1 Player # (0 means 1st, 1 means 2nd)
NT Player Name for #
(Additional player's and #'s) (enabled players ONLY)
Response: None
007: Chat message
Desc: The user typed a message for general chat.
Size:
NT Message
008: Request Start Game and Tell server existance/non existance of song.
Desc: The user selected a song on a Net-enabled selection
Size:
1 Usage of message
0: (in response to server 8) User has specified song
1: (in response to server 8) User does NOT have specified song
2: User requested a start game on given song
NT Song Title (As gotten by GetTranslitMainTitle)
NT Song Artist (As Gotten by GetTranslitArtist)
NT Song Subtitle (As gotten by GetTranslitSubTitle)
009: //Reserved
010: User entered/exited Network Music Selection Screen
Size:
1
0: exited ScreenNetSelectMusic
1: entered ScreenNetSelectMusic
2: **Not Sent**
3: entered options screen
4: exited the evaluation screen
5: entered evaluation screen
6: exited ScreenNetRoom
7: entered ScreenNetRoom
011: User has changed player options
Size:
NT Player 0's options
NT Player 1's options
012: SMOnline Packet. //SPECIAL CASE!!!
NOTE: The smonline packet is not defined here.
The SMLan packet 12 is a wrapper for the SMOnline packet.
This is so that we can have "protection" of sorts when
it comes to the coding of SMOnline, so we don't have to
use the lower level commands when dealing with SMOnline.
Size:
1 SMOnline command //This used to say 2, but it looks like 1 in all cases
<VARIABLE> SMOnline data
013: Reserved
014: Reserved
015: XML Packet. This packet contains data in XML format.
Size:
NT XML
SERVER to CLIENT protocol: (begins at 128)
NOTE: Server responses always add 128, thus a server response for no operation
is 128, not 000
000(128):No Operation
Desc: This command will cause server to respond with a no op response.
Payload: None
Response: Server 001
001(129):No Operation Response
Desc: This command is used to respond to a no operation.
Payload: None
Response: None
002(130):Server Hello Response
Desc: This introduces the server.
Payload:
Size Description
1 Server protocol version //NOTE: if protocol version is 128+, then this
server is an SMOnline server
NT Server Name
4 Random key ( at the moment only used for an alternate login method )
003(131):Allow Start
Desc: This will cause the client to start the game.
Payload: None
Response: None
004(132):Game over stats
Desc: this packet is send in response to the game over packet
it contains information regarding how well each player did.
Payload:
1 # of players sent in this packet (active players)
The way this works is to send every player's info for a given
field. Like every player's score will be sent first, then every
player's grade.
1 First player's player ID
<Other player's IDs>
4 Score
<Other player's scores>
1 Grade
<Other player's Grades>
1 Difficulty (0=beginner, 1=light, etc.)
<Other player's difficulties>
#this next chunk of step types is actually reversed
2 miss
<Other player's misses>
2 boo
<Other player's boos>
2 good (All players)
2 great (All players)
2 perfect (All players)
2 marvelous (All players)
2 ok (All players)
2 max_combo (All players)
NT Player's options
<Other player's options>
005:(133)Scoreboard update
Desc: This will update the client's scoreboard.
Payload:
Size
1 Which section
0: Names
1: Combos
2: Projected Grades
1 # of players to display
If Names, then:
1 Player in first place's index
1 Player in second place's index
...
1 Last player's index
If Combos, then:
2 First player's combo
2 Second Player's combo
...
2 Last player's combo
If Project grades
1 Player 1's grade (in the same format used when reporting projected grades)
1 Player 2's grade
...
1 Last player's projected grade
006:(134)System Message (PLEASE NOTE THIS HAS NOTHING TO DO WITH CLIENT COMMAND 6)
Desc: Send system message to user
Payload:
Size Description
NT Message
007:(135)Chat Message
Desc: Add a chat message to the chat window on some StepMania screens.
Payload:
Size Description
NT Message
008:(136)Tell client to start song/ask if client has song
Desc: The user selected a song on a Net-enabled selection
Size:
1 Usage of message
0: See if client has song
1: See if client has song, if so, scroll to song
2: See if client has song, if so, scroll to song, and play that song
3: Blindly start song
NT Song Title (As gotten by GetTranslitMainTitle)
NT Song Artist (As Gotten by GetTranslitArtist)
NT Song Subtitle (As gotten by GetTranslitSubTitle)
009:(137)Update user list
Desc: This sends all the users currently connected
Size:
1 Max # of players
1 # of players in this packet
1 Player 0's status
NT Player 0's name (if there is no player here... make it a null (""))
1 Player 1's status
NT Player 1's name
...
1 Last player's status
NT Last player's name
Status:
0 Inative (no info on this user yet)
1 Active (you know who it is)
2 In Selection Screen
3 In Options
4 In Evaluation
010:(138)Force change to Networking select music screen.
Size:
NT Set Specified gametype
NT Set Specified style
011:(139)Reserved
012:(140)SMOnline Packet. //SPECIAL CASE!!!
NOTE: The smonline packet is not defined here.
The SMLan packet 12 is a wrapper for the SMOnline packet.
This is so that we can have "protection" of sorts when
it comes to the coding of SMOnline, so we don't have to
use the lower level commands when dealing with SMOnline.
Size:
1 SMOnline command
<VARIABLE> SMOnline data
013:(141)Formatted information packet
Desc: Send formatted information regarding the server back to the player.
NOTE: The purpose of this function is alternatively to be a broadcast
packet. (You can expect it via UDP broadcast)
Size:
NT Server Name
2 Port the server is listening on
2 Number of players connected
014:(142)Attack Client
Size:
1 Player Number
4 Time to Last (in MS)
NT Text describing modifiers.
015:(143) XML reply. Contains XML
Size:
NT XML
----------------------------------------------------------------
Client SMOnline packets:
000: Send Login Information
Size:
1 Player Number
1 Encryption text
0: MD5 hash
1: MD5 ( MD5 hash + salt ) (salt is plain text, base 10 string )
NT Username
NT Password
Note: The client is not permitted to use method (1) for authentication
if the salt it received from the server is 0
001: User asks to enter room
Size:
1 Enter/Exit?
0: User wishes to exit room
1: User wishes to enter room
NT Room Name (Used when entering rooms)
NT Password (Empty if password not used)
002: Create a new Room
Size:
1 Room Type
0: Normal room (has sub rooms)
1: Game room (no sub rooms)
NT Room Title
NT Room Description
NT Room Password (blank if no password)
003: Requests Room Info
Size:
NT Room Name
Server SMOnline packets:
000: Login Response
1 Approval Status
0: Approved
1: Approval Failed
NT Login response (plain text)
001: Room Update (Changing rooms)
Size:
1 Type of update
0: Change Room Title
1: Update List of other rooms (or games)
If Room Title Update:
NT Room Title
NT Room Description
1 Type of room:
0: Chat room
1: Game room
1 Allows creation of sub room.
0: Does not allow creation of subrooms
1: Allows creation of subrooms
If Room List Update:
1 Number of rooms
NT Room1 Title
NT Room1 Description
NT Room2 Title
NT Room2 Description
...
NT RoomN Title
NT RoomN Description
Room Status appended for reverse compatibility
1 Room1 Status
0: Normal Room
1: Unused
2: Room in game
3: First stage of song selection has been done
4: Second stage of song selection has been done
1 Room2 Status
...
1 RoomN Status
Room Flags appended for reverse compatibility
1 Room1 Flags
bit 0: Passworded if true
1 Room2 Status
...
1 RoomN Status
002: Request general information from server.
1 Format for stats
0: Normal unformatted stats
003: Room Info
Size:
NT Last Song Title
NT Last Song Subtitle
NT Last Song Artist
1 Num Players
1 Max Players
NT Player1 Name
...
NT PlayerN Name
File diff suppressed because it is too large Load Diff
+33 -33
View File
@@ -1,34 +1,34 @@
SMXML Control Format | Informal and Unofficial Specification
____________________________________________________________
There is no formal DTD for SMXML as of this writing, so we can only go on the
example file and comments written about the format from developers.
Chris Danford writes[1]:
"I've been finishing a new in-game download system. The goal is to:
- Have as few user clicks as possible to install a package (or many packages)
- Have one cross-platform method of installing packages
The new file association - .smxml - contains control data that StepMania will use
on launch. The file format currently supports one or more packages to install."
The canonical sample SMXML file[2] looks like this:
<SMXML>
<Credentials>
<Username>chrisdanford</Username>
<PasswordToken>#&DJASDJ#$&$JSD</PasswordToken>
</Credentials>
<Install>
<URL>http://stepmaniam3.com/sm/data/files/Songs_DJMcFox_PlagueMixOne.smzip</URL>
</Install>
<Install>
<URL>http://stepmaniam3.com/sm/data/files/Songs_DJMcFox_PlagueMixTwo.smzip</URL>
</Install>
</SMXML>
The Credentials section seems to be optional, but is useful to know about:
"In the future, it might also be used to pass login credentials or other tokens
from the web site to StepMania for things like in-game uploads (instead of going
to stepmaniashare.com)"[1]
__________________________________________________________
[1] http://www.stepmania.com/forums/showthread.php?t=24203
SMXML Control Format | Informal and Unofficial Specification
____________________________________________________________
There is no formal DTD for SMXML as of this writing, so we can only go on the
example file and comments written about the format from developers.
Chris Danford writes[1]:
"I've been finishing a new in-game download system. The goal is to:
- Have as few user clicks as possible to install a package (or many packages)
- Have one cross-platform method of installing packages
The new file association - .smxml - contains control data that StepMania will use
on launch. The file format currently supports one or more packages to install."
The canonical sample SMXML file[2] looks like this:
<SMXML>
<Credentials>
<Username>chrisdanford</Username>
<PasswordToken>#&DJASDJ#$&$JSD</PasswordToken>
</Credentials>
<Install>
<URL>http://stepmaniam3.com/sm/data/files/Songs_DJMcFox_PlagueMixOne.smzip</URL>
</Install>
<Install>
<URL>http://stepmaniam3.com/sm/data/files/Songs_DJMcFox_PlagueMixTwo.smzip</URL>
</Install>
</SMXML>
The Credentials section seems to be optional, but is useful to know about:
"In the future, it might also be used to pass login credentials or other tokens
from the web site to StepMania for things like in-game uploads (instead of going
to stepmaniashare.com)"[1]
__________________________________________________________
[1] http://www.stepmania.com/forums/showthread.php?t=24203
[2] http://www.stepmania.com/test.smxml
+13 -13
View File
@@ -1,14 +1,14 @@
Code that uses ScreenTextEntry::TextEntry()
-------------------------------------------
RoomWheel.cpp
ScreenEdit.cpp
ScreenEditMenu.cpp
ScreenNetRoom.cpp
ScreenNetworkOptions.cpp
ScreenOptionsCourseOverview.cpp
ScreenOptionsManageCourses.cpp
ScreenOptionsManageEditSteps.cpp
ScreenOptionsManageProfiles.cpp
ScreenOptionsReviewWorkout.cpp
ScreenPackages.cpp
Code that uses ScreenTextEntry::TextEntry()
-------------------------------------------
RoomWheel.cpp
ScreenEdit.cpp
ScreenEditMenu.cpp
ScreenNetRoom.cpp
ScreenNetworkOptions.cpp
ScreenOptionsCourseOverview.cpp
ScreenOptionsManageCourses.cpp
ScreenOptionsManageEditSteps.cpp
ScreenOptionsManageProfiles.cpp
ScreenOptionsReviewWorkout.cpp
ScreenPackages.cpp
ScreenTestFonts.cpp
+16 -16
View File
@@ -1,17 +1,17 @@
warps are purple in the editor btw
beat 445.500 = 107.02325 seconds
----------------------------------
beat 453.72919 = 107.04103 seconds
00:03.145: ==NotesLoSM negbpm==
00:03.145: fnextposbeat = 449.500000, fnextposbpm = 47.419998,
00:03.145: fdelta = 4.040333, fwarpto = 453.540344
00:47.228: ==TimingData Delta as NoteRows==
00:47.228: fDeltaBeat = 4.000000 (beat)
00:47.228: fDeltaBeat = (NextBPMSeg 0.790333 - abs(fBPS 0.750000)) + (nextStartRow 21576 - thisRow 21384)
00:47.228: ==TimingData Delta as Beats==
00:47.228: fDeltaBeat = 4.000000 (beat)
warps are purple in the editor btw
beat 445.500 = 107.02325 seconds
----------------------------------
beat 453.72919 = 107.04103 seconds
00:03.145: ==NotesLoSM negbpm==
00:03.145: fnextposbeat = 449.500000, fnextposbpm = 47.419998,
00:03.145: fdelta = 4.040333, fwarpto = 453.540344
00:47.228: ==TimingData Delta as NoteRows==
00:47.228: fDeltaBeat = 4.000000 (beat)
00:47.228: fDeltaBeat = (NextBPMSeg 0.790333 - abs(fBPS 0.750000)) + (nextStartRow 21576 - thisRow 21384)
00:47.228: ==TimingData Delta as Beats==
00:47.228: fDeltaBeat = 4.000000 (beat)
00:47.228: fDeltaBeat = (NextBPMSeg 0.790333 - abs(fBPS 0.750000)) + (nextStartRow 21576 - thisRow 21384)
+131 -131
View File
@@ -1,132 +1,132 @@
HOW 2 UZE EZSOKETS BY FWEEM INC
Hey there. ezsockets is the socket library used in StepMania. If you are going to
develop any extended network functionality, it would be good to know about
ezsockets. This is by no means an exhaustive guide, as it just covers what's
contained in the header, as well as what that code does.
Section 1: low level commands===================================================
These are typically used for connecting to the server, according to a cursory
glance at ScreenPackages code.
=="Crating" a socket== (lol typos in the comments)
There are three functions here, each with different arguments (yay overloading).
All of them return a bool.
bool create(int Protocol, int Type);
This shows what's needed to make a socket. Consult the internet for complete
documentation as to possible values, but here are some ones to know:
[Protocol]
TCP = IPPROTO_TCP
UDP = IPPROTO_UDP
Raw sockets = IPPROTO_RAW (though "Protocol" is used in the code. Raw sockets
are not supported on Xbox)
bool create();
Creates a socket using (IPPROTO_TCP, SOCK_STREAM) as the parameters.
bool create(int Protocol);
This picks the right Type for you based on what Protocol you choose.
TCP uses SOCK_STREAM, UDP uses SOCK_DGRAM for the Type value.
==Binding Sockets to a Local Port==
bool bind(unsigned short port);
==Listening==
bool listen()
==Accepting==
bool accept(EzSockets &socket);
If it's not blocking and you can't read it, this will return false.
Other than that... ??
==Connecting to Server==
bool connect(const string& host, unsigned short port);
Connects to the server at host using port.
==Closing/Killing Sockets==
void close();
Sets the state to disconnected, sets the buffers to empty strings,
then closes the socket.
==Checking Socket Status==
bool check();
"see if socket has been created". It checks (sock != INVALID_SOCKET) on the
Xbox and (sock > SOCKET_NONE) on every other platform.
bool CanRead();
Returns true if you can read from the socket.
bool DataAvailable() { return ( ( inBuffer.length()>0 ) || CanRead() ); }
Yeah that's it in a nutshell. If the input buffer has data or you can read,
there's data available.
bool IsError();
Returns true if there's an error.
bool CanWrite();
Returns true if you can write to the socket.
==???==
long uAddr();
void update();
Section 2: Higher Level Commands================================================
These are higher level, since they assume you've already gotten the socket up
and running (see check() in Section 1).
//Raw data system
void SendData(const string& outData);
void SendData(const char *data, unsigned int bytes);
Send off some data that's either a string or a char buffer + num bytes.
int ReadData(char *data, unsigned int bytes);
Reads data, returns number of bytes read.
int PeekData(char *data, unsigned int bytes);
Peeks at the data, returns number of bytes read.
//Packet system (for structures and classes)
void SendPack(const char *data, unsigned int bytes);
int ReadPack(char *data, unsigned int max);
int PeekPack(char *data, unsigned int max);
Similar to the raw data system above, but... you guessed it, for structures and classes.
//String (Flash) system / Null-terminated strings
void SendStr(const string& data, char delim = '\0');
int ReadStr(string& data, char delim = '\0');
int PeekStr(string& data, char delim = '\0');
Similar to above, with null terminated strings.
Section 3: putting it all together==============================================
okay i didn't test this; this is based on ScreenPackages code (specifically
ScreenPackages::EnterURL()), which assumes you have a private EzSockets object
named m_wSocket.
{
// defaults
RString sProto;
RString sServer;
int iPort=80;
RString sAddress;
m_wSocket.create(); // will create a TCP socket
m_wSocket.blocking = true; // you want to set this so that nothing else can use this socket and fuck things up
m_wSocket.connect( sServer, (short)iPort ); // connect uses an unsigned short, so a cast is needed. (int was used because of other code) check if this returns true/false, pls
// makin' headers (using SendData with raw data; http 1.0 in this case)
RString Header="";
Header = "GET "+sAddress+" HTTP/1.0\r\n";
Header+= "Host: " + Server + "\r\n";
Header+= "Connection: closed\r\n\r\n";
m_wSocket.SendData( Header.c_str(), Header.length() );
m_wSocket.blocking = false; // once you're done, you don't need to have the socket blocking anymore
// some other code can go here...
m_wSocket.close(); // and if you're done, you can close the socket.
HOW 2 UZE EZSOKETS BY FWEEM INC
Hey there. ezsockets is the socket library used in StepMania. If you are going to
develop any extended network functionality, it would be good to know about
ezsockets. This is by no means an exhaustive guide, as it just covers what's
contained in the header, as well as what that code does.
Section 1: low level commands===================================================
These are typically used for connecting to the server, according to a cursory
glance at ScreenPackages code.
=="Crating" a socket== (lol typos in the comments)
There are three functions here, each with different arguments (yay overloading).
All of them return a bool.
bool create(int Protocol, int Type);
This shows what's needed to make a socket. Consult the internet for complete
documentation as to possible values, but here are some ones to know:
[Protocol]
TCP = IPPROTO_TCP
UDP = IPPROTO_UDP
Raw sockets = IPPROTO_RAW (though "Protocol" is used in the code. Raw sockets
are not supported on Xbox)
bool create();
Creates a socket using (IPPROTO_TCP, SOCK_STREAM) as the parameters.
bool create(int Protocol);
This picks the right Type for you based on what Protocol you choose.
TCP uses SOCK_STREAM, UDP uses SOCK_DGRAM for the Type value.
==Binding Sockets to a Local Port==
bool bind(unsigned short port);
==Listening==
bool listen()
==Accepting==
bool accept(EzSockets &socket);
If it's not blocking and you can't read it, this will return false.
Other than that... ??
==Connecting to Server==
bool connect(const string& host, unsigned short port);
Connects to the server at host using port.
==Closing/Killing Sockets==
void close();
Sets the state to disconnected, sets the buffers to empty strings,
then closes the socket.
==Checking Socket Status==
bool check();
"see if socket has been created". It checks (sock != INVALID_SOCKET) on the
Xbox and (sock > SOCKET_NONE) on every other platform.
bool CanRead();
Returns true if you can read from the socket.
bool DataAvailable() { return ( ( inBuffer.length()>0 ) || CanRead() ); }
Yeah that's it in a nutshell. If the input buffer has data or you can read,
there's data available.
bool IsError();
Returns true if there's an error.
bool CanWrite();
Returns true if you can write to the socket.
==???==
long uAddr();
void update();
Section 2: Higher Level Commands================================================
These are higher level, since they assume you've already gotten the socket up
and running (see check() in Section 1).
//Raw data system
void SendData(const string& outData);
void SendData(const char *data, unsigned int bytes);
Send off some data that's either a string or a char buffer + num bytes.
int ReadData(char *data, unsigned int bytes);
Reads data, returns number of bytes read.
int PeekData(char *data, unsigned int bytes);
Peeks at the data, returns number of bytes read.
//Packet system (for structures and classes)
void SendPack(const char *data, unsigned int bytes);
int ReadPack(char *data, unsigned int max);
int PeekPack(char *data, unsigned int max);
Similar to the raw data system above, but... you guessed it, for structures and classes.
//String (Flash) system / Null-terminated strings
void SendStr(const string& data, char delim = '\0');
int ReadStr(string& data, char delim = '\0');
int PeekStr(string& data, char delim = '\0');
Similar to above, with null terminated strings.
Section 3: putting it all together==============================================
okay i didn't test this; this is based on ScreenPackages code (specifically
ScreenPackages::EnterURL()), which assumes you have a private EzSockets object
named m_wSocket.
{
// defaults
RString sProto;
RString sServer;
int iPort=80;
RString sAddress;
m_wSocket.create(); // will create a TCP socket
m_wSocket.blocking = true; // you want to set this so that nothing else can use this socket and fuck things up
m_wSocket.connect( sServer, (short)iPort ); // connect uses an unsigned short, so a cast is needed. (int was used because of other code) check if this returns true/false, pls
// makin' headers (using SendData with raw data; http 1.0 in this case)
RString Header="";
Header = "GET "+sAddress+" HTTP/1.0\r\n";
Header+= "Host: " + Server + "\r\n";
Header+= "Connection: closed\r\n\r\n";
m_wSocket.SendData( Header.c_str(), Header.length() );
m_wSocket.blocking = false; // once you're done, you don't need to have the socket blocking anymore
// some other code can go here...
m_wSocket.close(); // and if you're done, you can close the socket.
}
+25 -25
View File
@@ -1,26 +1,26 @@
Notable StepMania CVS commit logs
--------------------------------------------------------------------------------
http://sourceforge.net/mailarchive/forum.php?thread_name=E1ICWkp-00073O-Ay%40mail.sourceforge.net&forum_name=stepmania-cvs
"Any given step can continue the combo, maintain the combo, break the combo, or
outright miss. Those that break the combo aren't misses and shouldn't increase
the miss counter but they should break the combo."
Yeah right it doesn't seem to do that...
--------------------------------------------------------------------------------
http://sourceforge.net/mailarchive/message.php?msg_id=E1FWjDl-0000Ob-IY%40mail.sourceforge.net
"remove unfinished, crufty multiplayer stuff"
+
http://sourceforge.net/mailarchive/message.php?msg_id=E1FWjpV-0007eC-2G%40mail.sourceforge.net
"remove unfinished multiplayer stuff"
Some of the multiplayer stuff was later re-assembled but I think some of the
pieces are missing.
http://sourceforge.net/mailarchive/message.php?msg_id=E1HbPRZ-0003kC-8h%40mail.sourceforge.net
"We have two ways of only showing songs in roulette: unlocks and "#SELECTABLE".
I'm not sure if this feature is worth keeping, but there definitely doesn't
need to be two ways to do it. Remove #SELECTABLE:ROULETTE."
________________________________________________________________________________
Viewing old source code:
http://stepmania.cvs.sourceforge.net/stepmania/stepmania/src/
Notable StepMania CVS commit logs
--------------------------------------------------------------------------------
http://sourceforge.net/mailarchive/forum.php?thread_name=E1ICWkp-00073O-Ay%40mail.sourceforge.net&forum_name=stepmania-cvs
"Any given step can continue the combo, maintain the combo, break the combo, or
outright miss. Those that break the combo aren't misses and shouldn't increase
the miss counter but they should break the combo."
Yeah right it doesn't seem to do that...
--------------------------------------------------------------------------------
http://sourceforge.net/mailarchive/message.php?msg_id=E1FWjDl-0000Ob-IY%40mail.sourceforge.net
"remove unfinished, crufty multiplayer stuff"
+
http://sourceforge.net/mailarchive/message.php?msg_id=E1FWjpV-0007eC-2G%40mail.sourceforge.net
"remove unfinished multiplayer stuff"
Some of the multiplayer stuff was later re-assembled but I think some of the
pieces are missing.
http://sourceforge.net/mailarchive/message.php?msg_id=E1HbPRZ-0003kC-8h%40mail.sourceforge.net
"We have two ways of only showing songs in roulette: unlocks and "#SELECTABLE".
I'm not sure if this feature is worth keeping, but there definitely doesn't
need to be two ways to do it. Remove #SELECTABLE:ROULETTE."
________________________________________________________________________________
Viewing old source code:
http://stepmania.cvs.sourceforge.net/stepmania/stepmania/src/
put a filename at the end of it.
+37 -37
View File
@@ -1,38 +1,38 @@
as found by cppcheck against normal sm4svn source (as of 20090527), so
line numbers will be different in sm-ssc for some of these.
==================================================================================
[.\ActorFrameTexture.h:38]: (all) Memory leak: ActorFrameTexture::m_pRenderTarget
[.\AdjustSync.h:16]: (all) Memory leak: AdjustSync::s_pTimingDataOriginal
[.\AutoKeysounds.h:32]: (all) Memory leak: AutoKeysounds::m_pSharedSound
[.\Font.cpp:748]: (all) Memory leak: pPage
[.\GameSoundManager.cpp:267]: (all) Memory leak: pSound
[.\LifeMeterTime.h:40]: (all) Memory leak: LifeMeterTime::m_pStream
[.\MusicWheelItem.h:55]: (all) Memory leak: MusicWheelItem::m_pTextSectionCount
[.\OptionRow.h:131]: (all) Memory leak: OptionRow::m_textTitle
[.\PitchDetectionTestUtil.cpp:928]: (error) Mismatching allocation and deallocation: inarray
[.\PitchDetectionTestUtil.cpp:968]: (error) Mismatching allocation and deallocation: a
[.\RageFile.cpp:377]: (all) Memory leak: pFile
[.\RageFileDriverDeflate.cpp:533]: (all) Memory leak: mem
[.\RageSoundReader_ChannelSplit.h:57]: (all) Memory leak: RageSoundSplitter::m_pImpl
[.\RageSoundReader_PitchChange.h:25]: (all) Memory leak: RageSoundReader_PitchChange::m_pSpeedChange
[.\RageSoundReader_PitchChange.h:26]: (all) Memory leak: RageSoundReader_PitchChange::m_pResample
[.\RageThreads.cpp:141]: (all) Memory leak: pLock
[.\archutils\Unix\CrashHandlerChild.cpp:290]: (error) Resource leak: tty
[.\crypto\CryptRSA.cpp:447]: (error) Memory leak: rsa
as found by cppcheck against normal sm4svn source (as of 20090527), so
line numbers will be different in sm-ssc for some of these.
==================================================================================
[.\ActorFrameTexture.h:38]: (all) Memory leak: ActorFrameTexture::m_pRenderTarget
[.\AdjustSync.h:16]: (all) Memory leak: AdjustSync::s_pTimingDataOriginal
[.\AutoKeysounds.h:32]: (all) Memory leak: AutoKeysounds::m_pSharedSound
[.\Font.cpp:748]: (all) Memory leak: pPage
[.\GameSoundManager.cpp:267]: (all) Memory leak: pSound
[.\LifeMeterTime.h:40]: (all) Memory leak: LifeMeterTime::m_pStream
[.\MusicWheelItem.h:55]: (all) Memory leak: MusicWheelItem::m_pTextSectionCount
[.\OptionRow.h:131]: (all) Memory leak: OptionRow::m_textTitle
[.\PitchDetectionTestUtil.cpp:928]: (error) Mismatching allocation and deallocation: inarray
[.\PitchDetectionTestUtil.cpp:968]: (error) Mismatching allocation and deallocation: a
[.\RageFile.cpp:377]: (all) Memory leak: pFile
[.\RageFileDriverDeflate.cpp:533]: (all) Memory leak: mem
[.\RageSoundReader_ChannelSplit.h:57]: (all) Memory leak: RageSoundSplitter::m_pImpl
[.\RageSoundReader_PitchChange.h:25]: (all) Memory leak: RageSoundReader_PitchChange::m_pSpeedChange
[.\RageSoundReader_PitchChange.h:26]: (all) Memory leak: RageSoundReader_PitchChange::m_pResample
[.\RageThreads.cpp:141]: (all) Memory leak: pLock
[.\archutils\Unix\CrashHandlerChild.cpp:290]: (error) Resource leak: tty
[.\crypto\CryptRSA.cpp:447]: (error) Memory leak: rsa
[.\smpackage\ZipArchive\Linux\ZipPlatform.cpp:87]: (style) Found 'mktemp'. You should use 'mkstemp' instead
+79 -79
View File
@@ -1,80 +1,80 @@
okay what we should probabably do for rival data is fuck up stats somehow.
Here's what rival data should have, taken from Stats.xml
==GeneralData==
This section holds very BASIC identifying and general information.
<GeneralData>
<DisplayName>AJ</DisplayName>
<Guid>5ece7871bd060600</Guid>
<LastPlayedMachineGuid>faeae5b0da56509c</LastPlayedMachineGuid>
<LastPlayedDate>2008-07-06</LastPlayedDate>
</GeneralData>
==SongScores==
Where song scores are held. Each song has its own entry in here.
<Song Dir='Songs/Dance Dance Revolution 6th Mix -Max-/Do It Right/'>
<Steps Difficulty='Hard' StepsType='dance-single'>
<HighScoreList>
<NumTimesPlayed>2</NumTimesPlayed>
<LastPlayed>2008-02-08</LastPlayed>
<HighGrade>Tier02</HighGrade>
<HighScore>
<Grade>Tier02</Grade>
<PercentDP>0.952000</PercentDP>
<Modifiers>3x, Overhead, delta</Modifiers>
<DateTime>2008-02-08 17:12:08</DateTime>
<PlayerGuid>5ece7871bd060600</PlayerGuid>
<MachineGuid>faeae5b0da56509c</MachineGuid>
<TapNoteScores>
<HitMine>0</HitMine>
<AvoidMine>0</AvoidMine>
<CheckpointMiss>0</CheckpointMiss>
<Miss>0</Miss>
<W5>0</W5>
<W4>0</W4>
<W3>0</W3>
<W2>41</W2>
<W1>244</W1>
<CheckpointHit>0</CheckpointHit>
</TapNoteScores>
<HoldNoteScores>
<LetGo>0</LetGo>
<Held>0</Held>
</HoldNoteScores>
</HighScore>
<HighScore>
<Grade>Tier03</Grade>
<PercentDP>0.942600</PercentDP>
<Modifiers>3x, delta</Modifiers>
<DateTime>2008-02-08 17:08:17</DateTime>
<PlayerGuid>5ece7871bd060600</PlayerGuid>
<MachineGuid>faeae5b0da56509c</MachineGuid>
<TapNoteScores>
<HitMine>0</HitMine>
<AvoidMine>0</AvoidMine>
<CheckpointMiss>0</CheckpointMiss>
<Miss>0</Miss>
<W5>0</W5>
<W4>1</W4>
<W3>0</W3>
<W2>46</W2>
<W1>238</W1>
<CheckpointHit>0</CheckpointHit>
</TapNoteScores>
<HoldNoteScores>
<LetGo>0</LetGo>
<Held>0</Held>
</HoldNoteScores>
</HighScore>
</HighScoreList>
</Steps>
okay what we should probabably do for rival data is fuck up stats somehow.
Here's what rival data should have, taken from Stats.xml
==GeneralData==
This section holds very BASIC identifying and general information.
<GeneralData>
<DisplayName>AJ</DisplayName>
<Guid>5ece7871bd060600</Guid>
<LastPlayedMachineGuid>faeae5b0da56509c</LastPlayedMachineGuid>
<LastPlayedDate>2008-07-06</LastPlayedDate>
</GeneralData>
==SongScores==
Where song scores are held. Each song has its own entry in here.
<Song Dir='Songs/Dance Dance Revolution 6th Mix -Max-/Do It Right/'>
<Steps Difficulty='Hard' StepsType='dance-single'>
<HighScoreList>
<NumTimesPlayed>2</NumTimesPlayed>
<LastPlayed>2008-02-08</LastPlayed>
<HighGrade>Tier02</HighGrade>
<HighScore>
<Grade>Tier02</Grade>
<PercentDP>0.952000</PercentDP>
<Modifiers>3x, Overhead, delta</Modifiers>
<DateTime>2008-02-08 17:12:08</DateTime>
<PlayerGuid>5ece7871bd060600</PlayerGuid>
<MachineGuid>faeae5b0da56509c</MachineGuid>
<TapNoteScores>
<HitMine>0</HitMine>
<AvoidMine>0</AvoidMine>
<CheckpointMiss>0</CheckpointMiss>
<Miss>0</Miss>
<W5>0</W5>
<W4>0</W4>
<W3>0</W3>
<W2>41</W2>
<W1>244</W1>
<CheckpointHit>0</CheckpointHit>
</TapNoteScores>
<HoldNoteScores>
<LetGo>0</LetGo>
<Held>0</Held>
</HoldNoteScores>
</HighScore>
<HighScore>
<Grade>Tier03</Grade>
<PercentDP>0.942600</PercentDP>
<Modifiers>3x, delta</Modifiers>
<DateTime>2008-02-08 17:08:17</DateTime>
<PlayerGuid>5ece7871bd060600</PlayerGuid>
<MachineGuid>faeae5b0da56509c</MachineGuid>
<TapNoteScores>
<HitMine>0</HitMine>
<AvoidMine>0</AvoidMine>
<CheckpointMiss>0</CheckpointMiss>
<Miss>0</Miss>
<W5>0</W5>
<W4>1</W4>
<W3>0</W3>
<W2>46</W2>
<W1>238</W1>
<CheckpointHit>0</CheckpointHit>
</TapNoteScores>
<HoldNoteScores>
<LetGo>0</LetGo>
<Held>0</Held>
</HoldNoteScores>
</HighScore>
</HighScoreList>
</Steps>
</Song>
+11 -11
View File
@@ -1,12 +1,12 @@
[as taken from src/ProductInfo.h]
Version info displayed to the user.
These are the 'official' version designations:
* "experimental: pre-release versions
* "private beta v0.0": hmm, think about it for a second there.
==Public versions below this line==
* "v0.0 alpha #": Alpha versions (bug squashing, polishing until we reach beta)
* "v0.0 beta #": Beta versions (bug squashing, _focus_ is on high priority bugs)
* "v0.0 rc#": Release Candidates (if there are no problems, move on to final)
[as taken from src/ProductInfo.h]
Version info displayed to the user.
These are the 'official' version designations:
* "experimental: pre-release versions
* "private beta v0.0": hmm, think about it for a second there.
==Public versions below this line==
* "v0.0 alpha #": Alpha versions (bug squashing, polishing until we reach beta)
* "v0.0 beta #": Beta versions (bug squashing, _focus_ is on high priority bugs)
* "v0.0 rc#": Release Candidates (if there are no problems, move on to final)
* "v0.0": Final Releases