Register - Login
Views: 99380452
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-23-22 11:27:47 PM
Jul - SM64 Hacking (Archive) - Stuff inside the checksum protected area (Title Screen, etc.) New poll - New thread - New reply
Pages: 1 2 3 Next newer thread | Next older thread
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 08-09-08 03:55:01 AM Link | Quote
You'll have to experiment and see for yourself! Just remember to patch the ROM as described to get rid of the checksum infinite loop.

I tried to force the "Stuck drunk Lakitu cam cam from far away" values for all the camera settings, and it shows that none of these values are used for the normal camera movement, all of these are used for special events.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 232/621
EXP: 1135505
For next: 21614

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 08-09-08 05:38:00 AM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Even if we did manage to use the side view camera, the problem would be that it would rotate with Mario. So the effect would work when Mario walks in parallel to the 2d SMB level, but any deviation from a straight path would make the camera rotate and thus ruining the effect. Furthermore, when Mario would change direction (from "right" to "left" as seen in SMB) the camera would end up showing the other side of the level (mirrored) and Mario still going right.

To make a 2.5d level, the camera would need to stay perpendicular to the level, not to Mario. I guess that we're getting closer to find more details on how the lakitu cam works, and that we could eventually program such a camera setting, but for now it doesn't seem like a simple hack can achieve this.

I guess that we could try to restrict the cam from moving in one particular axis, and prevent it from rotating. It would be the simplest hack I can think to make it possible, but we're still not at the point where we know how these values are controlled.

It would be nice to find the x,y,z coords of the cam in RAM... With some patience and some cheat search function, it could be possible.




____________________
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 08-17-08 08:36:27 PM (last edited by messiaen at 08-17-08 08:01 PM) Link | Quote
There is another interesting list of "spawn" behaviors at 0xEBBA4 :

1300 3DB8 0100 0086 <--Produces Wing Cap
1300 3DD8 0200 0088 <-- Produces Metal Mario map
1300 3E1C 0300 00BE <-- Produces the cap which makes you pass through objects
1300 1F3C 0400 0074 <-- Produces a ridable Koopa Sheel (model not hard-coded)
1300 09A4 0500 0000 <-- Produces coin(s)
1300 0964 0600 0000 <-- Produces coin(s)
1300 0984 0700 00D4 <-- Produces coin(s)
1300 3FDC 0800 007A <-- Produces 1-up
1300 07F8 0900 00D4 <-- Same as 0x80C (Produces star on 100th coin) with Parameter 01 set to 01
1300 4010 0A00 017A <-- Produces moving 1-up
1300 07F8 0B00 027A
1300 07F8 0C00 037A
1300 07F8 0D00 047A
1300 07F8 0E00 057A
1300 07F8 6300 0000

And now begins a list of RAM pointers. Usually, these are related to the data block above it. In some cases, it is interesting to compare these adresses with the ones called by the behaviors scripts, because they are a indication of what object may be using them.

There is another MASSIVE list of Behavior pointers at 0xEC7E0. There are lot of repeated pointers, so most likely each one in the list is used by a specific object. However, I'm not sure if the behaviors which produce boss stars might be in there, because Koopa the Quick star is produced by behavior 0x3E64, and this isn't in the checksum area but inside his ASM as a ADD Immediate instruction.

Again, I'm mostly using Yoshiman's Spawn any object code to check on this behavior and Nemu's debugging features, so if anyone feels like working on this massive list go ahead and post the results.

Edit: Starting at 0xEC7E0 there are two behavior pointers lists:

0xEC7E0 - 0xED350: Format is [behavior - 4 bytes] [mode - 2 bytes] [parameter? - 2 bytes]
0xED35C - 0xED5E0: Format a bit different for the last 4 bytes. There are even warp behaviors in this one.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 233/621
EXP: 1135505
For next: 21614

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 08-18-08 02:17:39 AM (last edited by VL-Tone at 08-17-08 11:54 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 messiaen

There is another MASSIVE list of Behavior pointers at 0xEC7E0. There are lot of repeated pointers, so most likely each one in the list is used by a specific object. However, I'm not sure if the behaviors which produce boss stars might be in there, because Koopa the Quick star is produced by behavior 0x3E64, and this isn't in the checksum area but inside his ASM as a ADD Immediate instruction.

Again, I'm mostly using Yoshiman's Spawn any object code to check on this behavior and Nemu's debugging features, so if anyone feels like working on this massive list go ahead and post the results.

Edit: Starting at 0xEC7E0 there are two behavior pointers lists:

0xEC7E0 - 0xED350: Format is [behavior - 4 bytes] [mode - 2 bytes] [parameter? - 2 bytes]
0xED35C - 0xED5E0: Format a bit different for the last 4 bytes. There are even warp behaviors in this one.



I already know about this list since a long time, check in the first post of this thread:


At 0xEC7E0 is the list of 512 model ID/param/behavior pointer combos used by the 0x42 commands, and at 0xED358 is for the 0x43 commands. The 0x43 combo list acts as a patch list to the 0x42 combos. The 0x43 list contains 81 items, and each one of these contain a value that determines which item of the 0x42 list is patched. 0x43 commands can only access the first 256 combos of the patched list.


Toad's Tool 64 already reads and use this list, so don't spend time listing what's in there, you won't find any behaviors that are not found in TT64 or in the SM64behaviors doc. TT64 not only has text labels individual model IDs and behavior pointers, but also the model ID/param/behavior combos themselves found in these lists, as well as custom combinations made by 0x24 commands.

Edit:

Here's a short long explanation on how the 0xEC7E0 list is used by the game.

The 0x42 commands use 9-bits (one byte + 1 bit) to point to one of the item of the list. Each item in the list contains a model ID, a behavior pointer and the behavior parameters. This result in commands that are shorter than 0x24 commands. They did that only to save space. The problem is that it limits you to a list of preset combinations.

To complicate things, the 0x43 command uses the first 256 items of the same list (needing only one byte to refer to the item), but with some "patches" that are defined by a list found at 0xED358, a byte in each item in the latter list defines which item is patched.

It's a really messy scheme that complicates editing and that's why flatworld only uses 0x24 commands. TT64 would be much easier to use if the game only used 0x24 commands to place objects in levels. I actually thought about converting all the original level scripts so that they use only 0x24 commands, but my tests with Castle Grounds made the game crash randomly while playing, I'm not sure why, maybe I made a mistake somewhere.

There are some subtleties in the usage of the combos lists by the game that I never completely confirmed and verified. For example: 0x42 and 0x43 commands also contain their own two behavior parameter bytes, and as far as I know these get overridden by the ones found in the 0xEC7E0 (and 0xED358) list, but only if the two param bytes of the 0x42 or 0x43 commands are equal to 0x00. But I may be wrong to some extent. For example they could be overridden separately when either one is 0x00. Again, things like this made TT64 a complex beast.

Oh and another thing I just remembered: the combo number used in the 0x42 and 0x43 commands is offset by 32. That means that the first item in the 0xEC7E0 list would be referred by using combo number 32 (or 31), and that using numbers below 32 have some other (yet unknown) usage.




____________________
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 08-18-08 09:29:31 PM (last edited by messiaen at 08-19-08 05:10 PM) Link | Quote
Sorry, I forgot to check your first post again , but thanks for the explanation on 0x42/0x43 commands. The Castle Grounds is a hard level to deal with, because there are many ASM events which aren't triggered by the Level Script but by something else. Anyway, I don't think it's really worth to work much changing existing levels, as more flexibility can be obtained much easier from custom level scripts/geometry.

One thing I'm looking for is boss stars positions, maybe they could be in this checksum area (or it could be more complex than that). The star spawned by Koopa in Bob-omb uses the 0x3E64 behavior, and of its 0x0C calls, the one responsible for settings its position is 0x802F2614. Looking at the ASM, here's what I found:

802F261C: LUI T6, 0x8036
802F2620: LW T6, 0x1160 (T6) # *T6 = Pointer for RAM object
802F2624: LWC1 F4, 0x016C (T6) # F4 = C58FC000 / Z position from offset 0x16C [float registers]
802F2628: LWC1 F6, 0x00A8 (T6) # F6 = C5888000 / Z position 2 from 0xA8
802F262C: LWC1 F8, 0x0164 (T6) # F8 = 453D6000 / X position from 0x164
802F2630: LWC1 F10, 0x00A0 (T6) # F10 = 454F5000 / X position 2 from 0xA0

Before we move on, this is from Cellar Dweller's struct_object.txt:

/* 12 @ 0xa0 - 3x float position array */
/* 12 @ 0x164 - another 3x float position array copied from offset 0xa0 by behavior command 0x2d */

So, if I understand what's going on, 0x16C / 0xA8 and 0x164 / 0xA0 are respectively Z and X positions. One of the positions is the start position (probably copied from Koopa the Quick), while the other is the final destination of the star. Changing these values before they get loaded and you'll change where the star will be spawned.

The question I have is, these are 32-bit float values, but in the ROM they are probably stored 16-bit (ie, as in the 0x24 command). How to convert them back to 16-bit so we can search them on the ROM?

---

About camera coordinates, I think they are stored (3 floats) at 8034B8A8, 8034B8AC and 8034B8B0. The "double door" camera ASM uses a very simple function (80378800) which just repositions the camera.
yoshiman
Member
Level: 23


Posts: 88/95
EXP: 67008
For next: 715

Since: 12-21-07

From: London, England

Since last post: 13.2 years
Last activity: 12.9 years

Posted on 08-19-08 10:04:44 PM Link | Quote
For my camera on any object code I replaced the function call that normally updates the camera with my own function. For NTSC, NOP the function call at 0x80254318 and when the game starts the camera will be near the moat. Now you'll be able to modify the camera's position using the camera position variables which are floats:

0x8033C524
0x8033C528
0x8033C52C

The now disabled function normally copies the camera position from another set of variables to the ones above.

____________________
James S.

We English do things a little differently...Anyone for a cup of tea while we hack?!
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 234/621
EXP: 1135505
For next: 21614

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 08-19-08 11:35:43 PM (last edited by VL-Tone at 08-19-08 08:37 PM) Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Ok I got them! (the Koopa the Quick star coordinates in ROM).

You might want to read http://en.wikipedia.org/wiki/IEEE_754 which describes the standard floating point format that's used by the N64 R4300 CPU and many other CPUs. I didn't have to deal with 32-bits floats before (other fractions used in the SM64 ROM weren't actually floats), so I had to read the thing and I made myself a little 32-bit float ---> 16-bit signed integer converting function.

So:

X1: 0x453D6000 = 3030 = 0x0BD6
Z1: 0xC58FC000 = -4600 = 0xEE08

X2: 0x454F5000 = 3317 = 0x0CF5
Z2: 0xC5888000 = -4368 = 0xEEF0

Searching the ROM for 0x0BD6 lead me to find: 0B D6 11 94 EE 08 at 0xED868. This is indeed the X, Y and Z position of the star spawned by Koopa the Quick!

I didn't find the second coordinates triplet tough. Maybe they're calculated by adding to the start position.

There seem to be a lot of interesting stuff around 0xED868... Just before this address, at 0xED864, there's: 07 01 16 A0. You must know that 0x07 is the standard bank number for level banks. Looking at offset 0x0116A0 in the Bob-omb battlefield bank (found at 0xEF0E37 - 0xF025F9 in an extended ROM), more precisely at 0xF024D7, you can find a list of of x,y and z 16-bit coordinates, each preceded by a 4 bytes incremented number:


0000 F754 00CC 1590

0001 F81C 00CC 16BC
0002 02F8 02FD 1630
0003 0780 0300 13B0
0004 07D0 0300 1108
0005 04D8 0300 0E10
...



The list goes up to 0x0023 and ends with 0xFFFF.

It turns out that this list coordinates describe the path taken by Koopa the Quick for his race in Bob-Omb Battlefield!



The big red dots represent the path coordinates.

I didn't check the rest of the stuff around the 0xED868 area yet, there seem to be other coordinates and pointers to (0x07) level banks. The only thing is that it's hard to know which data segment is loaded in bank 0x07 when the pointer is invoked. I was lucky to find the right bank, though I guess it's normal to find the Koopa the Quick path near its star position.

Originally posted by yoshiman
For my camera on any object code I replaced the function call that normally updates the camera with my own function. For NTSC, NOP the function call at 0x80254318 and when the game starts the camera will be near the moat. Now you'll be able to modify the camera's position using the camera position variables which are floats:

0x8033C524
0x8033C528
0x8033C52C

The now disabled function normally copies the camera position from another set of variables to the ones above.



Could you easily lock the camera on an axis using a Gameshark code?


____________________
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 08-20-08 01:45:35 AM (last edited by messiaen at 08-20-08 01:25 AM) Link | Quote
Very nice . Using NEMU, it won't be hard to find which banks these pointers refers to, I will try to make a list of them tomorrow. Some of these pointers are collision data for some behaviors which are shared by solid objects (ie, the bridge in Bob-omb, in which the parameters determine which collision to use).

Edit: Beggining on 0xED6CC, there is a list of X,Y,Z coords with the same incremented number pattern. Other lists starts at 0xED718 and 0xED7B8. Many other coordinate lists such as those can be found in level banks, so I think there may be some REALLY interesting stuff there. Perhaps some of the more complex camera movements, such as Lakitu, use this kind of format.
yoshiman
Member
Level: 23


Posts: 89/95
EXP: 67008
For next: 715

Since: 12-21-07

From: London, England

Since last post: 13.2 years
Last activity: 12.9 years

Posted on 08-20-08 01:11:07 PM Link | Quote
You could patch the function that updates the camera so that only two (e.g. X and Y) values are updated if that's what you mean. That can be done with Gameshark codes, otherwise it means writing a new camera update function.

____________________
James S.

We English do things a little differently...Anyone for a cup of tea while we hack?!
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 08-20-08 04:20:27 PM (last edited by messiaen at 08-20-08 07:24 PM) Link | Quote
The camera trick would be very interesting . I haven't worked yet on the banks list for that pointers, but I found the coordinates of the Snowman's Bottom trajectory in Cool Cool Mountain. They start at 0xDF6909 :

Snowball's Bottom Trajectory:

0000 09C5 0A66 FC31
0001 09E5 0A00 FCE0
0002 0A06 08FC FE0C [...]

It goes to up to 1D, then ends with FFFF.

They are inside the 0x07 Bank of Cool Cool Mountain, so 0xDF6909 - 0xDE0361 (bank start) = 0x165A8 (relative offset). In this case, the pointer isn't in one of those pointer tables, but in the ASM as an ADDIU instruction:

0xABC9C [ROM] / 802F0C9C [RAM]: LUI A0, 0x0701 # A0 = 07010000
0xABCA0 [ROM] / 802F0CA0 [RAM]: JAL 0x80277F50
0xABCA4 [ROM] / 802F0CA4 [RAM]: ADDIU A0, A0, 0x65A8 # A0 = 070165A8

VL-Tone, you should make a teaser video of a rainbow road where you have to race against the Koopa .

Edit: At 0xE03965, begins the Racin Penguin coordinates from Cool Cool Mountain. Again the pointer is hardcoded, so here are the addresses to change if you want to move/expand it:

0xCCA6C [ROM] / 80311A6C [RAM]: LUI A0, 0x0702
0xCCA70 [ROM] / 80311A70 [RAM]: JAL 0x80277F50
0xCCA74 [ROM] / 80311A74 [RAM]: ADDIU A0, A0, 0x3604

Here is what I've found about other pointers in the checksum area:

ROM | Pointer | Level | Description
--------+-------------+------------------+-------------------------------------
0xED874 | 07 00 E2 58 | Tiny-Huge Island | Koopa The Quick "Rematch" trajectory *
0xEDA0C | 07 01 13 F0 | Bob-omb | Tilting Bridge collision (Param 2 = 3)

*The next word at 0xED878 is probably the X,Y,Z star coordinates from this Koopa.
Deleted User
Collection of nobodies
Posted on 12-30-08 08:07:07 AM Link | Quote
Hi guy... excume I want to modify the text PRESS START... how I can modify that text?
Stevoisiak
Member
Level: 38


Posts: 197/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-30-08 04:43:55 PM Link | Quote
Originally posted by sennar2006
Hi guy... excume I want to modify the text PRESS START... how I can modify that text?

Wrong place. Did you not see the big forum up top titled "Toad's Tool 64 help / how-to"?
Doogie1012
Member
Level: 15


Posts: 21/35
EXP: 14542
For next: 1842

Since: 10-21-08


Since last post: 11.6 years
Last activity: 9.2 years

Posted on 01-01-09 01:52:12 AM Link | Quote
Originally posted by Stevoisiak
Originally posted by sennar2006
Hi guy... excume I want to modify the text PRESS START... how I can modify that text?

Wrong place. Did you not see the big forum up top titled "Toad's Tool 64 help / how-to"?


Actually correct place, he was told that the PRESS START text is found in the checksum area of Mario 64 by messiaen, so what he should be doing is getting a hex editor, searching for PRESS and then editing the text PRESS START, then getting a N64 CRC Tool.

N64 CRC Tool

Just use that after editing the PRESS START text and it should work. Good luck.
Rachel Mae

Creature of Chaos
Level: 141


Posts: 1499/5929
EXP: 33575045
For next: 544969

Since: 07-03-07

Pronouns: she/her
From: Foxglen

Since last post: 11 days
Last activity: 2 days

Posted on 01-01-09 03:43:03 AM (last edited by BMF54123 at 01-01-09 12:43 AM) Link | Quote
Originally posted by Stevoisiak
Wrong place. Did you not see the big forum up top titled "Toad's Tool 64 help / how-to"?
You can stop backseat moderating any time now, thanks.

____________________

Sintendo
Random nobody
Level: 8


Posts: 1/9
EXP: 1882
For next: 305

Since: 01-01-09


Since last post: 6.4 years
Last activity: 2.1 years

Posted on 01-01-09 08:43:49 AM Link | Quote
How did you determine which area of the ROM is checksum protected? I'm currently trying to hack a different N64 game and this would surely come in handy.
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 192


Posts: 1906/12211
EXP: 99235694
For next: 637877

Since: 07-03-07

From: 52-2-88-7

Since last post: 7.4 years
Last activity: 7.3 years

Posted on 01-02-09 04:25:23 AM Link | Quote

Time/Date

01-01-09 10:25:23pm

Posts

1906

Days Here

548

Level

62
Metal_Man88
Local Moderator
Dunno, but, just as a note, any more attempts to restart the 'backseat moderating' discussion in this topic will be deleted.

Carry on.

____________________
Original Layout © Tobias Kelmandia
Deleted User
Collection of nobodies
Posted on 01-02-09 11:51:49 AM Link | Quote
Hi I have changed PRESS START .. now I have another problem.. how I change the first title SUPER MARIO 64?
Doogie1012
Member
Level: 15


Posts: 23/35
EXP: 14542
For next: 1842

Since: 10-21-08


Since last post: 11.6 years
Last activity: 9.2 years

Posted on 01-02-09 01:51:42 PM Link | Quote
Originally posted by sennar2006
Hi I have changed PRESS START .. now I have another problem.. how I change the first title SUPER MARIO 64?


If my memory serves correctly I think that it is actually a model, changing this would probably require the upcoming Model Importer thats being worked on by VL-Tone.

But again, I'm not entirely sure, so I'm sure someone else can confirm this.
BigBrain
Member
Level: 22


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

Since: 09-10-08


Since last post: 8.8 years
Last activity: 6.7 years

Posted on 01-02-09 02:15:55 PM (last edited by BigBrain at 01-02-09 11:24 AM) Link | Quote
Originally posted by Doogie1012
Originally posted by sennar2006
Hi I have changed PRESS START .. now I have another problem.. how I change the first title SUPER MARIO 64?


If my memory serves correctly I think that it is actually a model, changing this would probably require the upcoming Model Importer thats being worked on by VL-Tone.

But again, I'm not entirely sure, so I'm sure someone else can confirm this.

I saw some videos on Youtube where the SM64 logo was used inside of a testing level and it was three dimensional, so it is a model.
However, it can be easily (well, easy is relative ;D) replaced by a textured quad, which is done in the team hack IIRC.

EDIT: There we have it: http://de.youtube.com/watch?v=uAhgoXmBzUY
Deleted User
Collection of nobodies
Posted on 01-02-09 02:50:29 PM Link | Quote
no guys my problem is different.. I would change the text SUPER MARIO 64 in SUPER MARIO WP, so I must change 64 in WP. I must not use the text in a level. what I do?
Pages: 1 2 3 Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - Stuff inside the checksum protected area (Title Screen, etc.) 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, 8 query cache hits.
Query execution time:  0.087761 seconds
Script execution time:  0.045005 seconds
Total render time:  0.132766 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 300 - 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 232 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 94 - Warning: unescaped & or unknown entity "&page"
line 149 column 128 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 163 - 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 99 - 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 99 - Warning: unescaped & or unknown entity "&postid"
line 207 column 73 - Warning: <style> isn't allowed in <td> elements
line 207 column 9 - Info: <td> previously mentioned
line 207 column 137 - Warning: missing </div>
line 219 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 221 column 9 - Warning: missing <tr>
line 239 column 13 - Warning: missing <tr>
line 240 column 99 - Warning: unescaped & or unknown entity "&postid"
line 272 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 274 column 9 - Warning: missing <tr>
line 292 column 13 - Warning: missing <tr>
line 293 column 99 - Warning: unescaped & or unknown entity "&postid"
line 295 column 73 - Warning: <style> isn't allowed in <td> elements
line 295 column 9 - Info: <td> previously mentioned
line 295 column 1511 - Warning: missing </font> before <blockquote>
line 295 column 1590 - Warning: inserting implicit <font>
line 295 column 1590 - Warning: missing </font> before <hr>
line 296 column 1 - Warning: inserting implicit <font>
line 296 column 1 - Warning: missing </font> before <hr>
line 304 column 1 - Warning: inserting implicit <font>
line 304 column 1 - Warning: missing </font> before <blockquote>
line 307 column 2686 - Warning: inserting implicit <font>
line 307 column 2686 - Warning: missing </font> before <hr>
line 307 column 2690 - Warning: inserting implicit <font>
line 307 column 2690 - Warning: missing </font> before <hr>
line 308 column 1 - Warning: inserting implicit <font>
line 295 column 137 - Warning: missing </div>
line 329 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 331 column 9 - Warning: missing <tr>
line 349 column 13 - Warning: missing <tr>
line 350 column 99 - Warning: unescaped & or unknown entity "&postid"
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 99 - Warning: unescaped & or unknown entity "&postid"
line 411 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 413 column 9 - Warning: missing <tr>
line 431 column 13 - Warning: missing <tr>
line 432 column 99 - Warning: unescaped & or unknown entity "&postid"
line 434 column 73 - Warning: <style> isn't allowed in <td> elements
line 434 column 9 - Info: <td> previously mentioned
line 434 column 1511 - Warning: missing </font> before <blockquote>
line 452 column 3001 - Warning: inserting implicit <font>
line 452 column 3001 - Warning: missing </font> before <hr>
line 459 column 1 - Warning: inserting implicit <font>
line 459 column 1 - Warning: missing </font> before <blockquote>
line 470 column 3911 - Warning: inserting implicit <font>
line 470 column 3911 - Warning: missing </font> before <hr>
line 470 column 3976 - Warning: inserting implicit <font>
line 470 column 3976 - Warning: missing </font> before <hr>
line 477 column 1 - Warning: inserting implicit <font>
line 434 column 137 - Warning: missing </div>
line 482 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 484 column 9 - Warning: missing <tr>
line 502 column 13 - Warning: missing <tr>
line 503 column 99 - Warning: unescaped & or unknown entity "&postid"
line 510 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 512 column 9 - Warning: missing <tr>
line 530 column 13 - Warning: missing <tr>
line 531 column 99 - Warning: unescaped & or unknown entity "&postid"
line 538 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 540 column 9 - Warning: missing <tr>
line 558 column 13 - Warning: missing <tr>
line 559 column 99 - Warning: unescaped & or unknown entity "&postid"
line 595 column 15 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 596 column 25 - Warning: missing <tr>
line 603 column 33 - Warning: missing <tr>
line 604 column 119 - Warning: unescaped & or unknown entity "&postid"
line 608 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 610 column 9 - Warning: missing <tr>
line 628 column 13 - Warning: missing <tr>
line 629 column 99 - Warning: unescaped & or unknown entity "&postid"
line 635 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 637 column 9 - Warning: missing <tr>
line 655 column 13 - Warning: missing <tr>
line 656 column 99 - Warning: unescaped & or unknown entity "&postid"
line 663 column 762 - Warning: unescaped & or unknown entity "&m"
line 663 column 767 - Warning: unescaped & or unknown entity "&f"
line 668 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 670 column 9 - Warning: missing <tr>
line 688 column 13 - Warning: missing <tr>
line 689 column 99 - Warning: unescaped & or unknown entity "&postid"
line 691 column 238 - Warning: discarding unexpected </td>
line 691 column 435 - Warning: missing </font> before <blockquote>
line 691 column 500 - Warning: inserting implicit <font>
line 691 column 500 - Warning: missing </font> before <hr>
line 691 column 567 - Warning: inserting implicit <font>
line 691 column 567 - Warning: missing </font> before <hr>
line 691 column 672 - Warning: inserting implicit <font>
line 695 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 697 column 9 - Warning: missing <tr>
line 715 column 13 - Warning: missing <tr>
line 716 column 99 - Warning: unescaped & or unknown entity "&postid"
line 721 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 723 column 9 - Warning: missing <tr>
line 741 column 13 - Warning: missing <tr>
line 742 column 99 - Warning: unescaped & or unknown entity "&postid"
line 744 column 73 - Warning: <style> isn't allowed in <td> elements
line 744 column 9 - Info: <td> previously mentioned
line 744 column 960 - Error: <z> is not recognized!
line 744 column 960 - Warning: discarding unexpected <z>
line 744 column 982 - Warning: discarding unexpected </z>
line 744 column 1008 - Error: <z> is not recognized!
line 744 column 1008 - Warning: discarding unexpected <z>
line 744 column 1015 - Warning: discarding unexpected </z>
line 744 column 1045 - Error: <z> is not recognized!
line 744 column 1045 - Warning: discarding unexpected <z>
line 744 column 1051 - Warning: discarding unexpected </z>
line 744 column 1077 - Error: <z> is not recognized!
line 744 column 1077 - Warning: discarding unexpected <z>
line 744 column 1082 - Warning: discarding unexpected </z>
line 748 column 15 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 749 column 25 - Warning: missing <tr>
line 756 column 33 - Warning: missing <tr>
line 757 column 119 - Warning: unescaped & or unknown entity "&postid"
line 761 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 763 column 9 - Warning: missing <tr>
line 781 column 13 - Warning: missing <tr>
line 782 column 99 - Warning: unescaped & or unknown entity "&postid"
line 791 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 793 column 9 - Warning: missing <tr>
line 811 column 13 - Warning: missing <tr>
line 812 column 99 - Warning: unescaped & or unknown entity "&postid"
line 825 column 15 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 826 column 25 - Warning: missing <tr>
line 833 column 33 - Warning: missing <tr>
line 834 column 119 - Warning: unescaped & or unknown entity "&postid"
line 838 column 17 - Warning: missing <tr>
line 838 column 17 - Warning: discarding unexpected <table>
line 841 column 35 - Warning: missing <tr>
line 841 column 94 - Warning: unescaped & or unknown entity "&page"
line 841 column 128 - Warning: unescaped & or unknown entity "&page"
line 841 column 50 - Warning: missing </font> before </td>
line 841 column 163 - Warning: missing </font> before </table>
line 843 column 35 - Warning: missing <tr>
line 843 column 50 - Warning: missing </font> before </td>
line 844 column 37 - Warning: unescaped & or unknown entity "&id"
line 843 column 232 - Warning: missing </font> before </table>
line 845 column 17 - Warning: discarding unexpected </textarea>
line 845 column 28 - Warning: discarding unexpected </form>
line 845 column 35 - Warning: discarding unexpected </embed>
line 845 column 43 - Warning: discarding unexpected </noembed>
line 845 column 53 - Warning: discarding unexpected </noscript>
line 845 column 64 - Warning: discarding unexpected </noembed>
line 845 column 74 - Warning: discarding unexpected </embed>
line 845 column 82 - Warning: discarding unexpected </table>
line 845 column 90 - Warning: discarding unexpected </table>
line 847 column 9 - Warning: missing </font> before <table>
line 859 column 25 - Warning: discarding unexpected </font>
line 868 column 57 - Warning: discarding unexpected </font>
line 846 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 245 - 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 111 - Warning: <img> lacks "alt" attribute
line 161 column 161 - Warning: <img> lacks "alt" attribute
line 172 column 15 - 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 112 - Warning: <img> lacks "alt" attribute
line 189 column 162 - Warning: <img> lacks "alt" attribute
line 200 column 15 - Warning: <img> lacks "alt" attribute
line 207 column 693 - Warning: <img> lacks "alt" attribute
line 216 column 2851 - Warning: <img> lacks "alt" attribute
line 216 column 3010 - Warning: <img> lacks "alt" attribute
line 224 column 22 - Warning: <img> lacks "alt" attribute
line 224 column 63 - Warning: <img> lacks "alt" attribute
line 224 column 111 - Warning: <img> lacks "alt" attribute
line 224 column 161 - Warning: <img> lacks "alt" attribute
line 235 column 15 - Warning: <img> lacks "alt" attribute
line 277 column 22 - Warning: <img> lacks "alt" attribute
line 277 column 63 - Warning: <img> lacks "alt" attribute
line 277 column 112 - Warning: <img> lacks "alt" attribute
line 277 column 162 - Warning: <img> lacks "alt" attribute
line 288 column 15 - Warning: <img> lacks "alt" attribute
line 295 column 693 - Warning: <img> lacks "alt" attribute
line 326 column 5601 - Warning: <img> lacks "alt" attribute
line 326 column 5760 - Warning: <img> lacks "alt" attribute
line 334 column 22 - Warning: <img> lacks "alt" attribute
line 334 column 63 - Warning: <img> lacks "alt" attribute
line 334 column 111 - Warning: <img> lacks "alt" attribute
line 334 column 161 - Warning: <img> lacks "alt" attribute
line 345 column 15 - Warning: <img> lacks "alt" attribute
line 352 column 120 - Warning: <img> proprietary attribute value "absmiddle"
line 352 column 120 - 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 161 - Warning: <img> lacks "alt" attribute
line 393 column 15 - Warning: <img> lacks "alt" attribute
line 416 column 22 - Warning: <img> lacks "alt" attribute
line 416 column 63 - Warning: <img> lacks "alt" attribute
line 416 column 112 - Warning: <img> lacks "alt" attribute
line 416 column 162 - Warning: <img> lacks "alt" attribute
line 427 column 15 - Warning: <img> lacks "alt" attribute
line 434 column 693 - Warning: <img> lacks "alt" attribute
line 464 column 3379 - Warning: <img> lacks "alt" attribute
line 479 column 4644 - Warning: <img> lacks "alt" attribute
line 479 column 4803 - Warning: <img> lacks "alt" attribute
line 487 column 22 - Warning: <img> lacks "alt" attribute
line 487 column 63 - Warning: <img> lacks "alt" attribute
line 487 column 111 - Warning: <img> lacks "alt" attribute
line 487 column 161 - Warning: <img> lacks "alt" attribute
line 498 column 15 - Warning: <img> lacks "alt" attribute
line 505 column 83 - Warning: <img> proprietary attribute value "absmiddle"
line 505 column 83 - Warning: <img> lacks "alt" attribute
line 515 column 22 - Warning: <img> lacks "alt" attribute
line 515 column 63 - Warning: <img> lacks "alt" attribute
line 515 column 112 - Warning: <img> lacks "alt" attribute
line 515 column 161 - Warning: <img> lacks "alt" attribute
line 526 column 15 - Warning: <img> lacks "alt" attribute
line 543 column 22 - Warning: <img> lacks "alt" attribute
line 543 column 63 - Warning: <img> lacks "alt" attribute
line 543 column 111 - Warning: <img> lacks "alt" attribute
line 543 column 161 - Warning: <img> lacks "alt" attribute
line 554 column 15 - Warning: <img> lacks "alt" attribute
line 561 column 116 - Warning: <img> proprietary attribute value "absmiddle"
line 561 column 116 - Warning: <img> lacks "alt" attribute
line 577 column 1058 - Warning: <img> proprietary attribute value "absmiddle"
line 577 column 1058 - Warning: <img> lacks "alt" attribute
line 599 column 37 - Warning: <img> lacks "alt" attribute
line 613 column 22 - Warning: <img> lacks "alt" attribute
line 613 column 63 - Warning: <img> lacks "alt" attribute
line 613 column 112 - Warning: <img> lacks "alt" attribute
line 613 column 162 - Warning: <img> lacks "alt" attribute
line 624 column 15 - Warning: <img> lacks "alt" attribute
line 640 column 22 - Warning: <img> lacks "alt" attribute
line 640 column 63 - Warning: <img> lacks "alt" attribute
line 640 column 112 - Warning: <img> lacks "alt" attribute
line 640 column 162 - Warning: <img> lacks "alt" attribute
line 651 column 15 - Warning: <img> lacks "alt" attribute
line 672 column 11 - Warning: <img> lacks "alt" attribute
line 673 column 23 - Warning: <img> lacks "alt" attribute
line 673 column 64 - Warning: <img> lacks "alt" attribute
line 673 column 113 - Warning: <img> lacks "alt" attribute
line 673 column 163 - Warning: <img> lacks "alt" attribute
line 674 column 11 - Warning: <img> lacks "alt" attribute
line 684 column 15 - Warning: <img> lacks "alt" attribute
line 691 column 848 - Warning: <img> lacks "alt" attribute
line 692 column 922 - Warning: <img> lacks "alt" attribute
line 700 column 21 - Warning: <img> lacks "alt" attribute
line 700 column 62 - Warning: <img> lacks "alt" attribute
line 700 column 111 - Warning: <img> lacks "alt" attribute
line 700 column 161 - Warning: <img> lacks "alt" attribute
line 711 column 15 - Warning: <img> lacks "alt" attribute
line 725 column 17 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 17 - Warning: <img> lacks "alt" attribute
line 725 column 60 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 60 - Warning: <img> lacks "alt" attribute
line 725 column 103 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 103 - Warning: <img> lacks "alt" attribute
line 725 column 146 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 146 - Warning: <img> lacks "alt" attribute
line 725 column 189 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 189 - Warning: <img> lacks "alt" attribute
line 725 column 232 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 232 - Warning: <img> lacks "alt" attribute
line 725 column 275 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 275 - Warning: <img> lacks "alt" attribute
line 725 column 318 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 318 - Warning: <img> lacks "alt" attribute
line 725 column 361 - Warning: <img> proprietary attribute value "absmiddle"
line 725 column 361 - Warning: <img> lacks "alt" attribute
line 726 column 23 - Warning: <img> lacks "alt" attribute
line 726 column 64 - Warning: <img> lacks "alt" attribute
line 726 column 113 - Warning: <img> lacks "alt" attribute
line 726 column 163 - Warning: <img> lacks "alt" attribute
line 727 column 11 - Warning: <img> lacks "alt" attribute
line 737 column 15 - Warning: <img> lacks "alt" attribute
line 744 column 1515 - Warning: <img> lacks "alt" attribute
line 744 column 1725 - Warning: <img> lacks "alt" attribute
line 744 column 1813 - Warning: <img> lacks "alt" attribute
line 744 column 2057 - Warning: <img> lacks "alt" attribute
line 746 column 2465 - Warning: <img> lacks "alt" attribute
line 746 column 2654 - Warning: <img> lacks "alt" attribute
line 752 column 37 - Warning: <img> lacks "alt" attribute
line 759 column 149 - Warning: <img> proprietary attribute value "absmiddle"
line 759 column 149 - Warning: <img> lacks "alt" attribute
line 766 column 22 - Warning: <img> lacks "alt" attribute
line 766 column 63 - Warning: <img> lacks "alt" attribute
line 766 column 112 - Warning: <img> lacks "alt" attribute
line 766 column 162 - Warning: <img> lacks "alt" attribute
line 777 column 15 - Warning: <img> lacks "alt" attribute
line 784 column 182 - Warning: <img> proprietary attribute value "absmiddle"
line 784 column 182 - Warning: <img> lacks "alt" attribute
line 796 column 22 - Warning: <img> lacks "alt" attribute
line 796 column 63 - Warning: <img> lacks "alt" attribute
line 796 column 112 - Warning: <img> lacks "alt" attribute
line 796 column 162 - Warning: <img> lacks "alt" attribute
line 807 column 15 - Warning: <img> lacks "alt" attribute
line 814 column 261 - Warning: <img> proprietary attribute value "absmiddle"
line 814 column 261 - Warning: <img> lacks "alt" attribute
line 829 column 37 - Warning: <img> lacks "alt" attribute
line 844 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 844 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 844 column 245 - Warning: <img> proprietary attribute value "absmiddle"
line 853 column 25 - Warning: <img> lacks "alt" attribute
line 858 column 267 - Warning: <img> lacks "alt" attribute
line 295 column 1511 - Warning: trimming empty <font>
line 307 column 2686 - Warning: trimming empty <font>
line 452 column 3001 - Warning: trimming empty <font>
line 691 column 435 - Warning: trimming empty <font>
line 838 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 207 column 157 - Warning: <table> proprietary attribute "height"
line 207 column 222 - Warning: <td> proprietary attribute "background"
line 207 column 318 - Warning: <td> proprietary attribute "background"
line 207 column 408 - Warning: <table> proprietary attribute "height"
line 207 column 488 - Warning: <td> proprietary attribute "background"
line 207 column 1443 - Warning: <td> proprietary attribute "background"
line 240 column 27 - Warning: <nobr> is not approved by W3C
line 293 column 27 - Warning: <nobr> is not approved by W3C
line 295 column 157 - Warning: <table> proprietary attribute "height"
line 295 column 222 - Warning: <td> proprietary attribute "background"
line 295 column 318 - Warning: <td> proprietary attribute "background"
line 295 column 408 - Warning: <table> proprietary attribute "height"
line 295 column 488 - Warning: <td> proprietary attribute "background"
line 295 column 1443 - Warning: <td> proprietary attribute "background"
line 350 column 27 - Warning: <nobr> is not approved by W3C
line 398 column 27 - Warning: <nobr> is not approved by W3C
line 432 column 27 - Warning: <nobr> is not approved by W3C
line 434 column 157 - Warning: <table> proprietary attribute "height"
line 434 column 222 - Warning: <td> proprietary attribute "background"
line 434 column 318 - Warning: <td> proprietary attribute "background"
line 434 column 408 - Warning: <table> proprietary attribute "height"
line 434 column 488 - Warning: <td> proprietary attribute "background"
line 434 column 1443 - Warning: <td> proprietary attribute "background"
line 503 column 27 - Warning: <nobr> is not approved by W3C
line 531 column 27 - Warning: <nobr> is not approved by W3C
line 559 column 27 - Warning: <nobr> is not approved by W3C
line 604 column 47 - Warning: <nobr> is not approved by W3C
line 629 column 27 - Warning: <nobr> is not approved by W3C
line 656 column 27 - Warning: <nobr> is not approved by W3C
line 689 column 27 - Warning: <nobr> is not approved by W3C
line 691 column 73 - Warning: <table> proprietary attribute "height"
line 691 column 73 - Warning: <table> proprietary attribute "background"
line 691 column 348 - Warning: <td> proprietary attribute "background"
line 716 column 27 - Warning: <nobr> is not approved by W3C
line 742 column 27 - Warning: <nobr> is not approved by W3C
line 744 column 1594 - Warning: <td> proprietary attribute "background"
line 744 column 1894 - Warning: <td> proprietary attribute "background"
line 744 column 2147 - Warning: <table> proprietary attribute "height"
line 746 column 2546 - Warning: <td> proprietary attribute "background"
line 757 column 47 - Warning: <nobr> is not approved by W3C
line 782 column 27 - Warning: <nobr> is not approved by W3C
line 812 column 27 - Warning: <nobr> is not approved by W3C
line 834 column 47 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 373 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