Register - Login
Views: 99380478
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-23-22 11:28:15 PM
Jul - SM64 Hacking (Archive) - SM64 Music Editing New poll - New thread - New reply
Pages: 1 2 3 4 5 6 7 8 Next newer thread | Next older thread
FieryIce

Luigi
Level: 119


Posts: 9/4161
EXP: 18740356
For next: 188935

Since: 12-18-08

From: Chicago

Since last post: 179 days
Last activity: 5 days

Posted on 12-20-08 11:36:32 AM Link | Quote
Awesome, the ability to add new music to the game seems awesome, it is extremely important when it comes to making a hack of the game that really makes the player feel like it's a whole new game. Messiaen and vl-tone are gods in SM64 hacking!

Keep up the good work guys!
messiaen
Catgirl
Level: 68


Posts: 440/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-20-08 03:55:15 PM (last edited by messiaen at 12-21-08 01:06 PM) Link | Quote
Here's a new music tool which needed to be written before the importer:

Mario 64 Sequence Inserter v0.1.

Don't be fooled by the name, it currently only replaces existing sequences with custom ones, but I'm sure eventually it will also handle insertion so you can have more than the original 34 sequences.

The imported sequences are placed in the ROM after the original sequences (which are left untouched for a future "cleaning" tool), and the pointers are adjusted automatically. You can use sequences bigger than the original ones you're replacing, as there's plenty of empty space in the ROM for this.

Usage is:

insert_seq sequence rom_file sequence_number (check insert_seq.txt for more details).

There are two sample sequences, smb3.m64 and rescue_egg.m64. The first one is the SMB3 Overworld 2 and the second one was imported from Super Mario World using the current working build of the importer tool. Don't except the importer output to be this good, this was an exception.

Useful hint: if you specify number 666 (ie, insert_rip smb3.m64 mario64.z64 666), ALL the sequences will be replaced with the one you're inserting. This is very useful so you can hear which instrument set fits your sequence better.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Firetheguy21
User
Level: 9


Posts: 8/12
EXP: 2902
For next: 260

Since: 12-17-08


Since last post: 13.3 years
Last activity: 13.3 years

Posted on 12-20-08 07:53:40 PM (last edited by Firetheguy21 at 12-20-08 04:59 PM) Link | Quote
I so need to learn hexdecimal.

So are you saying, messian, that you can possibly add more tracks to the game than replacing the ones that are already in?

I also think I have a theory on how the pirahna music works. There could be an action code where when you go near the pirahna plant that activates a fade activation on the music. There could be one code on the Pirahna that makes the music change when aproched. Maybe if you can add the same code to a different object, it will set off.
Can anybody search this?
AAA
Member
Level: 15


Posts: 34/35
EXP: 14807
For next: 1577

Since: 04-23-08


Since last post: 13.3 years
Last activity: 13.5 years

Posted on 12-21-08 03:00:01 AM Link | Quote
Originally posted by Firetheguy21
I so need to learn hexdecimal.

So are you saying, messian, that you can possibly add more tracks to the game than replacing the ones that are already in?

I also think I have a theory on how the pirahna music works. There could be an action code where when you go near the pirahna plant that activates a fade activation on the music. There could be one code on the Pirahna that makes the music change when aproched. Maybe if you can add the same code to a different object, it will set off.
Can anybody search this?

There is an object that has similar effect. The "Camera Anchor?" object.
messiaen
Catgirl
Level: 68


Posts: 441/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-21-08 12:22:48 PM Link | Quote
The Camera Anchor has been already discussed in the last page of this thread.

There's no need to learn hexadecimal to use the Inserter tool as well as the importer (whenever it's released). However, you'll probably have to correct stuff in the .mml file (which is text-based, so you can edit it in Notepad), especially if you are importing from a MIDI file using some MIDI->MML tool.

I might as well produce a simple editor for the sequences produced by the importer, so you can change instrument/volume/pan/gate time of each channel until you find good settings without having to use a hex editor.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Firetheguy21
User
Level: 9


Posts: 9/12
EXP: 2902
For next: 260

Since: 12-17-08


Since last post: 13.3 years
Last activity: 13.3 years

Posted on 12-21-08 07:35:48 PM Link | Quote
Although I may not have an explanation to the lullaby music in hex, I think I have the general idea.

When you wake up the pirahna, it will not play the music. This could link to the behavior code that turns it on and off.
If that code can be found, it could possibly be put to other objects with some simple editing.
I might as well search it out when I have the time.
messiaen
Catgirl
Level: 68


Posts: 442/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-22-08 11:35:08 AM (last edited by messiaen at 12-22-08 08:58 AM) Link | Quote
Here's a Sequence Repository with files that can be used with the Sequence inserter. All of them except smb3.m64 were produced by the importer. The songs aren't looped as the importer doesn't do that yet.

