============================= Unofficial .1 Format Document Created 2007.04.03 Updated 2007.04.06 ----------------------------- A .1 file immediately begins with the note-chart offset header. This header contains 12 entries, 6 1-player charts, followed by 6 2-player charts. Even if a song doesn't have 12 charts, the .1 header must contain 2 sets of 6 entries (Unused entries are zero'ed out). The typical entry order: -Hyper (1P 7K) -Normal (1P 7K) -Another (1P 7K) -Beginner (1P 7K) -(unused) -(unused) -Hyper (2P 14K) -Normal (2P 14K) -Another (2P 14K) -(unused) -(unused) -(unused) Each note-chart entry is 8 bytes in size. =================================================================== 0: 4-byte DWord - Offset to beginning of note-chart data (in bytes) 4: 4-byte DWord - Size of note-chart data (in bytes) ------------------------------------------------------------------- After obtaining the Offset and Size values, we can then access the note chart data! The data consists of 8-byte entries for each event (note, tempo change, etc.). ================================================ 0: 4-byte DWord - Event time (in seconds/59.941) 4: 1-byte - Event type 5: 1-byte - Data1 (explained below) 6: 2-byte Word - Data2 (explained below) ------------------------------------------------ Event time is the time an event is played. An event time value of 2130706432 (byte values 0,0,0,127) marks the end of the note chart sequence. Event types: Column numbers: ========================= ==================== 0 - Player 1 Note 1 3 5 1 - Player 2 Note (Scratch) 7 0 2 4 6 2 - Player 1 Set Sound # -------------------- 3 - Player 2 Set Sound # 4 - Tempo change 5 - (Unknown, Default Measure Size?) 6 - "Song Stop" event 7 - Autoplay BG sound 8 - (Unknown, maybe timing set?) 12 - Measure divider line 16 - (Depends on Data1) ------------------------- Player Note (Events 0,1) - Places a note in the column indicated by Data1. Set Sound # (Events 2,3) - Tells what sound the following notes in the specified column should play. Data1 indicates the column number, Data 2 the sound number. Tempo Change (Event 4) - Divide Data2 by Data1 to obtain the new tempo. That procedure allows for floating-point numbers to be stored in only 3 bytes (Floating-point numbers are 4-bytes in length) Default Measure Size (Event 5) - I don't know what this does, or if it's even used. Song Stop (Event 6) - Does what it says. When this event is triggered, the screen will fade out and go to the results. Autoplay BG sound (Event 7) - Simple. Play the sound referenced by Data2. Measure Divider Line (Event 12) - Places a measure line in the note structure depending on Data 1 (If Data1 is 0, place in Pl.1. If 1, place in Pl.2) Total Notes (Event 16, Data1 0) - The number of playable notes in the song are held in Data2. Unknown (Event 16, Data1 1) - "Bad" judgement setting? I don't know.