Register - Login
Views: 99378809
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-23-22 10:31:31 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
rstewart215804
User
Crazed Mario 64 Hacker!!!
Level: 11


Posts: 1/18
EXP: 5578
For next: 407

Since: 09-13-07


Since last post: 13.2 years
Last activity: 11.7 years

Posted on 09-13-07 01:34:28 AM Link | Quote
Guess what? I found where the music files in SM64 are. I long time ago, someone in the old acome board posted a GameShark code for editing the speed of the game music. I looked into the address in NEMU and found that the code edited the master sound control. I was able to figure out that SM64 has 3 master controllers. One for sound effects, one for short clips such as boos merry-go-round, and one for the background music. (The Legend of Zelda�s for the N64, also have the 3 master controllers that are almost identical in format found in SM64.

You can find the background music master controller at 0x80222618. There you will find something that looks like this there.

C000 0000 8002 1100 0000 2040 23B8 0000
0000 0F77 801F 8250 3F21 4285 0000 0000
3F21 4285 3F00 0000 0000 0000 8022 29D8
8022 2A98 8022 5BD8 8022 2B58 8022 2C18
8022 2CD8 8022 2D98 8022 2E58 8022 2F18
8022 2FD8 8022 3098 8022 3158 8022 3218
8022 32D8 8022 5BD8 8022 5BD8
801F 8310

The data in blue are pointers to the instruments. The last pointer, which in highlighted in orange, is the one that is the most interesting. It points to the music data in memory. After checking that memory out I scanned for it in the Rom and found that the music data is uncompressed. Here is a table of addresses in the Rom that I have found so far.

7B3E10 End level
7B4080 SMB music title
7B60C0 Bob-omb's Battlefield
7B74D0 Inside Castle
7B7E90 Dire Dire Docks
7B9140 Lethal Laval land
7B9AE0
7BA840 Snow
7BC810 Slide
7BE520 BIG BOO'S HAUNT
7BFB50
7C00D0 Hazy Maze
7C13F0 Star select
7C1480 Wing cap
7C20C0 Metal cap
7C2BA0
7C2DD0 Bowser course
7C4060
7C4170
7C47F0 Start and End Race with Koopa the Quick
7C48C0
7C4B50 Boss fight
7C58C0
7C6260
7C7020
7CA810
7CA8F0 Toad
7CA9C0
7CAB70
7CB260
7CBA70
7CC1D0 File Select
7CC4E0

The values that don�t have a song name yet are ones I haven't figured out yet but do start with 0xD3. The songs are in the same order they are in the 0x36 level commands. I haven't been able to do much with the sound except charge a note here and there.
_____________________________________________________________________

Speaking of level commands the 0x37 command, which isn�t in VL-Tone's document, also is a music command.

[37] [04] 00 [00]

[1]: 36= Music command.
[2]: Length byte (dec 4).
[4]: Song number (see table for 0x36).

0x37 commands are used in the select screen and the "Press Start" screen.
_____________________________________________________________________

One last thing I was changing the behaviors around in the Rom and found that the animation for objects like a Bob-omb King are not in assembly code. They can be found in the same file as the vertex data. The data is called with the 0x2726 command.

[2726] [00 00] [05 00 FE 30]

[1,2]: 2736 = Animation command.
[3,4]: Nothing.
[4-8]: Bank and Offset.

I found it not to long ago and still haven�t figured out how they work.

The other command I know about is the 0x0C00 command. 0x0C00 command runs ASM script. The script controls how they chase Mario and such.

[0C00] [00 00] [05 00 FE 30]

[1,2]: 0x0C00 = Run ASM script
[3,4]: Nothing
[4-8]: Pointer to data in Ram.
_____________________________________________________________________

Well this is enough information for now. I have quite a few commands that are not yet included in VL-Tone hacking document. If people have any questions I will try to answer them when school permits me.
blakerobinson2u
Member
holly1
Level: 14


Posts: 23/29
EXP: 11441
For next: 1630

Since: 08-13-07


Since last post: 14.6 years
Last activity: 14.7 years

Posted on 09-13-07 01:45:33 AM Link | Quote
I hate to post a contentless post, but you struck gold! Find where the coin sound is on the double!
The Glitch
Member
Speaks his mind
Level: 32


Posts: 88/199
EXP: 205471
For next: 971

Since: 08-23-07

From: Pittsburgh, PA.

Since last post: 14.5 years
Last activity: 14.5 years

Posted on 09-13-07 02:02:22 AM; last edit by The Glitch on 09-13-07 02:03 AM Link | Quote
We need Mario's voices.
Green-Man voices will be needed to be added on for the ever too commen hacks with him turned into that.
Anyways, Nice work!

____________________
Why are you reading this?
blakerobinson2u
Member
holly1
Level: 14


Posts: 24/29
EXP: 11441
For next: 1630

Since: 08-13-07


Since last post: 14.6 years
Last activity: 14.7 years

Posted on 09-13-07 02:28:53 AM Link | Quote
I feel dumb asking this, but is it midi?
Kles

Level: 87


Posts: 712/1947
EXP: 6306439
For next: 86335

Since: 07-23-07


Since last post: 68 days
Last activity: 13 hours

Posted on 09-13-07 02:39:30 AM Link | Quote
Originally posted by blakerobinson2u
I feel dumb asking this, but is it midi?


I can almost guarantee that it won't have used midi.

____________________
( ゚³゚)三№♥
blakerobinson2u
Member
holly1
Level: 14


Posts: 25/29
EXP: 11441
For next: 1630

Since: 08-13-07


Since last post: 14.6 years
Last activity: 14.7 years

Posted on 09-13-07 02:52:29 AM Link | Quote
but I like midi's... (what format is it then?)
The Glitch
Member
Speaks his mind
Level: 32


Posts: 91/199
EXP: 205471
For next: 971

Since: 08-23-07

From: Pittsburgh, PA.

Since last post: 14.5 years
Last activity: 14.5 years

Posted on 09-13-07 03:09:20 AM Link | Quote
Well, I think it is some odd and rarly used sound format, may even be used only for this game...

____________________
Why are you reading this?
blakerobinson2u
Member
holly1
Level: 14


Posts: 26/29
EXP: 11441
For next: 1630

Since: 08-13-07


Since last post: 14.6 years
Last activity: 14.7 years

Posted on 09-13-07 03:26:59 AM Link | Quote
well, consider this. This game was made form like 95 to 96. They didn't have windows 95 yet because they had no experiance. This game was probably built on a mac or with dos. It's probably the same sound format as zelda; they used the same engine
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 83/621
EXP: 1135501
For next: 21618

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 09-13-07 04:47:07 AM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Well well well, if it isn't rstewart215804, at last we meet Seriously, welcome to the forum! Feel at home here I know that you've done some pretty extensive SM64 hacking, your contribution will be needed!

So these are great findings! I'm currently trying to absorb all this new information...

Kles, you're right, it's not midi as is. But... Super Mario 64 uses the UltraLib libraries. UltraLib provides ways to play two music formats, one is midi, the other is what Nintendo calls "compressed midi". Since I couldn't find any midi header in the ROM, its presumed that SM64 uses the latter, "compressed midi".

While they call it compressed midi, i doubt the tracks are like a zip or MIO0 compressed midi file. I think it could be considered to be an entirely different format that has some fundamental similarity with midi, but with all the overhead removed.

The UltraLib tools included a command line called "midicomp" that was used to convert midi directly to the "compressed midi" format. I don't have this tool (and it would be even more illegal to distribute it than a ROM.), but if we had a midi file and its converted version it would probably be easier to reverse-engineer the format.

The UltraLib includes two basic commands to play music, one for uncompressed midi, and the other one is called "compressed audio player". Maybe we could change the latter command into the uncompressed audio player, and make it point to real midi files that we would insert into an extended ROM. That way we could use midi music in SM64, which could be edited with midi tools to insure that they use the right instruments etc.

blakerobinson2u: You should read more about the n64 development. Super Mario 64 was built on a Silicon Graphic workstation. The n64 is based on SGI hardware, and for a long time SM64 was running only in emulation/virtualization on SGIs, while the n64 was being designed. The first generation of n64 devkits were specially modified SGI workstations (SGI Indy with special boards).


____________________
Deleted User
Collection of nobodies
Posted on 09-13-07 05:57:32 PM Link | Quote
This talk about compressed MIDI makes me think of Sappy, whose data is converted from .MID files with all the unneeded stuff removed and delta-time sigs replaced by wait commands.

Same concept?

____________________


===================
[Posted by Kawa]
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 85/621
EXP: 1135501
For next: 21618

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 09-13-07 06:46:00 PM; last edit by VL-Tone on 09-13-07 06:46 PM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by KyoufuKitty
This talk about compressed MIDI makes me think of Sappy, whose data is converted from .MID files with all the unneeded stuff removed and delta-time sigs replaced by wait commands.

Same concept?



I guess so, it's probably a similar process. Looking at the music data in SM64, it looks like it uses standard midi events opcodes like 0x80 for note_off and 0x90 for note_on. That means it should be relatively easy to reverse-engineer.

I'm almost sure that Zelda OOT must use the same format, since it's also built using the UltraLib. So if anyone knows the location of the music data in that game, we could try to move songs from OOT to SM64

____________________
Deleted User
Collection of nobodies
Posted on 09-13-07 06:48:00 PM Link | Quote
If history keeps repeating like it always does, all we need is rstewart and a music speed cheat for OOT.

____________________


===================
[Posted by Kawa]
rstewart215804
User
Crazed Mario 64 Hacker!!!
Level: 11


Posts: 2/18
EXP: 5578
For next: 407

Since: 09-13-07


Since last post: 13.2 years
Last activity: 11.7 years

Posted on 09-14-07 06:54:47 PM Link | Quote
I already found the master music controllers for both OOT and MM. I can’t recall the addresses off hand but I will look for them among all my notes. During the summer I looked through extracted Yaz0 files and was able to build a level viewer for them. There are still a few commands I haven’t implemented. Enough about Zelda, this thread is for SM64. If you know any more midi commands please let me know.

____________________
Just you wait until next time. Until then, keep that Control Stick smokin’! Buwaa ha ha!
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 87/621
EXP: 1135501
For next: 21618

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 09-15-07 03:35:15 AM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
I remember taking a peek inside the content of Yaz0 files a while ago. The polygon drawing commands are pretty similar to those in SM64. The main thing I couldn't find is where to find the textures to be applied to specific polygons (it doesn't use the same bank/segment system as SM64, and anyway I don't know where are the commands the specify what is loaded in which segment). BTW if you didn't know already, there are some JPEG files found in some Yaz0, which are used for the big backgrounds of panoramic scenes. JPEG files start with FF D8 FF E0 00 10 4A 46 and end with FFD9. Anyway, like you said this is a SM64 thread after all But it would be useful/fun if we could try OOT music in SM64.

Now as for midi commands...

Don't ask me where I got this, but it's exactly what we need:
    /* For distinguishing channel number from status */

ChannelMask = 0x0F,
StatusMask = 0xF0,

/* Channel voice messages */
ChannelVoice = 0x80,
NoteOff = 0x80,
NoteOn = 0x90,
PolyKeyPressure = 0xA0,
ControlChange = 0xB0,
ChannelModeSelect = 0xB0,
ProgramChange = 0xC0,
ChannelPressure = 0xD0,
PitchBendChange = 0xE0,

/* System messages */
SysEx = 0xF0, /* System Exclusive */

/* System common */
SystemCommon = 0xF1,
TimeCodeQuarterFrame = 0xF1,
SongPositionPointer = 0xF2,
SongSelect = 0xF3,
Undefined1 = 0xF4,
Undefined2 = 0xF5,
TuneRequest = 0xF6,
EOX = 0xF7, /* End of System Exclusive */

/* System real time */
SystemRealTime = 0xF8,
TimingClock = 0xF8,
Undefined3 = 0xF9,
Start = 0xFA,
Continue = 0xFB,
Stop = 0xFC,
Undefined4 = 0xFD,
ActiveSensing = 0xFE,
SystemReset = 0xFF,
Meta = 0xFF /* MIDI Files only */

VOLUME_CTRL = 0x07,
PAN_CTRL = 0x0A,
PRIORITY_CTRL = 0x10, /* use general purpose controller for priority */
FX_CTRL_0 = 0x14,
FX_CTRL_1 = 0x15,
FX_CTRL_2 = 0x16,
FX_CTRL_3 = 0x17,
FX_CTRL_4 = 0x18,
FX_CTRL_5 = 0x19,
FX_CTRL_6 = 0x1A,
FX_CTRL_7 = 0x1B,
FX_CTRL_8 = 0x1C,
FX_CTRL_9 = 0x1D,
SUSTAIN_CTRL = 0x40,
FX1_CTRL = 0x5B,
FX3_CTRL = 0x5D

META_TEMPO = 0x51,
META_EOT = 0x2f


BLOCK_CODE 0xFE
LOOPSTART_CODE 0x2E
LOOPEND_CODE 0x2D
CNTRL_LOOPSTART 102
CNTRL_LOOPEND 103
CNTRL_LOOPCOUNT_SM 104
CNTRL_LOOPCOUNT_BIG 105


____________________
rstewart215804
User
Crazed Mario 64 Hacker!!!
Level: 11


Posts: 3/18
EXP: 5578
For next: 407

Since: 09-13-07


Since last post: 13.2 years
Last activity: 11.7 years

Posted on 09-15-07 09:09:12 PM Link | Quote
Thanks for the midi commands VL-Tone. Ok here are the locations to the master music controllers in OOT 0x80128b40, and in MM 0x801FC560. I checked out some of the song location in OOT Rom and here what I found…

30870 Graveyard
318B0 Hyrule Field
3E3D0 Kakariko Village
421B0 Castle Town
428C0 Intro Song
48720 Select Screen
48BE8 Zelda's Theme Song
4BFC0 Castle Garden
55020 Temple Of Time
55D40 Forest
5E3E0 Windmill
5F400 Triforce and Gods
5FF70 Game Shop
63610 Shop
670B0 Saria Song

I don’t think we can import Zelda Songs to SM64 because Nintendo updated their music software between Mario Kart and OOT. The songs in Zelda have a few newer commands, some of them that can jump around the music data, while to my knowledge SM64 doesn’t have any commands that act like that. We can probably however take SM64 songs and put them into Zelda.

The music in Mario Kart however can most likely be transferred between freely to SM64 and vice versa. The MK master music controller is at 0x803B1508. I also found the Rom location for these songs…

BCB120 LUIGI, MARIO, ROYAL RACEWAY / WARIO STADIUM
BCCB30 MOO MOO FARM / YOSHI VALLEY
BCE7D0 CHOCO MOUNTAIN / BATTLE
BD0740 KOOPA TROOPA BEACH
BD2620 BANSHEE BOARDWALK
BD3CF0 FRAPPE SNOWLAND / SHERBERT LAND
BD60C0 BOWSER'S CASTLE
BD78C0 KALIMARI DESERT
BDC350 STAR ROAD
BDF640 D.K'S JUNGLE PARKWAY
BE01B0 TOAD'S TURNPIKE

The only snag I found with trading songs is somewhere there are several pointers that tells where songs start and stop. I don’t know where this table may in the Rom, but in the ram it is at 0x801CFE00. After all the controllers at 0x80226B4C there is a bunch of pointers, which point to the song table, 2 instrument tables, and some other things.
_______________________________________________________________________

Oh by the way, the master music controllers as I originally called them are actually a type graphic equalizer. There are over 8 of them. The first one controls the background music, the second short clips, and the third is sound effects. The rest are secondary equalizers that control the right and left speakers, high and low frequencies and more.

____________________
Just you wait until next time. Until then, keep that Control Stick smokin’! Buwaa ha ha!
Deleted User
Collection of nobodies
Posted on 09-16-07 01:46:11 AM Link | Quote
Eh, so what, is it really possible to import songs using hex? I wanted to try this, it probably won't work anyways.
Deleted User
Collection of nobodies
Posted on 09-16-07 08:07:02 AM Link | Quote
Originally posted by Count Drekken
Eh, so what, is it really possible to import songs using hex? I wanted to try this, it probably won't work anyways.
Did you even read all this? No matter how you transfer the songs, there's a whole bunch of things that need to be edited for it to work. Things that, if I see correctly, need more research.

____________________


===================
[Posted by Kawa]
matalilo
Random nobody
Level: 5


Posts: 2/3
EXP: 376
For next: 153

Since: 12-01-07


Since last post: 14.4 years
Last activity: 14.4 years

Posted on 12-01-07 08:41:15 PM Link | Quote
I've made some research on the Mario 64's sequenced format and just didn't find somthing nice out, but I am working on a decompiler for midi export!

It seems the seq file(s) are not the same as those compressed with "midicomp".

Just now I did somthing in N64 programming and compiled after one day of
messing with the compiler stuff a midi player for the n64! It uses the general midi soundbank and an uncompressed midi-file.

I tested the programm on PJ64 v 1.6 with it's provided plugins /Sync to Audio = on!

I'm working on a new version with improvments like compressed midi, text/video stuff for playback info.

I'll post more info very soon

Link http://uploaded.to/?id=l37mdm (whenever the link should not work just scream

.matalilo
Kenshi
Member
Level: 21


Posts: 3/75
EXP: 47437
For next: 2506

Since: 09-15-07

From: NY

Since last post: 6.9 years
Last activity: 6.2 years

Posted on 01-03-08 12:19:21 AM (last edited by mortalkenshi2 at 01-04-08 09:38 PM) Link | Quote
well i went and looked through this data and i looked up the title screen music. I deleted it and replaced with Bob-omb battlefield music and it played really glitched up. It was playing the song but like the main melody was like really deep. Also, I looked through the zelda rom for the addresses that rstewart showed and I didn't really find anything. Can anyone help me out?


____________________
Been around since acmlm 3 now I cant even keep track of how many there are....
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 162/621
EXP: 1135501
For next: 21618

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 01-04-08 03:03:16 AM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by matalilo
I've made some research on the Mario 64's sequenced format and just didn't find somthing nice out, but I am working on a decompiler for midi export!

It seems the seq file(s) are not the same as those compressed with "midicomp".

Just now I did somthing in N64 programming and compiled after one day of
messing with the compiler stuff a midi player for the n64! It uses the general midi soundbank and an uncompressed midi-file.

I tested the programm on PJ64 v 1.6 with it's provided plugins /Sync to Audio = on!

I'm working on a new version with improvments like compressed midi, text/video stuff for playback info.

I'll post more info very soon

Link http://uploaded.to/?id=l37mdm (whenever the link should not work just scream

.matalilo



matalilo for some reason your post was completely overlooked by everyone here (including me), even though that midi decompiler project of yours looks promising. I hope you were not discouraged by the lack of replies If you read this, please come back, we need more smart people here

Originally posted by mortalkenshi2
well i went and looked through this data and i looked up the title screen music. I deleted it and replaced with Bob-omb battlefield music and it played really glitched up. It was playing the song but like the main melody was like really deep. Also, I looked through the zelda rom for the addresses that rstewart showed and I didn't really find anything. Can anyone help me out?


I guess it's simply because the instruments and settings for this tracks are different. As for Zelda, maybe the addresses are for different version?

____________________
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.

34 database queries, 9 query cache hits.
Query execution time:  0.093250 seconds
Script execution time:  0.043544 seconds
Total render time:  0.136793 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 286 - 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 95 - Warning: unescaped & or unknown entity "&page"
line 149 column 126 - Warning: unescaped & or unknown entity "&page"
line 149 column 157 - Warning: unescaped & or unknown entity "&page"
line 149 column 188 - Warning: unescaped & or unknown entity "&page"
line 149 column 219 - 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 263 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 265 column 9 - Warning: missing <tr>
line 283 column 13 - Warning: missing <tr>
line 284 column 98 - Warning: unescaped & or unknown entity "&postid"
line 290 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 292 column 9 - Warning: missing <tr>
line 310 column 13 - Warning: missing <tr>
line 311 column 98 - Warning: unescaped & or unknown entity "&postid"
line 318 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 320 column 9 - Warning: missing <tr>
line 338 column 13 - Warning: missing <tr>
line 339 column 98 - Warning: unescaped & or unknown entity "&postid"
line 344 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 346 column 9 - Warning: missing <tr>
line 364 column 13 - Warning: missing <tr>
line 365 column 98 - Warning: unescaped & or unknown entity "&postid"
line 367 column 73 - Warning: <style> isn't allowed in <td> elements
line 367 column 9 - Info: <td> previously mentioned
line 369 column 3799 - Error: <z> is not recognized!
line 369 column 3799 - Warning: discarding unexpected <z>
line 372 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 374 column 9 - Warning: missing <tr>
line 392 column 13 - Warning: missing <tr>
line 393 column 98 - Warning: unescaped & or unknown entity "&postid"
line 398 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 400 column 9 - Warning: missing <tr>
line 418 column 13 - Warning: missing <tr>
line 419 column 98 - Warning: unescaped & or unknown entity "&postid"
line 424 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 426 column 9 - Warning: missing <tr>
line 444 column 13 - Warning: missing <tr>
line 445 column 98 - Warning: unescaped & or unknown entity "&postid"
line 450 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 452 column 9 - Warning: missing <tr>
line 470 column 13 - Warning: missing <tr>
line 471 column 98 - Warning: unescaped & or unknown entity "&postid"
line 473 column 73 - Warning: <style> isn't allowed in <td> elements
line 473 column 9 - Info: <td> previously mentioned
line 473 column 137 - Warning: missing </div>
line 488 column 15 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 489 column 25 - Warning: missing <tr>
line 496 column 33 - Warning: missing <tr>
line 497 column 118 - Warning: unescaped & or unknown entity "&postid"
line 503 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 505 column 9 - Warning: missing <tr>
line 523 column 13 - Warning: missing <tr>
line 524 column 98 - Warning: unescaped & or unknown entity "&postid"
line 526 column 73 - Warning: <style> isn't allowed in <td> elements
line 526 column 9 - Info: <td> previously mentioned
line 526 column 1511 - Warning: missing </font> before <blockquote>
line 526 column 1590 - Warning: inserting implicit <font>
line 526 column 1590 - Warning: missing </font> before <hr>
line 526 column 1658 - Warning: inserting implicit <font>
line 526 column 1658 - Warning: missing </font> before <hr>
line 529 column 1 - Warning: inserting implicit <font>
line 526 column 137 - Warning: missing </div>
line 534 column 15 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 535 column 25 - Warning: missing <tr>
line 542 column 33 - Warning: missing <tr>
line 543 column 118 - Warning: unescaped & or unknown entity "&postid"
line 547 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 549 column 9 - Warning: missing <tr>
line 567 column 13 - Warning: missing <tr>
line 568 column 98 - Warning: unescaped & or unknown entity "&postid"
line 573 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 575 column 9 - Warning: missing <tr>
line 593 column 13 - Warning: missing <tr>
line 594 column 98 - Warning: unescaped & or unknown entity "&postid"
line 596 column 73 - Warning: <style> isn't allowed in <td> elements
line 596 column 9 - Info: <td> previously mentioned
line 596 column 1511 - Warning: missing </font> before <pre>
line 669 column 4658 - Warning: inserting implicit <font>
line 596 column 137 - Warning: missing </div>
line 672 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 674 column 9 - Warning: missing <tr>
line 692 column 13 - Warning: missing <tr>
line 693 column 98 - Warning: unescaped & or unknown entity "&postid"
line 734 column 15 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 735 column 25 - Warning: missing <tr>
line 742 column 33 - Warning: missing <tr>
line 743 column 118 - Warning: unescaped & or unknown entity "&postid"
line 746 column 17 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 747 column 25 - Warning: missing <tr>
line 754 column 33 - Warning: missing <tr>
line 755 column 118 - Warning: unescaped & or unknown entity "&postid"
line 759 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 761 column 9 - Warning: missing <tr>
line 779 column 13 - Warning: missing <tr>
line 780 column 98 - Warning: unescaped & or unknown entity "&postid"
line 801 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 803 column 9 - Warning: missing <tr>
line 821 column 13 - Warning: missing <tr>
line 822 column 98 - Warning: unescaped & or unknown entity "&postid"
line 828 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 830 column 9 - Warning: missing <tr>
line 848 column 13 - Warning: missing <tr>
line 849 column 98 - Warning: unescaped & or unknown entity "&postid"
line 851 column 73 - Warning: <style> isn't allowed in <td> elements
line 851 column 9 - Info: <td> previously mentioned
line 851 column 1511 - Warning: missing </font> before <blockquote>
line 851 column 1590 - Warning: inserting implicit <font>
line 851 column 1590 - Warning: missing </font> before <hr>
line 851 column 1655 - Warning: inserting implicit <font>
line 851 column 1655 - Warning: missing </font> before <hr>
line 867 column 2594 - Warning: inserting implicit <font>
line 868 column 1 - Warning: inserting implicit <font>
line 868 column 1 - Warning: missing </font> before <blockquote>
line 871 column 3018 - Warning: inserting implicit <font>
line 871 column 3018 - Warning: missing </font> before <hr>
line 871 column 3088 - Warning: inserting implicit <font>
line 871 column 3088 - Warning: missing </font> before <hr>
line 872 column 1 - Warning: inserting implicit <font>
line 851 column 137 - Warning: missing </div>
line 876 column 17 - Warning: missing <tr>
line 876 column 17 - Warning: discarding unexpected <table>
line 879 column 35 - Warning: missing <tr>
line 879 column 95 - Warning: unescaped & or unknown entity "&page"
line 879 column 126 - Warning: unescaped & or unknown entity "&page"
line 879 column 157 - Warning: unescaped & or unknown entity "&page"
line 879 column 188 - Warning: unescaped & or unknown entity "&page"
line 879 column 219 - Warning: unescaped & or unknown entity "&page"
line 879 column 250 - Warning: unescaped & or unknown entity "&page"
line 879 column 281 - Warning: unescaped & or unknown entity "&page"
line 879 column 50 - Warning: missing </font> before </td>
line 879 column 316 - Warning: missing </font> before </table>
line 881 column 35 - Warning: missing <tr>
line 881 column 50 - Warning: missing </font> before </td>
line 882 column 37 - Warning: unescaped & or unknown entity "&id"
line 881 column 189 - Warning: missing </font> before </table>
line 883 column 17 - Warning: discarding unexpected </textarea>
line 883 column 28 - Warning: discarding unexpected </form>
line 883 column 35 - Warning: discarding unexpected </embed>
line 883 column 43 - Warning: discarding unexpected </noembed>
line 883 column 53 - Warning: discarding unexpected </noscript>
line 883 column 64 - Warning: discarding unexpected </noembed>
line 883 column 74 - Warning: discarding unexpected </embed>
line 883 column 82 - Warning: discarding unexpected </table>
line 883 column 90 - Warning: discarding unexpected </table>
line 885 column 9 - Warning: missing </font> before <table>
line 897 column 25 - Warning: discarding unexpected </font>
line 906 column 57 - Warning: discarding unexpected </font>
line 884 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 161 column 22 - Warning: <img> lacks "alt" attribute
line 161 column 63 - Warning: <img> lacks "alt" attribute
line 161 column 112 - Warning: <img> lacks "alt" attribute
line 161 column 162 - Warning: <img> lacks "alt" attribute
line 162 column 11 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 268 column 22 - Warning: <img> lacks "alt" attribute
line 268 column 63 - Warning: <img> lacks "alt" attribute
line 268 column 112 - Warning: <img> lacks "alt" attribute
line 268 column 162 - Warning: <img> lacks "alt" attribute
line 279 column 15 - Warning: <img> lacks "alt" attribute
line 295 column 22 - Warning: <img> lacks "alt" attribute
line 295 column 63 - Warning: <img> lacks "alt" attribute
line 295 column 112 - Warning: <img> lacks "alt" attribute
line 295 column 161 - Warning: <img> lacks "alt" attribute
line 306 column 15 - Warning: <img> lacks "alt" attribute
line 323 column 22 - Warning: <img> lacks "alt" attribute
line 323 column 63 - Warning: <img> lacks "alt" attribute
line 323 column 112 - Warning: <img> lacks "alt" attribute
line 323 column 162 - Warning: <img> lacks "alt" attribute
line 334 column 15 - Warning: <img> lacks "alt" attribute
line 349 column 22 - Warning: <img> lacks "alt" attribute
line 349 column 63 - Warning: <img> lacks "alt" attribute
line 349 column 112 - Warning: <img> lacks "alt" attribute
line 349 column 162 - Warning: <img> lacks "alt" attribute
line 350 column 11 - Warning: <img> lacks "alt" attribute
line 360 column 15 - Warning: <img> lacks "alt" attribute
line 377 column 22 - Warning: <img> lacks "alt" attribute
line 377 column 63 - Warning: <img> lacks "alt" attribute
line 377 column 112 - Warning: <img> lacks "alt" attribute
line 377 column 162 - Warning: <img> lacks "alt" attribute
line 388 column 15 - Warning: <img> lacks "alt" attribute
line 403 column 22 - Warning: <img> lacks "alt" attribute
line 403 column 63 - Warning: <img> lacks "alt" attribute
line 403 column 112 - Warning: <img> lacks "alt" attribute
line 403 column 161 - Warning: <img> lacks "alt" attribute
line 414 column 15 - Warning: <img> lacks "alt" attribute
line 429 column 22 - Warning: <img> lacks "alt" attribute
line 429 column 63 - Warning: <img> lacks "alt" attribute
line 429 column 112 - Warning: <img> lacks "alt" attribute
line 429 column 162 - Warning: <img> lacks "alt" attribute
line 440 column 15 - Warning: <img> lacks "alt" attribute
line 455 column 22 - Warning: <img> lacks "alt" attribute
line 455 column 63 - Warning: <img> lacks "alt" attribute
line 455 column 112 - Warning: <img> lacks "alt" attribute
line 455 column 162 - Warning: <img> lacks "alt" attribute
line 466 column 15 - Warning: <img> lacks "alt" attribute
line 473 column 693 - Warning: <img> lacks "alt" attribute
line 473 column 1638 - Warning: <img> proprietary attribute value "absmiddle"
line 473 column 1638 - Warning: <img> lacks "alt" attribute
line 473 column 1740 - Warning: <img> proprietary attribute value "absmiddle"
line 473 column 1740 - Warning: <img> lacks "alt" attribute
line 486 column 3807 - Warning: <img> lacks "alt" attribute
line 486 column 3966 - Warning: <img> lacks "alt" attribute
line 492 column 37 - Warning: <img> lacks "alt" attribute
line 501 column 393 - Warning: <font> attribute "color" had invalid value "888888" and has been replaced
line 508 column 22 - Warning: <img> lacks "alt" attribute
line 508 column 63 - Warning: <img> lacks "alt" attribute
line 508 column 112 - Warning: <img> lacks "alt" attribute
line 508 column 162 - Warning: <img> lacks "alt" attribute
line 519 column 15 - Warning: <img> lacks "alt" attribute
line 526 column 693 - Warning: <img> lacks "alt" attribute
line 532 column 2334 - Warning: <img> proprietary attribute value "absmiddle"
line 532 column 2334 - Warning: <img> lacks "alt" attribute
line 532 column 2466 - Warning: <img> lacks "alt" attribute
line 532 column 2625 - Warning: <img> lacks "alt" attribute
line 538 column 37 - Warning: <img> lacks "alt" attribute
line 545 column 297 - Warning: <font> attribute "color" had invalid value "888888" and has been replaced
line 552 column 22 - Warning: <img> lacks "alt" attribute
line 552 column 63 - Warning: <img> lacks "alt" attribute
line 552 column 112 - Warning: <img> lacks "alt" attribute
line 552 column 162 - Warning: <img> lacks "alt" attribute
line 553 column 11 - Warning: <img> lacks "alt" attribute
line 563 column 15 - Warning: <img> lacks "alt" attribute
line 578 column 22 - Warning: <img> lacks "alt" attribute
line 578 column 63 - Warning: <img> lacks "alt" attribute
line 578 column 112 - Warning: <img> lacks "alt" attribute
line 578 column 162 - Warning: <img> lacks "alt" attribute
line 589 column 15 - Warning: <img> lacks "alt" attribute
line 596 column 693 - Warning: <img> lacks "alt" attribute
line 596 column 2216 - Warning: <img> proprietary attribute value "absmiddle"
line 596 column 2216 - Warning: <img> lacks "alt" attribute
line 669 column 4740 - Warning: <img> lacks "alt" attribute
line 669 column 4899 - Warning: <img> lacks "alt" attribute
line 677 column 22 - Warning: <img> lacks "alt" attribute
line 677 column 63 - Warning: <img> lacks "alt" attribute
line 677 column 112 - Warning: <img> lacks "alt" attribute
line 677 column 162 - Warning: <img> lacks "alt" attribute
line 678 column 11 - Warning: <img> lacks "alt" attribute
line 688 column 15 - Warning: <img> lacks "alt" attribute
line 738 column 37 - Warning: <img> lacks "alt" attribute
line 750 column 37 - Warning: <img> lacks "alt" attribute
line 757 column 603 - Warning: <font> attribute "color" had invalid value "888888" and has been replaced
line 764 column 21 - Warning: <img> lacks "alt" attribute
line 764 column 62 - Warning: <img> lacks "alt" attribute
line 764 column 111 - Warning: <img> lacks "alt" attribute
line 764 column 161 - Warning: <img> lacks "alt" attribute
line 775 column 15 - Warning: <img> lacks "alt" attribute
line 793 column 758 - Warning: <img> proprietary attribute value "absmiddle"
line 793 column 758 - Warning: <img> lacks "alt" attribute
line 795 column 938 - Warning: <img> proprietary attribute value "absmiddle"
line 795 column 938 - Warning: <img> lacks "alt" attribute
line 806 column 22 - Warning: <img> lacks "alt" attribute
line 806 column 63 - Warning: <img> lacks "alt" attribute
line 806 column 112 - Warning: <img> lacks "alt" attribute
line 806 column 162 - Warning: <img> lacks "alt" attribute
line 807 column 11 - Warning: <img> lacks "alt" attribute
line 817 column 15 - Warning: <img> lacks "alt" attribute
line 833 column 22 - Warning: <img> lacks "alt" attribute
line 833 column 63 - Warning: <img> lacks "alt" attribute
line 833 column 112 - Warning: <img> lacks "alt" attribute
line 833 column 162 - Warning: <img> lacks "alt" attribute
line 844 column 15 - Warning: <img> lacks "alt" attribute
line 851 column 693 - Warning: <img> lacks "alt" attribute
line 862 column 2340 - Warning: <img> proprietary attribute value "absmiddle"
line 862 column 2340 - Warning: <img> lacks "alt" attribute
line 864 column 2520 - Warning: <img> proprietary attribute value "absmiddle"
line 864 column 2520 - Warning: <img> lacks "alt" attribute
line 869 column 2831 - Warning: <img> proprietary attribute value "absmiddle"
line 869 column 2831 - Warning: <img> lacks "alt" attribute
line 869 column 2949 - Warning: <img> proprietary attribute value "absmiddle"
line 869 column 2949 - Warning: <img> lacks "alt" attribute
line 873 column 3720 - Warning: <img> lacks "alt" attribute
line 873 column 3879 - Warning: <img> lacks "alt" attribute
line 882 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 882 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 882 column 244 - Warning: <img> proprietary attribute value "absmiddle"
line 891 column 25 - Warning: <img> lacks "alt" attribute
line 896 column 267 - Warning: <img> lacks "alt" attribute
line 526 column 1511 - Warning: trimming empty <font>
line 851 column 1511 - Warning: trimming empty <font>
line 867 column 2594 - Warning: trimming empty <font>
line 876 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 284 column 27 - Warning: <nobr> is not approved by W3C
line 311 column 27 - Warning: <nobr> is not approved by W3C
line 339 column 27 - Warning: <nobr> is not approved by W3C
line 365 column 27 - Warning: <nobr> is not approved by W3C
line 393 column 27 - Warning: <nobr> is not approved by W3C
line 419 column 27 - Warning: <nobr> is not approved by W3C
line 445 column 27 - Warning: <nobr> is not approved by W3C
line 471 column 27 - Warning: <nobr> is not approved by W3C
line 473 column 157 - Warning: <table> proprietary attribute "height"
line 473 column 222 - Warning: <td> proprietary attribute "background"
line 473 column 318 - Warning: <td> proprietary attribute "background"
line 473 column 408 - Warning: <table> proprietary attribute "height"
line 473 column 488 - Warning: <td> proprietary attribute "background"
line 473 column 1443 - Warning: <td> proprietary attribute "background"
line 497 column 47 - Warning: <nobr> is not approved by W3C
line 524 column 27 - Warning: <nobr> is not approved by W3C
line 526 column 157 - Warning: <table> proprietary attribute "height"
line 526 column 222 - Warning: <td> proprietary attribute "background"
line 526 column 318 - Warning: <td> proprietary attribute "background"
line 526 column 408 - Warning: <table> proprietary attribute "height"
line 526 column 488 - Warning: <td> proprietary attribute "background"
line 526 column 1443 - Warning: <td> proprietary attribute "background"
line 543 column 47 - Warning: <nobr> is not approved by W3C
line 568 column 27 - Warning: <nobr> is not approved by W3C
line 594 column 27 - Warning: <nobr> is not approved by W3C
line 596 column 157 - Warning: <table> proprietary attribute "height"
line 596 column 222 - Warning: <td> proprietary attribute "background"
line 596 column 318 - Warning: <td> proprietary attribute "background"
line 596 column 408 - Warning: <table> proprietary attribute "height"
line 596 column 488 - Warning: <td> proprietary attribute "background"
line 596 column 1443 - Warning: <td> proprietary attribute "background"
line 693 column 27 - Warning: <nobr> is not approved by W3C
line 743 column 47 - Warning: <nobr> is not approved by W3C
line 755 column 47 - Warning: <nobr> is not approved by W3C
line 780 column 27 - Warning: <nobr> is not approved by W3C
line 822 column 27 - Warning: <nobr> is not approved by W3C
line 849 column 27 - Warning: <nobr> is not approved by W3C
line 851 column 157 - Warning: <table> proprietary attribute "height"
line 851 column 222 - Warning: <td> proprietary attribute "background"
line 851 column 318 - Warning: <td> proprietary attribute "background"
line 851 column 408 - Warning: <table> proprietary attribute "height"
line 851 column 488 - Warning: <td> proprietary attribute "background"
line 851 column 1443 - Warning: <td> proprietary attribute "background"
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 349 warnings and 1 error!

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