Here's a few of these sequences inserted in the game!

<object width="425" height="344"><embed src="http://www.youtube.com/v/NaZGlj0D8Hw&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Stevoisiak
Member
Level: 38


Posts: 190/283
EXP: 345476
For next: 24971

Since: 11-22-07

From: New York, Long Island

Since last post: 12.3 years
Last activity: 5.6 years

Posted on 12-22-08 08:54:00 PM (last edited by Stevoisiak at 12-22-08 07:59 PM) Link | Quote
Originally posted by messiaen
Here's a Sequence Repository with files that can be used with the Sequence inserter. All of them except smb3.m64 were produced by the importer.


Wait. Does the importer add m64 files, or create them?
messiaen
Catgirl
Level: 68


Posts: 443/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-22-08 11:41:32 PM Link | Quote
The importer creates the .m64 files from .mml files (which, in turn, can be produced from MIDIs using one of the available MIDI->MML tools). The inserter saves the custom sequences into the ROM. There's no hex editing involved, but just like SMW you'll need to do some minor changes to the .mml file if you want a good result.

This tutorial from SMW Central is a good guide for the MML format.

I got the loops to work correctly, so I am pretty close to a first release. Perhaps as a Christmas gift ?

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Firetheguy21
User
Level: 9


Posts: 10/12
EXP: 2902
For next: 260

Since: 12-17-08


Since last post: 13.3 years
Last activity: 13.3 years

Posted on 12-23-08 05:58:39 PM Link | Quote
I haven't gotten use to the tools yet, except the one with making your own music.

So the first release will be like, everything put together?
If so, that will be nice!
Stevoisiak
Member
Level: 38


Posts: 191/283
EXP: 345476
For next: 24971

Since: 11-22-07

From: New York, Long Island

Since last post: 12.3 years
Last activity: 5.6 years

Posted on 12-23-08 11:09:12 PM Link | Quote
Originally posted by messiaen
I got the loops to work correctly, so I am pretty close to a first release. Perhaps as a Christmas gift ?


