Register - Login
Views: 99402385
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 06:00:12 PM
Jul - General Game/ROM Hacking - SimEarth graphic hacking (Or... at least trying to) New poll - New thread - New reply
Next newer thread | Next older thread
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9548/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 07-03-16 08:30:43 PM (last edited by Gabu at 07-03-16 09:13:29 PM) Link | Quote
Earlier last week I decided to poke into SimEarth with YY-CHR, because I had the idea to make a pretty simple romhack replacing the species with various types of Pokemon. I was greeted with a mess of a graphics table, and the only way I was able to make anything turn up completely clear was to look at the file in 1-bit mode, where I could find the character table.

I believe I heard somewhere that Maxis SNES games had some kind of weird encryption stuff going on, so it would appear. I did fiddle with some random graphics further down the file (merely by flipping selections vertically), and managed to get some funky, kinda reverse-color stuff going on. The intro screen's space, for instance, was a very light gray, info boxes in the info screens were red instead of green, and in map mode the land was blue, as well as some minor color changes in sprites.

This leads me to believe that SimEarth, at least, stores its graphics in layers? I really don't know, but all I want to do is put some goshdarn Zubats to replace the robot species because lol.

How would I even get started with this? Rip the entire table and then try to overlay different areas of the table in Photoshop until I find some kind of match and then repeat until I get a complete sprite?

EDIT: Not necessarily part of my problem, but I poked through the .SMC file in a hex editor and found a little nugget starting at 00021cb0 that I don't remember running into in all of my years with this game, which I've edited slightly for ease-of-reading and in a manner that it would otherwise probably be displayed in-game:

Dinosaurs are extinct!

Nemesis has occurred.
Nemesis is a planetary
life-crisis that
may have been caused
by a huge meteor im-
pact. Anyway, the dust
and/or water vapor has
blackened the planet's
skies and caused a
glacial period.

Given that in the debug menu, you can see all of the in-game messages, but for whatever reason some of them appear garbled and glitched, this could be an unused message that wasn't pointed to correctly within the game.

____________________
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9550/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 07-12-16 07:49:18 PM Link | Quote


Was noodling around with corrupting the game via YY-CHR to see if I could find where the sprites were, and at one point the game spat this at me. Good thing I took a picture because it was the only time that happened. But I recognized the order of the Japanese characters and other symbols directly corresponded with their order found in the game file itself, then appears to spit out tiles for sprites in their decrypted form.

So far all I've done was edit the file by drawing straight black/white lines in where I supposed these tiles were stored, immediately after the Japanese characters, but I've yet to find anything conclusive. Still, seems like a neat find.



____________________
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9551/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 07-16-16 10:09:01 PM (last edited by Gabu at 07-16-16 10:21:20 PM) Link | Quote
So on a whim I decided to look at SimAnt within YY-CHR, figuring that if it's all encrypted the same then I could find some kind of pattern within the two. I came up with two findings:

1.

WHY DID YOU LIE MOMMY?

I never played SimAnt, but this and a whole bunch of other graphics are stored as clear as day in here. Not sure if it's all of them, but I give it a good shot that it is.

2. Given this, I went back to SimEarth and noted that there are huge swaths of the file that contain a checkerboard pattern that is littered with various levels of "static", so to speak, which can be found within the default 4bpp SNES format. I'm figuring that my hypothesis is right, and that the graphics in this game are stored in layers that the game then stitches together. Not sure why, really, though I guess it may have to do with needing to have one sprite have different colors but not necessarily a different palette.

EDIT: Probably false, absolutely nothing changed that I could see when the checkerboards were flipped.

____________________
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9555/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 07-22-16 02:56:16 PM Link | Quote
So I kinda fold; is there any way to see how a SNES game reads and displays sprites? Because this encryption crap is just going to drag on forever if I keep brute forcing things.

____________________
divingkataetheweirdo

Bandit
TCRF Super Editor
Level: 57


Posts: 608/822
EXP: 1479780
For next: 6148

Since: 07-09-11


Since last post: 1.6 years
Last activity: 253 days

