Register - Login
Views: 99381135
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-23-22 11:48:35 PM
Jul - SM64 Hacking (Archive) - M64Tool - Level exporter (+ documentation) New poll - New thread - New reply
Pages: 1 2 Next newer thread | Next older thread
MarIO0
Member
Level: 16


Posts: 34/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-06-11 04:42:21 PM (last edited by MarIO0 at 01-27-13 08:20:00 AM) Link | Quote
M64Tool is a level exporter. It wasn't meant to be a level exporter, but that's another story and part of the reason I have lost my interest on Mario 64 modifications.

Right now, it doesn't work *really* well. Most levels and platforms export correctly, but many of the moving/alive objects don't render too well (I suspect this may have to do with some unimplemented stuff like scaling, but behaviour scripts may also play a part). Sometimes huge chunks of the levels are missing (this is probably caused by the objects which are inserted with ID=0, which I don't know what it means... any information about this will be great).

And of couse, since I'm exporting to .OBJ, there are many things that can't work, like billboards.

Anyway, if you want to use it to export levels, the usage is:



./m64tool ROM.z64



If you don't know how to use the command line, just drag&drop the ROM to the program.
You can use a normal ROM or a extended ROM. I have only tested it with a original (unmodified) ROM, but it should work with any ROM as long as it doesn't use any feature not used in the original ROM.

It will create two folders, called "M64_Levels" and "M64_Exports". "levels" will contain the whole levels (note that it will create some duplicate ones, since it'll export the whole level for any reference to it, and some are refered multiple times). "exports" will contain all textures and all collision data found.

Other random things:
- It's cross platform (tested on Windows and Linux).
- I may post an update in some days.
- I will try to implement a viewer or switch to another format to support more things.

DOWNLOAD CURRENT r3.2
download old r3
download old r3 (link broken)
download old r2 (link broken)
download old r1 (link broken)

--- *** --- *** --- *** ---

Anyway, another use you can give to this program is as documentation, as in MAME. There's not really any updated or complete documentation available, and most programs posted here don't come with source. And the ones that do (I'm talking about MariOZMAV) aren't really clean.

The source code is written in the D programming language.

My source code may not be the best, but:
- It works.
- It's pretty complete (can parse level scripts, geometry layout, display lists, animation data, behaviour scripts, collision data and textures).
- It's not really hacky (no special cases).
- It hardly uses any hardcoded data. The only hardcoded offsets are the ones of the entry point banks and the preset models table, all pretty essential in order to get level exporting working.
- It doesn't have too many boilerplate code. I (ab)used D templates in order to auto-generate most parts that would require it.
- It's pretty commented/documented, and includes references to sources and relevant documentation/discussion.

--- *** --- *** --- *** ---

This program is pretty much based on all documentation that I've found around, which is very sparse. Credits go (in no specific order) to messiaen, Nagra, VL-Tone, Cellar Dweller, dudaw, Twili, yoshiman, xdaniel, Michael Tedder and everyone else I'm probably missing.

EXTRA: Download Cellar Dweller's ROM Extender (original host is down)
Cajetan
Member
Level: 22


Posts: 1/88
EXP: 51640
For next: 6710

Since: 08-06-11

From: Binary

Since last post: 345 days
Last activity: 345 days

Posted on 08-06-11 06:29:18 PM (last edited by Cajetan at 02-23-12 05:33 AM) Link | Quote
Cool Virus, bro.
My Anti virus is reporting this program would be a virus.


(USER WAS WARNED FOR THIS POST)

I hate that post! Im so an idiot!
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 192


Posts: 9889/12211
EXP: 99235827
For next: 637744

Since: 07-03-07

From: 52-2-88-7

Since last post: 7.4 years
Last activity: 7.3 years

Posted on 08-06-11 06:44:27 PM (last edited by Metal_Man88 at 08-06-11 09:38 PM) Link | Quote
Stats
Time/Date
08-06-11 12:44:27 PM
Posts
9889
Days Here
1495
Level
146
Metal_Man88's Post
Antiviruses often get false positives. If you want to be banned, keep letting your crummy virus scanner run your life.

____________________
Don't ever let bad luck stop you from achieving your dreams.
Eisnaught - SSQ² - Mobius Roleplay - SSS
MarIO0
Member
Level: 16


Posts: 35/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-06-11 09:05:17 PM Link | Quote
Not a virus. Checked with VirusTotal and also nothing, not even a false positive.
Apache Thunder
User
Level: 12


Posts: 13/20
EXP: 6454
For next: 1467

Since: 01-20-08

From: Interdimensional Spy Headquarters

Since last post: 8.5 years
Last activity: 7.3 years

Posted on 08-07-11 01:10:45 AM (last edited by Apache Thunder at 08-06-11 10:12 PM) Link | Quote
No problems with my virus scanner so I can attest that it is clean.

Ok tried it and it failed to extract anything.

Here's the error I got:

"object.Exception@m64\binarystream.d(154): Casting failed; probably some limit has been broken."

Here's the error I got when I tried the extended rom instead:

"object.Exception@m64\polygon.d(204): Polygon vertex: Unexpected byte count."


I'm using the US version of the rom (tried both untouched rom and extended rom) and am using this on Windows XP 64-Bit Edition.

So that is my "constructive" feedback on the editor.

____________________
I have cameras in your head!
MarIO0
Member
Level: 16


Posts: 36/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-07-11 04:32:23 PM (last edited by MarIO0 at 08-07-11 01:32 PM) Link | Quote
Originally posted by Apache Thunder
No problems with my virus scanner so I can attest that it is clean.

Ok tried it and it failed to extract anything.

Here's the error I got:

"object.Exception@m64\binarystream.d(154): Casting failed; probably some limit has been broken."

Here's the error I got when I tried the extended rom instead:

"object.Exception@m64\polygon.d(204): Polygon vertex: Unexpected byte count."


I'm using the US version of the rom (tried both untouched rom and extended rom) and am using this on Windows XP 64-Bit Edition.

So that is my "constructive" feedback on the editor.


Thanks for your feedback.

I have found that the first problem is caused because you have a swapped ROM (extension N64). I've uploaded a version that fixes this.

However, I cannot reproduce your second problem. What kind of extended ROM you have? I have only tried using a ROM extended with VL-Tone's/Cellar Dweller's extender, not the OBJ importer patches or anything.
Apache Thunder
User
Level: 12


Posts: 14/20
EXP: 6454
For next: 1467

Since: 01-20-08

From: Interdimensional Spy Headquarters

Since last post: 8.5 years
Last activity: 7.3 years

Posted on 08-07-11 04:56:11 PM (last edited by Apache Thunder at 08-07-11 02:17 PM) Link | Quote
I'm not sure actually. It's been sitting in my Project64 folder for a long time now. I'm pretty sure I have extended it with one of VL-Tones programs as I recall working with Toads Tool when it first came out and such. I'll try the new version and see if it fixes the first error.

EDIT:

Alright looks like it's working now. It's extracting stuff to the locations you mentioned. I'm getting a lot of "Warning: Model with ID=0 Not Found" messages. But I think that may be one of the expected behaviors. I'll check out what it's extracted but it looks like it works as advertised now. Great work!

EDIT:

Level ID 13 I think? That's the folder name it had anyway.

Here's the result: (click to enlarge)



Pyramid boss fight room. Looks great in 3DS Max. I added a light source to make it look extra nice. So far so good!

Also, I noticed that a good number of these have upwards of 200+ materials on them. Anyway on condensing that down? I want to enable textures in the 3DS Viewport but clicking through 200+ materials to do it is a big pain.

____________________
I have cameras in your head!
MarIO0
Member
Level: 16


Posts: 37/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-07-11 10:52:54 PM Link | Quote
The "model with ID=0 not found" message is expected. There are many level script commands which try to insert a model with ID 0, which does not seem to be defined anywhere... probably it means something special. Some parts of some levels are missing and I expect this to be the cause, but I don't know what it actually means.

Anyway, I solved the material problem. I was creating a material each time a texture was selected. Now I reuse them and it looks like the boss battle has gone down to only 7 materials.

Thanks for testing my program, and that image looks great!
Apache Thunder
User
Level: 12


Posts: 15/20
EXP: 6454
For next: 1467

Since: 01-20-08

From: Interdimensional Spy Headquarters

Since last post: 8.5 years
Last activity: 7.3 years

Posted on 08-08-11 12:50:00 AM Link | Quote
Tried the r3 version and now the materials are at a reasonable count and not many duplicates spotted thus far.

No other problems encountered thus far. Only suggestion at this point is to perhaps somehow link the level names to each folder number so we can sift through the extracted content easier, but that's one of those optional things you can undertake if you have the time to do so.

____________________
I have cameras in your head!
Cajetan
Member
Level: 22


Posts: 2/88
EXP: 51640
For next: 6710

Since: 08-06-11

From: Binary

Since last post: 345 days
Last activity: 345 days

Posted on 08-08-11 04:21:03 PM Link | Quote
Sorry, for my first negative post. It just reported it as virus i removed my old anti virus and downloaded Avast.
Also, The Program work's very good. Keep it up.
MarIO0
Member
Level: 16


Posts: 38/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-08-11 10:37:17 PM Link | Quote
I think that I figured out what the objects with ID=0 mean. Since there are consecutive objects with ID=0 and different behavior addresses, I can only assume that ID=0 means that drawing is handled by the behavior script. And unfortunately, pretty much every single behaviour script is just a call to the game code, which means that those objects will never be rendered.
Yoshi Party
User
Level: 10


Posts: 14/14
EXP: 3512
For next: 902

Since: 12-31-09


Since last post: 10.7 years
Last activity: 10.6 years

Posted on 08-10-11 10:02:28 AM Link | Quote
Great tool

Are the exported maps compatible to the level importer? I want to change the maps only a little(!) to keep the lakitu camera working

Have to try it anyway, thank you
MarIO0
Member
Level: 16


Posts: 39/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-10-11 06:16:54 PM Link | Quote
The maps should be compatible with the level importer, since I'm just generating a .OBJ file. However, I've never used the level importer, so I have no idea on how easy it'll be to get everything working like in the original again.

(For example, I don't export the terrain types (which are part of the colision map, not of the models). I'm not sure how the OBJ importer handles this).
Vinnyboiler
Catgirl
Level: 66


Posts: 831/1044
EXP: 2439784
For next: 22067

Since: 12-27-07

From: London, England

Since last post: 7 days
Last activity: 3 days

Posted on 08-11-11 01:37:48 PM Link | Quote



Originally posted by MarIO0
The maps should be compatible with the level importer, since I'm just generating a .OBJ file. However, I've never used the level importer, so I have no idea on how easy it'll be to get everything working like in the original again.

(For example, I don't export the terrain types (which are part of the colision map, not of the models). I'm not sure how the OBJ importer handles this).



The OBJ importer just assigns collisions to textures so that wouldn't be too hard of a problem.

By the way, does this programme rip stuff like crates and enemy's along with the geometry, or is it just the geometry by itself?

____________________




`ท.,ธ,.ท*ฏ`ท.,ธ,.ท*ฏ[;::;(^ᴥ^ญญญญญญญญญญญ)
What the heck is this thing. It looks like a love child between a Wii remote and a bottom part of a DS
~ My mind
`ท.,ธ,.ท*ฏ`ท.,ธ,.ท*ฏ[;::;(^ᴥ^ญญญญญญญญญญญ)

MarIO0
Member
Level: 16


Posts: 41/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-11-11 03:28:50 PM Link | Quote
It rips both. However, it creates a different object name for each model, so if you only want the level geometry, you can use a 3D editor and remove all objects except the first.
Rena
I had one (1) message in Discord deleted and proceeded to make a huge, huge mess about how it was a violation of free speech and how moderators are supposed to be spam janitors and nobody should have the right to tell me not to talk about school shootings
Level: 135


Posts: 4255/5390
EXP: 29050495
For next: 284510

Since: 07-22-07

Pronouns: he/him/whatever
From: RSP Segment 6

Since last post: 333 days
Last activity: 333 days

Posted on 08-12-11 03:48:16 AM Link | Quote
Post #4255 · 08-11-11 10:48:16 PM
Originally posted by MarIO0
I think that I figured out what the objects with ID=0 mean. Since there are consecutive objects with ID=0 and different behavior addresses, I can only assume that ID=0 means that drawing is handled by the behavior script.
Or does it just represent an invisible object? (Which could still have its script drawing things, I suppose.)

____________________
MarIO0
Member
Level: 16


Posts: 42/43
EXP: 19156
For next: 1100

Since: 09-03-09


Since last post: 9.2 years
Last activity: 8.6 years

Posted on 08-13-11 02:43:30 PM Link | Quote
Originally posted by Rena
Originally posted by MarIO0
I think that I figured out what the objects with ID=0 mean. Since there are consecutive objects with ID=0 and different behavior addresses, I can only assume that ID=0 means that drawing is handled by the behavior script.
Or does it just represent an invisible object? (Which could still have its script drawing things, I suppose.)


Doh, I didn't think that they could be *really* invisible objects. Though that would be a lot of invisible objects. Time to test it, I guess...
Dudaw
Member
Level: 17


Posts: 36/49
EXP: 22029
For next: 2714

Since: 01-07-11


Since last post: 9.1 years
Last activity: 5.8 years

Posted on 08-14-11 08:49:25 PM (last edited by Dudaw at 08-14-11 05:51 PM) Link | Quote
Originally posted by MarIO0
Originally posted by Rena
Originally posted by MarIO0
I think that I figured out what the objects with ID=0 mean. Since there are consecutive objects with ID=0 and different behavior addresses, I can only assume that ID=0 means that drawing is handled by the behavior script.
Or does it just represent an invisible object? (Which could still have its script drawing things, I suppose.)


Doh, I didn't think that they could be *really* invisible objects. Though that would be a lot of invisible objects. Time to test it, I guess...


"[22] [08] 00 [00] [?? ?? ?? ??]" = No results found.

1-2: Geo layout pointer script command
3: Model ID
4: Segmented pointer to geo layout.

Yes, model ID 0 is always used for invisible objects (warps, object groups, special function, etc).
XerX
Random nobody
Level: 5


Posts: 3/3
EXP: 313
For next: 216

Since: 04-28-12


Since last post: 9.9 years
Last activity: 9.9 years

Posted on 05-26-12 04:03:05 PM Link | Quote
The download links are broken.
Kenshi
Member
Level: 21


Posts: 63/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 08-07-12 03:03:16 PM Link | Quote
Yeah, I hate to bump an old thread but, the download links are broken for all Revisions including 3.

Anyone who has downloaded any of them or at least R3 can you post a link up for it?

____________________
This is a sig.
Pages: 1 2 Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - M64Tool - Level exporter (+ documentation) 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, 10 query cache hits.
Query execution time:  0.097130 seconds
Script execution time:  0.033473 seconds
Total render time:  0.130603 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 306 - 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 213 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 97 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 132 - 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 102 - Warning: unescaped & or unknown entity "&postid"
line 190 column 1049 - Warning: unescaped & or unknown entity "&drop"
line 227 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 229 column 9 - Warning: missing <tr>
line 247 column 13 - Warning: missing <tr>
line 248 column 102 - Warning: unescaped & or unknown entity "&postid"
line 258 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 260 column 9 - Warning: missing <tr>
line 278 column 13 - Warning: missing <tr>
line 279 column 102 - Warning: unescaped & or unknown entity "&postid"
line 281 column 74 - Warning: <style> isn't allowed in <td> elements
line 281 column 9 - Info: <td> previously mentioned
line 281 column 1365 - Error: <z> is not recognized!
line 281 column 1365 - Warning: discarding unexpected <z>
line 281 column 1377 - Warning: discarding unexpected </z>
line 283 column 1409 - Error: <z> is not recognized!
line 283 column 1409 - Warning: discarding unexpected <z>
line 283 column 1417 - Warning: discarding unexpected </z>
line 285 column 1433 - Error: <z> is not recognized!
line 285 column 1433 - Warning: discarding unexpected <z>
line 285 column 1445 - Warning: discarding unexpected </z>
line 287 column 1461 - Error: <z> is not recognized!
line 287 column 1461 - Warning: discarding unexpected <z>
line 287 column 1469 - Warning: discarding unexpected </z>
line 289 column 2314 - Warning: discarding unexpected </td>
line 292 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 294 column 9 - Warning: missing <tr>
line 312 column 13 - Warning: missing <tr>
line 313 column 102 - 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 102 - Warning: unescaped & or unknown entity "&postid"
line 360 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 362 column 9 - Warning: missing <tr>
line 380 column 13 - Warning: missing <tr>
line 381 column 102 - Warning: unescaped & or unknown entity "&postid"
line 407 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 409 column 9 - Warning: missing <tr>
line 427 column 13 - Warning: missing <tr>
line 428 column 102 - 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 102 - Warning: unescaped & or unknown entity "&postid"
line 480 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 482 column 9 - Warning: missing <tr>
line 500 column 13 - Warning: missing <tr>
line 501 column 102 - Warning: unescaped & or unknown entity "&postid"
line 509 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 511 column 9 - Warning: missing <tr>
line 529 column 13 - Warning: missing <tr>
line 530 column 102 - Warning: unescaped & or unknown entity "&postid"
line 536 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 538 column 9 - Warning: missing <tr>
line 556 column 13 - Warning: missing <tr>
line 557 column 102 - Warning: unescaped & or unknown entity "&postid"
line 562 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 564 column 9 - Warning: missing <tr>
line 582 column 13 - Warning: missing <tr>
line 583 column 102 - Warning: unescaped & or unknown entity "&postid"
line 592 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 594 column 9 - Warning: missing <tr>
line 612 column 13 - Warning: missing <tr>
line 613 column 102 - Warning: unescaped & or unknown entity "&postid"
line 620 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 622 column 9 - Warning: missing <tr>
line 640 column 13 - Warning: missing <tr>
line 641 column 102 - Warning: unescaped & or unknown entity "&postid"
line 645 column 750 - Warning: missing </font> before <blockquote>
line 646 column 789 - Warning: inserting implicit <font>
line 646 column 789 - Warning: missing </font> before <hr>
line 646 column 852 - Warning: inserting implicit <font>
line 646 column 852 - Warning: missing </font> before <hr>
line 649 column 1 - Warning: inserting implicit <font>
line 655 column 1815 - Warning: unescaped & or unknown entity "&st"
line 655 column 1821 - Warning: unescaped & or unknown entity "&#"
line 663 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 665 column 9 - Warning: missing <tr>
line 683 column 13 - Warning: missing <tr>
line 684 column 102 - Warning: unescaped & or unknown entity "&postid"
line 689 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 691 column 9 - Warning: missing <tr>
line 709 column 13 - Warning: missing <tr>
line 710 column 102 - Warning: unescaped & or unknown entity "&postid"
line 712 column 4814 - Warning: replacing unexpected input with </input>
line 712 column 5128 - Warning: discarding unexpected </span>
line 715 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 717 column 9 - Warning: missing <tr>
line 735 column 13 - Warning: missing <tr>
line 736 column 102 - Warning: unescaped & or unknown entity "&postid"
line 743 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 745 column 9 - Warning: missing <tr>
line 763 column 13 - Warning: missing <tr>
line 764 column 102 - Warning: unescaped & or unknown entity "&postid"
line 779 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 781 column 9 - Warning: missing <tr>
line 799 column 13 - Warning: missing <tr>
line 800 column 102 - Warning: unescaped & or unknown entity "&postid"
line 805 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 807 column 9 - Warning: missing <tr>
line 825 column 13 - Warning: missing <tr>
line 826 column 102 - Warning: unescaped & or unknown entity "&postid"
line 833 column 17 - Warning: missing <tr>
line 833 column 17 - Warning: discarding unexpected <table>
line 836 column 35 - Warning: missing <tr>
line 836 column 97 - Warning: unescaped & or unknown entity "&page"
line 836 column 50 - Warning: missing </font> before </td>
line 836 column 132 - Warning: missing </font> before </table>
line 838 column 35 - Warning: missing <tr>
line 838 column 50 - Warning: missing </font> before </td>
line 839 column 37 - Warning: unescaped & or unknown entity "&id"
line 838 column 213 - Warning: missing </font> before </table>
line 840 column 17 - Warning: discarding unexpected </textarea>
line 840 column 28 - Warning: discarding unexpected </form>
line 840 column 35 - Warning: discarding unexpected </embed>
line 840 column 43 - Warning: discarding unexpected </noembed>
line 840 column 53 - Warning: discarding unexpected </noscript>
line 840 column 64 - Warning: discarding unexpected </noembed>
line 840 column 74 - Warning: discarding unexpected </embed>
line 840 column 82 - Warning: discarding unexpected </table>
line 840 column 90 - Warning: discarding unexpected </table>
line 842 column 9 - Warning: missing </font> before <table>
line 854 column 25 - Warning: discarding unexpected </font>
line 863 column 58 - Warning: discarding unexpected </font>
line 841 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 246 - 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 172 column 15 - Warning: <img> lacks "alt" attribute
line 176 column 92 - Warning: <font> attribute "color" had invalid value "7C60B0" and has been replaced
line 232 column 22 - Warning: <img> lacks "alt" attribute
line 232 column 63 - Warning: <img> lacks "alt" attribute
line 232 column 112 - Warning: <img> lacks "alt" attribute
line 232 column 162 - Warning: <img> lacks "alt" attribute
line 233 column 11 - Warning: <img> lacks "alt" attribute
line 243 column 15 - Warning: <img> lacks "alt" attribute
line 262 column 17 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 17 - Warning: <img> lacks "alt" attribute
line 262 column 60 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 60 - Warning: <img> lacks "alt" attribute
line 262 column 103 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 103 - Warning: <img> lacks "alt" attribute
line 262 column 146 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 146 - Warning: <img> lacks "alt" attribute
line 262 column 189 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 189 - Warning: <img> lacks "alt" attribute
line 262 column 232 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 232 - Warning: <img> lacks "alt" attribute
line 262 column 275 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 275 - Warning: <img> lacks "alt" attribute
line 262 column 318 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 318 - Warning: <img> lacks "alt" attribute
line 262 column 361 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 361 - Warning: <img> lacks "alt" attribute
line 263 column 23 - Warning: <img> lacks "alt" attribute
line 263 column 64 - Warning: <img> lacks "alt" attribute
line 263 column 113 - Warning: <img> lacks "alt" attribute
line 263 column 163 - Warning: <img> lacks "alt" attribute
line 264 column 11 - Warning: <img> lacks "alt" attribute
line 274 column 15 - Warning: <img> lacks "alt" attribute
line 281 column 1210 - Warning: <tr> attribute "valign" has invalid value "center"
line 297 column 22 - Warning: <img> lacks "alt" attribute
line 297 column 63 - Warning: <img> lacks "alt" attribute
line 297 column 112 - Warning: <img> lacks "alt" attribute
line 297 column 162 - Warning: <img> lacks "alt" attribute
line 308 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 324 column 11 - Warning: <img> lacks "alt" attribute
line 334 column 15 - Warning: <img> lacks "alt" attribute
line 343 column 196 - Warning: <img> proprietary attribute value "absmiddle"
line 343 column 196 - Warning: <img> lacks "alt" attribute
line 356 column 735 - Warning: <img> proprietary attribute value "absmiddle"
line 356 column 735 - Warning: <img> lacks "alt" attribute
line 357 column 851 - Warning: <img> lacks "alt" attribute
line 365 column 22 - Warning: <img> lacks "alt" attribute
line 365 column 63 - Warning: <img> lacks "alt" attribute
line 365 column 112 - Warning: <img> lacks "alt" attribute
line 365 column 162 - Warning: <img> lacks "alt" attribute
line 376 column 15 - Warning: <img> lacks "alt" attribute
line 385 column 279 - Warning: <img> proprietary attribute value "absmiddle"
line 385 column 279 - Warning: <img> lacks "alt" attribute
line 398 column 818 - Warning: <img> proprietary attribute value "absmiddle"
line 398 column 818 - Warning: <img> lacks "alt" attribute
line 412 column 22 - Warning: <img> lacks "alt" attribute
line 412 column 63 - Warning: <img> lacks "alt" attribute
line 412 column 112 - Warning: <img> lacks "alt" attribute
line 412 column 162 - Warning: <img> lacks "alt" attribute
line 413 column 11 - Warning: <img> lacks "alt" attribute
line 423 column 15 - Warning: <img> lacks "alt" attribute
line 434 column 682 - Warning: <img> proprietary attribute value "absmiddle"
line 434 column 682 - Warning: <img> lacks "alt" attribute
line 442 column 925 - Warning: <img> lacks "alt" attribute
line 444 column 1131 - Warning: <img> proprietary attribute value "absmiddle"
line 444 column 1131 - Warning: <img> lacks "alt" attribute
line 446 column 1413 - Warning: <img> proprietary attribute value "absmiddle"
line 446 column 1413 - Warning: <img> lacks "alt" attribute
line 447 column 1527 - 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 485 column 22 - Warning: <img> lacks "alt" attribute
line 485 column 63 - Warning: <img> lacks "alt" attribute
line 485 column 112 - Warning: <img> lacks "alt" attribute
line 485 column 162 - Warning: <img> lacks "alt" attribute
line 486 column 11 - Warning: <img> lacks "alt" attribute
line 496 column 15 - Warning: <img> lacks "alt" attribute
line 503 column 185 - Warning: <img> proprietary attribute value "absmiddle"
line 503 column 185 - Warning: <img> lacks "alt" attribute
line 505 column 522 - Warning: <img> proprietary attribute value "absmiddle"
line 505 column 522 - Warning: <img> lacks "alt" attribute
line 506 column 638 - Warning: <img> lacks "alt" attribute
line 514 column 22 - Warning: <img> lacks "alt" attribute
line 514 column 63 - Warning: <img> lacks "alt" attribute
line 514 column 112 - Warning: <img> lacks "alt" attribute
line 514 column 162 - Warning: <img> lacks "alt" attribute
line 515 column 11 - Warning: <img> lacks "alt" attribute
line 525 column 15 - Warning: <img> lacks "alt" attribute
line 541 column 22 - Warning: <img> lacks "alt" attribute
line 541 column 63 - Warning: <img> lacks "alt" attribute
line 541 column 112 - Warning: <img> lacks "alt" attribute
line 541 column 162 - Warning: <img> lacks "alt" attribute
line 552 column 15 - Warning: <img> lacks "alt" attribute
line 567 column 22 - Warning: <img> lacks "alt" attribute
line 567 column 63 - Warning: <img> lacks "alt" attribute
line 567 column 112 - Warning: <img> lacks "alt" attribute
line 567 column 162 - Warning: <img> lacks "alt" attribute
line 578 column 15 - Warning: <img> lacks "alt" attribute
line 585 column 85 - Warning: <img> proprietary attribute value "absmiddle"
line 585 column 85 - Warning: <img> lacks "alt" attribute
line 589 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 589 column 316 - Warning: <img> lacks "alt" attribute
line 597 column 22 - Warning: <img> lacks "alt" attribute
line 597 column 63 - Warning: <img> lacks "alt" attribute
line 597 column 112 - Warning: <img> lacks "alt" attribute
line 597 column 162 - Warning: <img> lacks "alt" attribute
line 608 column 15 - Warning: <img> lacks "alt" attribute
line 625 column 22 - Warning: <img> lacks "alt" attribute
line 625 column 63 - Warning: <img> lacks "alt" attribute
line 625 column 112 - Warning: <img> lacks "alt" attribute
line 625 column 162 - Warning: <img> lacks "alt" attribute
line 626 column 11 - Warning: <img> lacks "alt" attribute
line 636 column 15 - Warning: <img> lacks "alt" attribute
line 655 column 1828 - Warning: <img> lacks "alt" attribute
line 668 column 22 - Warning: <img> lacks "alt" attribute
line 668 column 63 - Warning: <img> lacks "alt" attribute
line 668 column 112 - Warning: <img> lacks "alt" attribute
line 668 column 162 - Warning: <img> lacks "alt" attribute
line 679 column 15 - Warning: <img> lacks "alt" attribute
line 694 column 23 - Warning: <img> lacks "alt" attribute
line 694 column 64 - Warning: <img> lacks "alt" attribute
line 694 column 113 - Warning: <img> lacks "alt" attribute
line 694 column 163 - Warning: <img> lacks "alt" attribute
line 705 column 15 - Warning: <img> lacks "alt" attribute
line 720 column 22 - Warning: <img> lacks "alt" attribute
line 720 column 63 - Warning: <img> lacks "alt" attribute
line 720 column 112 - Warning: <img> lacks "alt" attribute
line 720 column 162 - Warning: <img> lacks "alt" attribute
line 731 column 15 - Warning: <img> lacks "alt" attribute
line 748 column 22 - Warning: <img> lacks "alt" attribute
line 748 column 63 - Warning: <img> lacks "alt" attribute
line 748 column 112 - Warning: <img> lacks "alt" attribute
line 748 column 162 - Warning: <img> lacks "alt" attribute
line 759 column 15 - Warning: <img> lacks "alt" attribute
line 770 column 891 - Warning: <img> proprietary attribute value "absmiddle"
line 770 column 891 - Warning: <img> lacks "alt" attribute
line 784 column 21 - Warning: <img> lacks "alt" attribute
line 784 column 62 - Warning: <img> lacks "alt" attribute
line 784 column 111 - Warning: <img> lacks "alt" attribute
line 784 column 161 - Warning: <img> lacks "alt" attribute
line 795 column 15 - Warning: <img> lacks "alt" attribute
line 810 column 22 - Warning: <img> lacks "alt" attribute
line 810 column 63 - Warning: <img> lacks "alt" attribute
line 810 column 112 - Warning: <img> lacks "alt" attribute
line 810 column 162 - Warning: <img> lacks "alt" attribute
line 811 column 11 - Warning: <img> lacks "alt" attribute
line 821 column 15 - Warning: <img> lacks "alt" attribute
line 839 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 839 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 839 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 848 column 25 - Warning: <img> lacks "alt" attribute
line 853 column 267 - Warning: <img> lacks "alt" attribute
line 712 column 4881 - Warning: trimming empty <label>
line 833 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 248 column 27 - Warning: <nobr> is not approved by W3C
line 279 column 27 - Warning: <nobr> is not approved by W3C
line 281 column 1136 - Warning: <table> proprietary attribute "height"
line 313 column 27 - Warning: <nobr> is not approved by W3C
line 339 column 27 - Warning: <nobr> is not approved by W3C
line 381 column 27 - Warning: <nobr> is not approved by W3C
line 428 column 27 - Warning: <nobr> is not approved by W3C
line 471 column 27 - Warning: <nobr> is not approved by W3C
line 501 column 27 - Warning: <nobr> is not approved by W3C
line 530 column 27 - Warning: <nobr> is not approved by W3C
line 557 column 27 - Warning: <nobr> is not approved by W3C
line 583 column 27 - Warning: <nobr> is not approved by W3C
line 613 column 27 - Warning: <nobr> is not approved by W3C
line 641 column 27 - Warning: <nobr> is not approved by W3C
line 684 column 27 - Warning: <nobr> is not approved by W3C
line 710 column 27 - Warning: <nobr> is not approved by W3C
line 736 column 27 - Warning: <nobr> is not approved by W3C
line 764 column 27 - Warning: <nobr> is not approved by W3C
line 800 column 27 - Warning: <nobr> is not approved by W3C
line 826 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 335 warnings and 4 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