How ironic. The first MIDI file I converted (Using a program that doesn't have all the translation errors titled MID2MLL) was the 12 days of Christmas!
messiaen
Catgirl
Level: 68


Posts: 444/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-24-08 12:23:06 AM Link | Quote
I'm using tinymm, as it seems to be the most usual choice. Did you got mid2mml from SMW Central? I think I may have tried it, but it was in japanese and the output was a bit strange.

Along with the importer, there will be a simple program called fix_mml which can correct the .mml files produced by tinymm (the octave raisers/lowerers are inverted) so they are (almost) ready for import.

So, the steps to custom music will be (assuming you are working from a MIDI file):

1 - Convert MIDI to .mml using tinymm (or another program)
2 - If tinymm is used, run the file through mml_fix
3 - Manually edit the .mml sequence (it's a text file) to include tempo, volume and other settings.
4 - Run the importer to produce a .m64 file
5 - Use insert_seq to save the sequence into the ROM

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Stevoisiak
Member
Level: 38


Posts: 192/283
EXP: 345476
For next: 24971

Since: 11-22-07

From: New York, Long Island

Since last post: 12.3 years
Last activity: 5.6 years

Posted on 12-24-08 06:53:48 PM Link | Quote
Originally posted by messiaen
I'm using tinymm, as it seems to be the most usual choice. Did you got mid2mml from SMW Central? I think I may have tried it, but it was in japanese and the output was a bit strange.

Along with the importer, there will be a simple program called fix_mml which can correct the .mml files produced by tinymm (the octave raisers/lowerers are inverted) so they are (almost) ready for import.

So, the steps to custom music will be (assuming you are working from a MIDI file):

1 - Convert MIDI to .mml using tinymm (or another program)
2 - If tinymm is used, run the file through mml_fix
3 - Manually edit the .mml sequence (it's a text file) to include tempo, volume and other settings.
4 - Run the importer to produce a .m64 file
5 - Use insert_seq to save the sequence into the ROM


1. There is a translated verison of the program available too
2. I looked at the tutorial, and there are a few things that make me unsure, like adding instruments
3. Maybe you can combine tinymm and mml fix to get rid of a few steps.
4. Can you make a tutorial video on this after you release the program?
messiaen
Catgirl
Level: 68


Posts: 445/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-25-08 01:35:32 AM Link | Quote
I tried the translated version, but still instead of regular characters I get just "garbage". I guess it's something related to language settings/unicode or something along that lines.

I like your suggestion #3 ("maybe you can combine tinymm and mml fix to get rid of a few steps."). I'll see if I can make mml_fix do all the adjustments needed so that the file is ready to be processed by the importer. Another useful possibility is to make music in Channel 10 (in MIDI, reserved for drums/percussion) be treated as a drum track - in Mario 64 you do this by setting the instrument to 0x7F.

I'm not sure if I'll do a video tutorial, I'm thinking more about writing some guides/documentation on my site.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Firetheguy21
User
Level: 9


Posts: 11/12
EXP: 2902
For next: 260

Since: 12-17-08


Since last post: 13.3 years
Last activity: 13.3 years

Posted on 12-25-08 02:45:02 AM Link | Quote
Making good progress so far, now we just need to make it look like Toad's tool with music.
BigBrain
Member
Level: 22


Posts: 11/85
EXP: 55267
For next: 3083

Since: 09-10-08


Since last post: 8.8 years
Last activity: 6.7 years

Posted on 12-25-08 08:26:24 AM (last edited by BigBrain at 12-25-08 05:50 AM) Link | Quote
Originally posted by Firetheguy21
Making good progress so far, now we just need to make it look like Toad's tool with music.


First of all, thanks messiaen for investigating so much time in this topic and especially for keeping up Linux portability
I'm thinking about creating a frontend* for the various tools using QT (a platform independant library for creating GUI programs). Messiaen, I hope you don't have any objections against that. Also, to keep up Linux support, would it be okay to you if you released the sourcecode for the sequence bank ripper (and any other tool which I may have overlooked but which could be useful still)?

* well.. would be nothing too special though, really just a GUI for not having to use the CLI

EDIT: okay, scratch that. Just saw you already embed the Sequence Bank Ripper into the parser.
messiaen
Catgirl
Level: 68


Posts: 446/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-25-08 11:03:11 AM Link | Quote
I am creating a simple Windows frontend - I swear that's the last time I'll touch the WinAPI - for the sequece inserter, which IMO is the only program that really needs because it requires more command-line arguments. For the other tools, you can just "drag-and-drop" (in Windows) the input files.

But if you want to create a sort of an universal frontend, including the sequence ripper and all the extra tools, that would be nice.

The only source that I won't include in the first release is the importer code, because it's an incridible mess. Although most original ROM/SMW functions from Addmusic were removed, there are still bits of useless SPC-related code and header files I haven't cleared up.

But don't worry, after the experimental first version is tested out a second, much cleaner release will also include the source so other people can improve and optimize the convertion.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
messiaen
Catgirl
Level: 68


Posts: 456/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 01-09-09 12:00:17 PM Link | Quote
For documentation purposes, here is how the 'instrument set' table works. With this missing part solved, it's possible to change which instrument set each sequence uses and probably add new sequences in the game, probably up to 127 sequences.

The table is located at 0x7cc620 and it's loaded separately from the music sequences:


0x007CC620 0046 0052 0054 0056 0058 005A 005C 005E
0x007CC630 0060 0062 0064 0067 0069 006B 006D 006F
0x007CC640 0071 0073 0075 0077 0079 007B 007D 007F
0x007CC650 0081 0083 0085 0087 0089 008B 008D 008F
0x007CC660 0091 0093 0095 0B0A 0908 0706 0504 0302
0x007CC670 0100 0122 0111 0122 010E 0113 010F 0112
0x007CC680 010B 010D 0221 1001 1401 1501 1601 1701
0x007CC690 1801 1201 1901 1F01 2101 1A01 0E01 1B01
0x007CC6A0 1A01 1C01 1D01 2501 1401 2001 1E01 1B01
0x007CC6B0 1A01 2301 2401 1B00 0000 0000 0000 0000


The green bytes consist of 0x23 halfwords (2 bytes), which is the same number of sequences in the ROM. Each entry is actually a relative pointer to the 'instrument set' used by that sequence. To read the table, just use the sequence number * 2 (halfword) + 0x7cc620 (start of the table).


For instance --> Title Screen Music (sequence 0x02)
= 0x0054 (value in the table for 0x02 at offset 0x7cc624)
+ 0x7cc620 (start of the table)
----------
value at 0x7cc674 = 0x0111


Now 0x01 and 0x11 are actually two separate bytes, not an halfword. I'm not sure if the first one is also an instrument set, but the second one certainly is. So, this sequence uses instrument set 0x11 (in decimal = 17).

This number relates to the "NInst" instruments in the .ctl file. Using srip (download from dextrose.com), you can extract all (or most) sounds in the ROM and it outputs a control.h file which includes information about the sound structs used in the game in a sort of reconstructed .ctl file.

There are 37 NInst entries (0x25). Each one of these contries contain an index to the individual instrument sounds.
SRIP outputs all sounds in the format A00 + Ninst number (00 to 37) + sound index.

Here is NInstrument NInst17 (0x11), the Title Screen SMB Music instrument set:

Sound1700, 0x00 = Snare Drum
Sound1701, 0x01 = Fingered Bass
NULL, 0x02 = NULL = same as last one (0x01)
Sound1703, 0x03 = Organ
Sound1704, 0x04 = Steel Drum
Sound1705, 0x05 = Trumpet
Sound1706, 0x06 = Slap Bass
Sound1707, 0x07 = Synth
Sound1708, 0x08 = Clavinet
NULL, 0x09 = NULL = same as last one (0x08)
Sound1710, 0x0A = Drum Sample (hi-hat)
Sound1711, 0x0B = Drum Sample
Sound1712, 0x0C = Drum Sample
Sound1713, 0x0D = Drum Sample

This is the index used inside the Title Screen Music (for the 0xC1 instrument command, or '@' in mml2m64). Some of the NInst are sound effects, such as explosions and Mario sounds.

If someone could help labelling out all the sound files (trying to keep names close to standard General Midi instruments), that would be of great help.

Getting back to the table, here is the code that copy this pointer table to RAM, in case we want to move it in the future:

803198BC: LUI V1, 0x8022
803198C0: ADDIU V1, V1, 0x6B58
803198C4: LUI A0, 0x007D
803198C8: SW V0, 0x0000 (V1)
803198CC: ADDIU A0, A0, 0xC620 ; 0x7cc620
803198D0: OR A1, V0, R0
803198D4: JAL 0x80318040 ; BlockDmaCopy
803198D8: ADDIU A2, R0, 0x0100

0x80226b58 is a pointer to the location of this 'instrument set' table in RAM. (It will point to 0x801D0370, or wherever it gets allocated).


____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
messiaen
Catgirl
Level: 68


Posts: 462/1085
EXP: 2594043
For next: 134757

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 01-21-09 11:44:37 AM Link | Quote
This is the data from the instrument table (see previous post):


Sequence #00. Pointer = 0046 NInst = 11 and 10 (probably used for Mario Sounds)
Sequence #01. Pointer = 0052 NInst = 01 and 34
Sequence #02. Pointer = 0054 NInst = 01 and 17
Sequence #03. Pointer = 0056 NInst = 01 and 34
Sequence #04. Pointer = 0058 NInst = 01 and 14
Sequence #05. Pointer = 005a NInst = 01 and 19
Sequence #06. Pointer = 005c NInst = 01 and 15
Sequence #07. Pointer = 005e NInst = 01 and 18
Sequence #08. Pointer = 0060 NInst = 01 and 11
Sequence #09. Pointer = 0062 NInst = 01 and 13
Sequence #0a. Pointer = 0064 NInst = 02 and 33
Sequence #0b. Pointer = 0067 NInst = 01 and 20
Sequence #0c. Pointer = 0069 NInst = 01 and 21
Sequence #0d. Pointer = 006b NInst = 01 and 22
Sequence #0e. Pointer = 006d NInst = 01 and 23
Sequence #0f. Pointer = 006f NInst = 01 and 24
Sequence #10. Pointer = 0071 NInst = 01 and 18
Sequence #11. Pointer = 0073 NInst = 01 and 25
Sequence #12. Pointer = 0075 NInst = 01 and 31
Sequence #13. Pointer = 0077 NInst = 01 and 33
Sequence #14. Pointer = 0079 NInst = 01 and 26
Sequence #15. Pointer = 007b NInst = 01 and 14
Sequence #16. Pointer = 007d NInst = 01 and 27
Sequence #17. Pointer = 007f NInst = 01 and 26
Sequence #18. Pointer = 0081 NInst = 01 and 28
Sequence #19. Pointer = 0083 NInst = 01 and 29
Sequence #1a. Pointer = 0085 NInst = 01 and 37
Sequence #1b. Pointer = 0087 NInst = 01 and 20
Sequence #1c. Pointer = 0089 NInst = 01 and 32
Sequence #1d. Pointer = 008b NInst = 01 and 30
Sequence #1e. Pointer = 008d NInst = 01 and 27
Sequence #1f. Pointer = 008f NInst = 01 and 26
Sequence #20. Pointer = 0091 NInst = 01 and 35
Sequence #21. Pointer = 0093 NInst = 01 and 36
Sequence #22. Pointer = 0095 NInst = 01 and 27


The next step is to map out the instruments/samples, so we can have a guide to be used in custom music (I really could use some help on that. Here is a model:

NInstrument NInst 15
Used in: Lethal Lava Land (sequence #6)

00: Simple percussion loop
01: Voice 'Uhs'
02: Sitar drone notes
03: Sitar melody

or

NInstrument NInst14
Used in: Inside Castle (sequence #6)
Sound1400, 0x00 = Strings
Sound1401, 0x01 = ?
Sound1402, 0x02 = ?
Sound1403, 0x03 = Pizzicatto string
Sound1404, 0x04 = Cello? (or low and deep woodwind?)
Sound1405, 0x05 = Eletric Piano
Sound1406, 0x06 = ?

SRip somestimes doesn't produce all the Soundxxxx files in a NInst. I'm almost sure it's because it is a repated sample, already used before.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Nikodude
User
Level: 9


Posts: 3/10
EXP: 2191
For next: 971

Since: 03-01-09

From: Denmark

Since last post: 13.0 years
Last activity: 12.4 years

Posted on 03-22-09 07:15:35 PM Link | Quote
Hi, i dont know if this is a bit off topic.
I got the Super Mario 64 sound bank as wav files and i want to make a soundfont out of it but i have no idea how to do it, can someone help me?

Sorry for my bad english, i am from Denmark and i am only 11.

____________________
Go get some pie!
Pages: 1 2 3 4 5 6 7 8 Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - SM64 Music Editing New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

35 database queries, 13 query cache hits.
Query execution time:  0.091134 seconds
Script execution time:  0.029937 seconds
Total render time:  0.121071 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 299 - Warning: unescaped & or unknown entity "&page"
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 189 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 93 - Warning: unescaped & or unknown entity "&page"
line 149 column 124 - Warning: unescaped & or unknown entity "&page"
line 149 column 155 - Warning: unescaped & or unknown entity "&page"
line 149 column 186 - Warning: unescaped & or unknown entity "&page"
line 149 column 217 - Warning: unescaped & or unknown entity "&page"
line 149 column 250 - Warning: unescaped & or unknown entity "&page"
line 149 column 281 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 316 - Warning: missing </font> before </table>
line 156 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 158 column 9 - Warning: missing <tr>
line 176 column 13 - Warning: missing <tr>
line 177 column 98 - Warning: unescaped & or unknown entity "&postid"
line 184 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 186 column 9 - Warning: missing <tr>
line 204 column 13 - Warning: missing <tr>
line 205 column 98 - Warning: unescaped & or unknown entity "&postid"
line 224 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 226 column 9 - Warning: missing <tr>
line 244 column 13 - Warning: missing <tr>
line 245 column 98 - Warning: unescaped & or unknown entity "&postid"
line 255 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 257 column 9 - Warning: missing <tr>
line 275 column 13 - Warning: missing <tr>
line 276 column 98 - Warning: unescaped & or unknown entity "&postid"
line 287 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 289 column 9 - Warning: missing <tr>
line 307 column 13 - Warning: missing <tr>
line 308 column 98 - Warning: unescaped & or unknown entity "&postid"
line 317 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 319 column 9 - Warning: missing <tr>
line 337 column 13 - Warning: missing <tr>
line 338 column 98 - Warning: unescaped & or unknown entity "&postid"
line 347 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 349 column 9 - Warning: missing <tr>
line 367 column 13 - Warning: missing <tr>
line 368 column 98 - Warning: unescaped & or unknown entity "&postid"
line 374 column 564 - Warning: unescaped & or unknown entity "&hl"
line 374 column 570 - Warning: unescaped & or unknown entity "&fs"
line 374 column 501 - Warning: discarding unexpected <param>
line 374 column 577 - Warning: discarding unexpected </param>
line 374 column 585 - Warning: discarding unexpected <param>
line 374 column 628 - Warning: discarding unexpected </param>
line 374 column 636 - Warning: discarding unexpected <param>
line 374 column 683 - Warning: discarding unexpected </param>
line 374 column 742 - Warning: unescaped & or unknown entity "&hl"
line 374 column 748 - Warning: unescaped & or unknown entity "&fs"
line 377 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 379 column 9 - Warning: missing <tr>
line 397 column 13 - Warning: missing <tr>
line 398 column 98 - Warning: unescaped & or unknown entity "&postid"
line 406 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 408 column 9 - Warning: missing <tr>
line 426 column 13 - Warning: missing <tr>
line 427 column 98 - Warning: unescaped & or unknown entity "&postid"
line 431 column 460 - Warning: unescaped & or unknown entity "&type"
line 436 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 438 column 9 - Warning: missing <tr>
line 456 column 13 - Warning: missing <tr>
line 457 column 98 - Warning: unescaped & or unknown entity "&postid"
line 465 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 467 column 9 - Warning: missing <tr>
line 485 column 13 - Warning: missing <tr>
line 486 column 98 - Warning: unescaped & or unknown entity "&postid"
line 493 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 495 column 9 - Warning: missing <tr>
line 513 column 13 - Warning: missing <tr>
line 514 column 98 - Warning: unescaped & or unknown entity "&postid"
line 529 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 531 column 9 - Warning: missing <tr>
line 549 column 13 - Warning: missing <tr>
line 550 column 98 - Warning: unescaped & or unknown entity "&postid"
line 570 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 572 column 9 - Warning: missing <tr>
line 590 column 13 - Warning: missing <tr>
line 591 column 98 - Warning: unescaped & or unknown entity "&postid"
line 600 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 602 column 9 - Warning: missing <tr>
line 620 column 13 - Warning: missing <tr>
line 621 column 98 - Warning: unescaped & or unknown entity "&postid"
line 626 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 628 column 9 - Warning: missing <tr>
line 646 column 13 - Warning: missing <tr>
line 647 column 98 - Warning: unescaped & or unknown entity "&postid"
line 660 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 662 column 9 - Warning: missing <tr>
line 680 column 13 - Warning: missing <tr>
line 681 column 98 - Warning: unescaped & or unknown entity "&postid"
line 692 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 694 column 9 - Warning: missing <tr>
line 712 column 13 - Warning: missing <tr>
line 713 column 98 - Warning: unescaped & or unknown entity "&postid"
line 785 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 787 column 9 - Warning: missing <tr>
line 805 column 13 - Warning: missing <tr>
line 806 column 98 - Warning: unescaped & or unknown entity "&postid"
line 873 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 875 column 9 - Warning: missing <tr>
line 893 column 13 - Warning: missing <tr>
line 894 column 100 - Warning: unescaped & or unknown entity "&postid"
line 902 column 17 - Warning: missing <tr>
line 902 column 17 - Warning: discarding unexpected <table>
line 905 column 35 - Warning: missing <tr>
line 905 column 93 - Warning: unescaped & or unknown entity "&page"
line 905 column 124 - Warning: unescaped & or unknown entity "&page"
line 905 column 155 - Warning: unescaped & or unknown entity "&page"
line 905 column 186 - Warning: unescaped & or unknown entity "&page"
line 905 column 217 - Warning: unescaped & or unknown entity "&page"
line 905 column 250 - Warning: unescaped & or unknown entity "&page"
line 905 column 281 - Warning: unescaped & or unknown entity "&page"
line 905 column 50 - Warning: missing </font> before </td>
line 905 column 316 - Warning: missing </font> before </table>
line 907 column 35 - Warning: missing <tr>
line 907 column 50 - Warning: missing </font> before </td>
line 908 column 37 - Warning: unescaped & or unknown entity "&id"
line 907 column 189 - Warning: missing </font> before </table>
line 909 column 17 - Warning: discarding unexpected </textarea>
line 909 column 28 - Warning: discarding unexpected </form>
line 909 column 35 - Warning: discarding unexpected </embed>
line 909 column 43 - Warning: discarding unexpected </noembed>
line 909 column 53 - Warning: discarding unexpected </noscript>
line 909 column 64 - Warning: discarding unexpected </noembed>
line 909 column 74 - Warning: discarding unexpected </embed>
line 909 column 82 - Warning: discarding unexpected </table>
line 909 column 90 - Warning: discarding unexpected </table>
line 911 column 9 - Warning: missing </font> before <table>
line 923 column 25 - Warning: discarding unexpected </font>
line 932 column 58 - Warning: discarding unexpected </font>
line 910 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 148 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 244 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 11 - Warning: <img> lacks "alt" attribute
line 161 column 23 - Warning: <img> lacks "alt" attribute
line 161 column 64 - Warning: <img> lacks "alt" attribute
line 161 column 113 - Warning: <img> lacks "alt" attribute
line 161 column 163 - Warning: <img> lacks "alt" attribute
line 162 column 11 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 179 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 179 column 316 - Warning: <img> lacks "alt" attribute
line 189 column 22 - Warning: <img> lacks "alt" attribute
line 189 column 63 - Warning: <img> lacks "alt" attribute
line 189 column 111 - Warning: <img> lacks "alt" attribute
line 189 column 161 - Warning: <img> lacks "alt" attribute
line 200 column 15 - Warning: <img> lacks "alt" attribute
line 229 column 21 - Warning: <img> lacks "alt" attribute
line 229 column 62 - Warning: <img> lacks "alt" attribute
line 229 column 111 - Warning: <img> lacks "alt" attribute
line 229 column 161 - Warning: <img> lacks "alt" attribute
line 230 column 11 - Warning: <img> lacks "alt" attribute
line 240 column 15 - Warning: <img> lacks "alt" attribute
line 247 column 104 - Warning: <img> proprietary attribute value "absmiddle"
line 247 column 104 - Warning: <img> lacks "alt" attribute
line 260 column 22 - Warning: <img> lacks "alt" attribute
line 260 column 63 - Warning: <img> lacks "alt" attribute
line 260 column 112 - Warning: <img> lacks "alt" attribute
line 260 column 162 - Warning: <img> lacks "alt" attribute
line 271 column 15 - Warning: <img> lacks "alt" attribute
line 278 column 185 - Warning: <img> proprietary attribute value "absmiddle"
line 278 column 185 - Warning: <img> lacks "alt" attribute
line 292 column 22 - Warning: <img> lacks "alt" attribute
line 292 column 63 - Warning: <img> lacks "alt" attribute
line 292 column 111 - Warning: <img> lacks "alt" attribute
line 292 column 161 - Warning: <img> lacks "alt" attribute
line 303 column 15 - Warning: <img> lacks "alt" attribute
line 322 column 21 - Warning: <img> lacks "alt" attribute
line 322 column 62 - Warning: <img> lacks "alt" attribute
line 322 column 111 - Warning: <img> lacks "alt" attribute
line 322 column 161 - Warning: <img> lacks "alt" attribute
line 323 column 11 - Warning: <img> lacks "alt" attribute
line 333 column 15 - Warning: <img> lacks "alt" attribute
line 352 column 22 - Warning: <img> lacks "alt" attribute
line 352 column 63 - Warning: <img> lacks "alt" attribute
line 352 column 111 - Warning: <img> lacks "alt" attribute
line 352 column 161 - Warning: <img> lacks "alt" attribute
line 363 column 15 - Warning: <img> lacks "alt" attribute
line 382 column 22 - Warning: <img> lacks "alt" attribute
line 382 column 63 - Warning: <img> lacks "alt" attribute
line 382 column 112 - Warning: <img> lacks "alt" attribute
line 382 column 162 - Warning: <img> lacks "alt" attribute
line 393 column 15 - Warning: <img> lacks "alt" attribute
line 411 column 22 - Warning: <img> lacks "alt" attribute
line 411 column 63 - Warning: <img> lacks "alt" attribute
line 411 column 111 - Warning: <img> lacks "alt" attribute
line 411 column 161 - Warning: <img> lacks "alt" attribute
line 422 column 15 - Warning: <img> lacks "alt" attribute
line 433 column 660 - Warning: <img> proprietary attribute value "absmiddle"
line 433 column 660 - Warning: <img> lacks "alt" attribute
line 441 column 21 - Warning: <img> lacks "alt" attribute
line 441 column 62 - Warning: <img> lacks "alt" attribute
line 441 column 111 - Warning: <img> lacks "alt" attribute
line 441 column 161 - Warning: <img> lacks "alt" attribute
line 442 column 11 - Warning: <img> lacks "alt" attribute
line 452 column 15 - Warning: <img> lacks "alt" attribute
line 462 column 251 - Warning: <img> proprietary attribute value "absmiddle"
line 462 column 251 - Warning: <img> lacks "alt" attribute
line 470 column 22 - Warning: <img> lacks "alt" attribute
line 470 column 63 - Warning: <img> lacks "alt" attribute
line 470 column 112 - Warning: <img> lacks "alt" attribute
line 470 column 162 - Warning: <img> lacks "alt" attribute
line 481 column 15 - Warning: <img> lacks "alt" attribute
line 488 column 254 - Warning: <img> proprietary attribute value "absmiddle"
line 488 column 254 - Warning: <img> lacks "alt" attribute
line 498 column 22 - Warning: <img> lacks "alt" attribute
line 498 column 63 - Warning: <img> lacks "alt" attribute
line 498 column 111 - Warning: <img> lacks "alt" attribute
line 498 column 161 - Warning: <img> lacks "alt" attribute
line 509 column 15 - Warning: <img> lacks "alt" attribute
line 534 column 22 - Warning: <img> lacks "alt" attribute
line 534 column 63 - Warning: <img> lacks "alt" attribute
line 534 column 112 - Warning: <img> lacks "alt" attribute
line 534 column 162 - Warning: <img> lacks "alt" attribute
line 545 column 15 - Warning: <img> lacks "alt" attribute
line 575 column 22 - Warning: <img> lacks "alt" attribute
line 575 column 63 - Warning: <img> lacks "alt" attribute
line 575 column 111 - Warning: <img> lacks "alt" attribute
line 575 column 161 - Warning: <img> lacks "alt" attribute
line 586 column 15 - Warning: <img> lacks "alt" attribute
line 605 column 21 - Warning: <img> lacks "alt" attribute
line 605 column 62 - Warning: <img> lacks "alt" attribute
line 605 column 111 - Warning: <img> lacks "alt" attribute
line 605 column 161 - Warning: <img> lacks "alt" attribute
line 606 column 11 - Warning: <img> lacks "alt" attribute
line 616 column 15 - Warning: <img> lacks "alt" attribute
line 631 column 22 - Warning: <img> lacks "alt" attribute
line 631 column 63 - Warning: <img> lacks "alt" attribute
line 631 column 112 - Warning: <img> lacks "alt" attribute
line 631 column 162 - Warning: <img> lacks "alt" attribute
line 642 column 15 - Warning: <img> lacks "alt" attribute
line 651 column 392 - Warning: <img> proprietary attribute value "absmiddle"
line 651 column 392 - Warning: <img> lacks "alt" attribute
line 654 column 936 - Warning: <img> proprietary attribute value "absmiddle"
line 654 column 936 - Warning: <img> lacks "alt" attribute
line 665 column 22 - Warning: <img> lacks "alt" attribute
line 665 column 63 - Warning: <img> lacks "alt" attribute
line 665 column 111 - Warning: <img> lacks "alt" attribute
line 665 column 161 - Warning: <img> lacks "alt" attribute
line 676 column 15 - Warning: <img> lacks "alt" attribute
line 697 column 22 - Warning: <img> lacks "alt" attribute
line 697 column 63 - Warning: <img> lacks "alt" attribute
line 697 column 111 - Warning: <img> lacks "alt" attribute
line 697 column 161 - Warning: <img> lacks "alt" attribute
line 708 column 15 - Warning: <img> lacks "alt" attribute
line 790 column 22 - Warning: <img> lacks "alt" attribute
line 790 column 63 - Warning: <img> lacks "alt" attribute
line 790 column 111 - Warning: <img> lacks "alt" attribute
line 790 column 161 - Warning: <img> lacks "alt" attribute
line 801 column 15 - Warning: <img> lacks "alt" attribute
line 878 column 21 - Warning: <img> lacks "alt" attribute
line 878 column 62 - Warning: <img> lacks "alt" attribute
line 878 column 112 - Warning: <img> lacks "alt" attribute
line 879 column 11 - Warning: <img> lacks "alt" attribute
line 889 column 15 - Warning: <img> lacks "alt" attribute
line 908 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 908 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 908 column 244 - Warning: <img> proprietary attribute value "absmiddle"
line 917 column 25 - Warning: <img> lacks "alt" attribute
line 922 column 267 - Warning: <img> lacks "alt" attribute
line 902 column 17 - Warning: trimming empty <tr>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 177 column 27 - Warning: <nobr> is not approved by W3C
line 205 column 27 - Warning: <nobr> is not approved by W3C
line 245 column 27 - Warning: <nobr> is not approved by W3C
line 276 column 27 - Warning: <nobr> is not approved by W3C
line 308 column 27 - Warning: <nobr> is not approved by W3C
line 338 column 27 - Warning: <nobr> is not approved by W3C
line 368 column 27 - Warning: <nobr> is not approved by W3C
line 398 column 27 - Warning: <nobr> is not approved by W3C
line 427 column 27 - Warning: <nobr> is not approved by W3C
line 457 column 27 - Warning: <nobr> is not approved by W3C
line 486 column 27 - Warning: <nobr> is not approved by W3C
line 514 column 27 - Warning: <nobr> is not approved by W3C
line 550 column 27 - Warning: <nobr> is not approved by W3C
line 591 column 27 - Warning: <nobr> is not approved by W3C
line 621 column 27 - Warning: <nobr> is not approved by W3C
line 647 column 27 - Warning: <nobr> is not approved by W3C
line 681 column 27 - Warning: <nobr> is not approved by W3C
line 713 column 27 - Warning: <nobr> is not approved by W3C
line 806 column 27 - Warning: <nobr> is not approved by W3C
line 894 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 300 warnings and 0 errors!


The alt attribute should be used to give a short description
of an image; longer descriptions should be given with the
longdesc attribute which takes a URL linked to the description.
These measures are needed for people using non-graphical browsers.

For further advice on how to make your pages accessible
see http://www.w3.org/WAI/GL.
You are recommended to use CSS to specify the font and
properties such as its size and color. This will reduce
the size of HTML files and make them easier to maintain
compared with using <FONT> elements.

You are recommended to use CSS to control line wrapping.
Use "white-space: nowrap" to inhibit wrapping in place
of inserting <NOBR>...</NOBR> into the markup.

About HTML Tidy: https://github.com/htacg/tidy-html5
Bug reports and comments: https://github.com/htacg/tidy-html5/issues
Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
Latest HTML specification: http://dev.w3.org/html5/spec-author-view/
Validate your HTML documents: http://validator.w3.org/nu/
Lobby your company to join the W3C: http://www.w3.org/Consortium

Do you speak a language other than English, or a different variant of
English? Consider helping us to localize HTML Tidy. For details please see
https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md