Posted on 07-23-16 06:59:43 PM (last edited by divingkataetheweirdo at 07-23-16 07:17:03 PM) Link | Quote
Originally posted by Gabu
So I kinda fold; is there any way to see how a SNES game reads and displays sprites? Because this encryption crap is just going to drag on forever if I keep brute forcing things.


https://emu-docs.org/Super%20NES/General/snesdoc.html

http://wiki.superfamicom.org/snes/show/Sprites

https://en.wikibooks.org/wiki/Super_NES_Programming/Animated_Sprites

Try these and use No$SNS along with these to see it loading stuff in real time. Also, try to figure out which compression SimEarth uses, probably an LZ-type compression. There's no easy way to see how SNES games read and display sprites besides trying to find lda, ldb, ldx or ldy instructions in the game. Alternatively, try digging through an SNES game to see if it has a bunch of uncompiled code hidden inside, be it plain as day or hidden in an archive format.

____________________
Joe
Common spammer
🍬
Level: 111


Posts: 3259/3392
EXP: 14489658
For next: 378702

Since: 08-02-07

From: Pororoca

Since last post: 3 days
Last activity: 1 hour

Posted on 07-24-16 01:16:01 AM Link | Quote
I had a decent explanation of the compression format (it's LZSS with a small header attached), but my internet connection died and I'm not going to type the whole thing on my phone.

Compressed graphics start at 0x60000 in the USA ROM ($0C:8000 in SNES memory).

I like MAME's debugger better than no$sns.

____________________
ちにゃあ。
Joe
Common spammer
🍬
Level: 111


Posts: 3260/3392
EXP: 14489658
For next: 378702

Since: 08-02-07

From: Pororoca

Since last post: 3 days
Last activity: 1 hour

Posted on 07-26-16 03:55:18 PM Link | Quote
Okay, internet's back on.

The graphics compression is LZSS with a four-byte header. All two-byte values are stored with the low byte first.

The header is two two-byte values: the length of the uncompressed data, and the length of the compressed data (not including the header). The decoder in the game ignores the compressed data length, so it may not be correct for all of the graphics.

Following the header is the actual LZSS-compressed graphics. In this variety of LZSS, the flags bytes are coded MSB first, with 0 to indicate a literal byte and 1 to indicate a run.

Runs in this variety of LZSS are two bytes (low byte first). The upper twelve bits are the offset from the end of the current decompressed data: 0 means start at the last byte in the buffer, 1 means the byte before last, and so on. The lower four bits are the run length minus 3: 0 means copy 3 bytes, 1 means copy 4 bytes, and so on.

Like all varieties of LZSS, runs may be longer than the remaining data in the buffer.


In order to replace the graphics, you'll have to either compress them to be no larger than the graphics they're replacing, or put them elsewhere in the ROM and replace the pointers that are used to load them.

____________________
ちにゃあ。
Joe
Common spammer
🍬
Level: 111


Posts: 3261/3392
EXP: 14489658
For next: 378702

Since: 08-02-07

From: Pororoca

Since last post: 3 days
Last activity: 1 hour

Posted on 08-01-16 05:00:44 PM Link | Quote
Do you like command-line programs? Sure you do, because this one can decompress all the graphics in SimEarth. Let me know if you need a 32-bit version because this one is 64-bit. It doesn't put the graphics back into the ROM yet because Real Lifeβ„’ is taking up all of my free time.

The source code is here in case you want to follow my progress and/or laugh at my ugly code. Don't expect frequent updates because being an adult sucks.

Fun fact, there are some minor graphical differences between the Japan and North America versions. (Aside from all of the text, I mean.) Also Tile Molester's default palette sucks.

____________________
ちにゃあ。
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9557/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 08-04-16 01:37:52 AM (last edited by Gabu at 08-04-16 02:27:43 AM) Link | Quote
I'm actually using YY-CHR, but same difference. You'd think that since they're graphics editors that the default palettes would be at least halfway decent. Β―\_(ツ)_/Β―

____________________
Joe
Common spammer
🍬
Level: 111


Posts: 3262/3392
EXP: 14489658
For next: 378702

Since: 08-02-07

From: Pororoca

Since last post: 3 days
Last activity: 1 hour

Posted on 08-28-16 05:49:45 PM Link | Quote
It's been a month (seriously?) and now, with little fanfare, here is the program to put graphics back in the game.

  • It doesn't compress anything yet. The ROM will get bigger if you edit lots of graphics.
  • It doesn't pad the resulting ROM to a reasonable size yet. You may have to manually add padding if it makes your emulator unhappy.
  • The original compressed graphics may be relocated to make room for your modified graphics. You should use a good patch format (not IPS) to avoid creating a patch that contains most of the original ROM.


Let me know if you find any bugs. I literally have no idea how to play this game, so I might have messed something up.

____________________
ちにゃあ。
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9574/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 11-05-16 09:15:50 PM Link | Quote
After literally forgetting about this project's existence for two months, I only just now used your compression tool to put some custom graphics back in the game (though from a USA ROM to a Japanese ROM). At first I didn't know if it worked, but then I found the apparent graphic I used versus what I thought I put in. Then I immediately erased the screen I printed to cover the whole spritesheet with this one graphic, just to see if it worked perfectly.



In short it did.

____________________
Joe
Common spammer
🍬
Level: 111


Posts: 3264/3392
EXP: 14489658
For next: 378702

Since: 08-02-07

From: Pororoca

Since last post: 3 days
Last activity: 1 hour

Posted on 11-06-16 08:28:38 AM Link | Quote
I'm glad to hear it works for you. If you want either of those last two features (compression, padding the ROM to a reasonable size) I can spend some time this weekend finishing it up.

Originally posted by Gabu
from a USA ROM to a Japanese ROM

I probably should mention that the graphics data isn't compatible between the USA and Japanese ROMs. You have to make some adjustments to use the graphics from one region in the other without corrupting anything.

____________________
ちにゃあ。
Gabu

Star Mario
Placeholder Ikachan until :effort: is found
Level: 172


Posts: 9576/9981
EXP: 67926901
For next: 175333

Since: 08-10-09

Pronouns: they/them, she/her
From: Santa Cruisin' USA

Since last post: 47 days
Last activity: 8 days

Posted on 11-08-16 03:31:26 AM (last edited by Gabu at 11-08-16 03:34:01 AM) Link | Quote
I might be wrong. I had decompressed the files three months ago and they'd been lingering pretty much ever since, so I wasn't exactly sure if they were from the .sfc or .smc ROMs, and didn't really bother to check.

Only reason I suspect this is the opening graphics that are supposed to display Imagineer had corrupted and appear to be trying to use FCI's splash screen (Imagineer was the publisher for the Japanese version, FCI for NTSC), but end up displaying some all-white cresant moon shape on the right.

____________________
Next newer thread | Next older thread
Jul - General Game/ROM Hacking - SimEarth graphic hacking (Or... at least trying to) New poll - New thread - New reply


Rusted Logic

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

28 database queries, 10 query cache hits.
Query execution time:  0.104027 seconds
Script execution time:  0.057906 seconds
Total render time:  0.161933 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
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 224 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 91 - 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 179 column 314 - Warning: missing </div>
line 202 column 2737 - Warning: discarding unexpected </div>
line 202 column 2743 - Warning: discarding unexpected </td>
line 205 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 207 column 9 - Warning: missing <tr>
line 225 column 13 - Warning: missing <tr>
line 226 column 102 - Warning: unescaped & or unknown entity "&postid"
line 228 column 314 - Warning: missing </div>
line 234 column 1382 - Warning: discarding unexpected </div>
line 234 column 1388 - Warning: discarding unexpected </td>
line 237 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 239 column 9 - Warning: missing <tr>
line 257 column 13 - Warning: missing <tr>
line 258 column 102 - Warning: unescaped & or unknown entity "&postid"
line 260 column 314 - Warning: missing </div>
line 270 column 1751 - Warning: discarding unexpected </div>
line 270 column 1757 - Warning: discarding unexpected </td>
line 273 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 275 column 9 - Warning: missing <tr>
line 293 column 13 - Warning: missing <tr>
line 294 column 102 - Warning: unescaped & or unknown entity "&postid"
line 296 column 314 - Warning: missing </div>
line 296 column 800 - Warning: discarding unexpected </div>
line 296 column 806 - Warning: discarding unexpected </td>
line 299 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 301 column 9 - Warning: missing <tr>
line 319 column 13 - Warning: missing <tr>
line 320 column 102 - Warning: unescaped & or unknown entity "&postid"
line 333 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 335 column 9 - Warning: missing <tr>
line 353 column 13 - Warning: missing <tr>
line 354 column 102 - Warning: unescaped & or unknown entity "&postid"
line 356 column 74 - Warning: <style> isn't allowed in <td> elements
line 356 column 9 - Info: <td> previously mentioned
line 363 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 365 column 9 - Warning: missing <tr>
line 383 column 13 - Warning: missing <tr>
line 384 column 102 - Warning: unescaped & or unknown entity "&postid"
line 386 column 74 - Warning: <style> isn't allowed in <td> elements
line 386 column 9 - Info: <td> previously mentioned
line 402 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 404 column 9 - Warning: missing <tr>
line 422 column 13 - Warning: missing <tr>
line 423 column 102 - Warning: unescaped & or unknown entity "&postid"
line 425 column 74 - Warning: <style> isn't allowed in <td> elements
line 425 column 9 - Info: <td> previously mentioned
line 432 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 434 column 9 - Warning: missing <tr>
line 452 column 13 - Warning: missing <tr>
line 453 column 102 - Warning: unescaped & or unknown entity "&postid"
line 455 column 314 - Warning: missing </div>
line 455 column 787 - Warning: discarding unexpected </div>
line 455 column 793 - Warning: discarding unexpected </td>
line 458 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 460 column 9 - Warning: missing <tr>
line 478 column 13 - Warning: missing <tr>
line 479 column 102 - Warning: unescaped & or unknown entity "&postid"
line 481 column 74 - Warning: <style> isn't allowed in <td> elements
line 481 column 9 - Info: <td> previously mentioned
line 488 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 490 column 9 - Warning: missing <tr>
line 508 column 13 - Warning: missing <tr>
line 509 column 102 - Warning: unescaped & or unknown entity "&postid"
line 511 column 314 - Warning: missing </div>
line 515 column 1187 - Warning: discarding unexpected </div>
line 515 column 1193 - Warning: discarding unexpected </td>
line 518 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 520 column 9 - Warning: missing <tr>
line 538 column 13 - Warning: missing <tr>
line 539 column 102 - Warning: unescaped & or unknown entity "&postid"
line 541 column 74 - Warning: <style> isn't allowed in <td> elements
line 541 column 9 - Info: <td> previously mentioned
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 102 - Warning: unescaped & or unknown entity "&postid"
line 570 column 314 - Warning: missing </div>
line 572 column 1138 - Warning: discarding unexpected </div>
line 572 column 1144 - Warning: discarding unexpected </td>
line 575 column 17 - Warning: missing <tr>
line 575 column 17 - Warning: discarding unexpected <table>
line 578 column 35 - Warning: missing <tr>
line 578 column 50 - Warning: missing </font> before </td>
line 578 column 91 - Warning: missing </font> before </table>
line 580 column 35 - Warning: missing <tr>
line 580 column 50 - Warning: missing </font> before </td>
line 581 column 37 - Warning: unescaped & or unknown entity "&id"
line 580 column 224 - Warning: missing </font> before </table>
line 582 column 17 - Warning: discarding unexpected </textarea>
line 582 column 28 - Warning: discarding unexpected </form>
line 582 column 35 - Warning: discarding unexpected </embed>
line 582 column 43 - Warning: discarding unexpected </noembed>
line 582 column 53 - Warning: discarding unexpected </noscript>
line 582 column 64 - Warning: discarding unexpected </noembed>
line 582 column 74 - Warning: discarding unexpected </embed>
line 582 column 82 - Warning: discarding unexpected </table>
line 582 column 90 - Warning: discarding unexpected </table>
line 584 column 9 - Warning: missing </font> before <table>
line 596 column 25 - Warning: discarding unexpected </font>
line 605 column 58 - Warning: discarding unexpected </font>
line 583 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 160 column 11 - Warning: <img> lacks "alt" attribute
line 161 column 23 - Warning: <img> lacks "alt" attribute
line 161 column 64 - Warning: <img> lacks "alt" attribute
line 161 column 113 - Warning: <img> lacks "alt" attribute
line 161 column 163 - Warning: <img> lacks "alt" attribute
line 162 column 11 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 202 column 2600 - Warning: <img> lacks "alt" attribute
line 209 column 11 - Warning: <img> lacks "alt" attribute
line 210 column 23 - Warning: <img> lacks "alt" attribute
line 210 column 64 - Warning: <img> lacks "alt" attribute
line 210 column 113 - Warning: <img> lacks "alt" attribute
line 210 column 163 - Warning: <img> lacks "alt" attribute
line 211 column 11 - Warning: <img> lacks "alt" attribute
line 221 column 15 - Warning: <img> lacks "alt" attribute
line 228 column 408 - Warning: <img> lacks "alt" attribute
line 234 column 1245 - Warning: <img> lacks "alt" attribute
line 241 column 11 - Warning: <img> lacks "alt" attribute
line 242 column 23 - Warning: <img> lacks "alt" attribute
line 242 column 64 - Warning: <img> lacks "alt" attribute
line 242 column 113 - Warning: <img> lacks "alt" attribute
line 242 column 163 - Warning: <img> lacks "alt" attribute
line 243 column 11 - Warning: <img> lacks "alt" attribute
line 253 column 15 - Warning: <img> lacks "alt" attribute
line 262 column 603 - Warning: <img> lacks "alt" attribute
line 270 column 1614 - Warning: <img> lacks "alt" attribute
line 277 column 11 - Warning: <img> lacks "alt" attribute
line 278 column 23 - Warning: <img> lacks "alt" attribute
line 278 column 64 - Warning: <img> lacks "alt" attribute
line 278 column 113 - Warning: <img> lacks "alt" attribute
line 278 column 163 - Warning: <img> lacks "alt" attribute
line 279 column 11 - Warning: <img> lacks "alt" attribute
line 289 column 15 - Warning: <img> lacks "alt" attribute
line 296 column 663 - Warning: <img> lacks "alt" attribute
line 303 column 11 - Warning: <img> lacks "alt" attribute
line 304 column 22 - Warning: <img> lacks "alt" attribute
line 304 column 63 - Warning: <img> lacks "alt" attribute
line 304 column 112 - Warning: <img> lacks "alt" attribute
line 304 column 161 - Warning: <img> lacks "alt" attribute
line 305 column 11 - Warning: <img> lacks "alt" attribute
line 315 column 15 - Warning: <img> lacks "alt" attribute
line 330 column 1037 - Warning: <img> lacks "alt" attribute
line 338 column 23 - Warning: <img> lacks "alt" attribute
line 338 column 64 - Warning: <img> lacks "alt" attribute
line 338 column 113 - Warning: <img> lacks "alt" attribute
line 338 column 163 - Warning: <img> lacks "alt" attribute
line 339 column 11 - Warning: <img> lacks "alt" attribute
line 349 column 15 - Warning: <img> lacks "alt" attribute
line 368 column 23 - Warning: <img> lacks "alt" attribute
line 368 column 64 - Warning: <img> lacks "alt" attribute
line 368 column 113 - Warning: <img> lacks "alt" attribute
line 368 column 163 - Warning: <img> lacks "alt" attribute
line 369 column 11 - Warning: <img> lacks "alt" attribute
line 379 column 15 - Warning: <img> lacks "alt" attribute
line 407 column 23 - Warning: <img> lacks "alt" attribute
line 407 column 64 - Warning: <img> lacks "alt" attribute
line 407 column 113 - Warning: <img> lacks "alt" attribute
line 407 column 163 - Warning: <img> lacks "alt" attribute
line 408 column 11 - Warning: <img> lacks "alt" attribute
line 418 column 15 - Warning: <img> lacks "alt" attribute
line 436 column 11 - Warning: <img> lacks "alt" attribute
line 437 column 23 - Warning: <img> lacks "alt" attribute
line 437 column 64 - Warning: <img> lacks "alt" attribute
line 437 column 113 - Warning: <img> lacks "alt" attribute
line 437 column 163 - Warning: <img> lacks "alt" attribute
line 438 column 11 - Warning: <img> lacks "alt" attribute
line 448 column 15 - Warning: <img> lacks "alt" attribute
line 455 column 650 - Warning: <img> lacks "alt" attribute
line 463 column 23 - Warning: <img> lacks "alt" attribute
line 463 column 64 - Warning: <img> lacks "alt" attribute
line 463 column 113 - Warning: <img> lacks "alt" attribute
line 463 column 163 - Warning: <img> lacks "alt" attribute
line 464 column 11 - Warning: <img> lacks "alt" attribute
line 474 column 15 - Warning: <img> lacks "alt" attribute
line 492 column 11 - Warning: <img> lacks "alt" attribute
line 493 column 23 - Warning: <img> lacks "alt" attribute
line 493 column 64 - Warning: <img> lacks "alt" attribute
line 493 column 113 - Warning: <img> lacks "alt" attribute
line 493 column 163 - Warning: <img> lacks "alt" attribute
line 494 column 11 - Warning: <img> lacks "alt" attribute
line 504 column 15 - Warning: <img> lacks "alt" attribute
line 513 column 871 - Warning: <img> lacks "alt" attribute
line 515 column 1050 - Warning: <img> lacks "alt" attribute
line 523 column 23 - Warning: <img> lacks "alt" attribute
line 523 column 64 - Warning: <img> lacks "alt" attribute
line 523 column 113 - Warning: <img> lacks "alt" attribute
line 523 column 163 - Warning: <img> lacks "alt" attribute
line 524 column 11 - Warning: <img> lacks "alt" attribute
line 534 column 15 - Warning: <img> lacks "alt" attribute
line 551 column 11 - Warning: <img> lacks "alt" attribute
line 552 column 23 - Warning: <img> lacks "alt" attribute
line 552 column 64 - Warning: <img> lacks "alt" attribute
line 552 column 113 - Warning: <img> lacks "alt" attribute
line 552 column 163 - Warning: <img> lacks "alt" attribute
line 553 column 11 - Warning: <img> lacks "alt" attribute
line 563 column 15 - Warning: <img> lacks "alt" attribute
line 572 column 1001 - Warning: <img> lacks "alt" attribute
line 581 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 581 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 581 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 590 column 25 - Warning: <img> lacks "alt" attribute
line 595 column 267 - Warning: <img> lacks "alt" attribute
line 149 column 50 - Warning: trimming empty <font>
line 575 column 17 - Warning: trimming empty <tr>
line 578 column 50 - Warning: trimming empty <font>
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 179 column 74 - Warning: <table> proprietary attribute "height"
line 226 column 27 - Warning: <nobr> is not approved by W3C
line 228 column 74 - Warning: <table> proprietary attribute "height"
line 258 column 27 - Warning: <nobr> is not approved by W3C
line 260 column 74 - Warning: <table> proprietary attribute "height"
line 294 column 27 - Warning: <nobr> is not approved by W3C
line 296 column 74 - Warning: <table> proprietary attribute "height"
line 320 column 27 - Warning: <nobr> is not approved by W3C
line 354 column 27 - Warning: <nobr> is not approved by W3C
line 384 column 27 - Warning: <nobr> is not approved by W3C
line 423 column 27 - Warning: <nobr> is not approved by W3C
line 453 column 27 - Warning: <nobr> is not approved by W3C
line 455 column 74 - Warning: <table> proprietary attribute "height"
line 479 column 27 - Warning: <nobr> is not approved by W3C
line 509 column 27 - Warning: <nobr> is not approved by W3C
line 511 column 74 - Warning: <table> proprietary attribute "height"
line 539 column 27 - Warning: <nobr> is not approved by W3C
line 568 column 27 - Warning: <nobr> is not approved by W3C
line 570 column 74 - Warning: <table> proprietary attribute "height"
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 249 warnings and 0 errors!


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

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

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

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

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