Register - Login
Views: 99392555
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 10:10:45 AM
Jul - Game Development/Mod Projects - Super Mario Bros. 2 disassembly New poll - New thread - New reply
Next newer thread
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-05-18 05:31:35 PM Link | Quote
I've been working on this for a while.

Now you can turn it back into a ROM.

Still a lot of work to go. If you have any suggestions on new labels or names for things, please let me know; I can update the main disassembly file.

____________________
(Lv 242 with 222894713 EXP)
lion

Level: 19


Posts: 49/84
EXP: 30310
For next: 5467

Since: 01-25-18

Pronouns: he/they
From: Portugal

Since last post: 1.2 years
Last activity: 1.2 years

Posted on 03-05-18 06:50:00 PM Link | Quote
Lookin' good!

____________________
Part-time "SMW dad", hmu if you need guidance in getting into SMW ASM hacking.
Xenesis

Roy Koopa
Actually a Doctor
Level: 101


Posts: 2460/2732
EXP: 10478036
For next: 239639

Since: 07-28-07

Pronouns: She/Her
From: Orange Star's Retirement Villa

Since last post: 13 hours
Last activity: 8 hours

Posted on 03-06-18 10:40:31 AM Link | Quote
Truly amazing - a complete disasm is a hell of a lot of work.
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-07-18 05:04:36 PM Link | Quote
It is not much. Most of the work is done automatically by just playing the game, using FCEUX to make a code and data log (to know what is what), and then poking some values here and there with some formatting.

It is a far cry from, say, the Mario 1 or Mario 3 disassemblies, which are for the most part well-documented and commentated. This is the beginning of that.

____________________
(Lv 242 with 222951345 EXP)
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-08-18 07:39:23 AM Link | Quote
More updates today. The assembly is now byte-for-byte identical to the original game, by using .db xx xx xx for instructions that are not supported. (The correct instruction is added as a comment in the disassembly.) You can turn on the other behavior of using proper zero-page accesses by removing a flag from build.bat, namely -d_COMPATIBILITY_.

Also, the disassembly is now capable of building a byte-for-byte identical version of PRG1 / REV-A, too.
It is on a separate branch for now while I continue to work on the main pre-split assembly. Revision A mostly fixes a bug involving the Fryguy boss, where under certain conditions you can softlock the game. (There is also another small fix with PAL consoles that displayed only a blank screen for the bonus game.)

More updates to come...

____________________
(Lv 242 with 222968707 EXP)
Keitaro

Fire Snake
LOVELY ARRANGEMENT. VOLCANO BAKEMEAT
Level: 70


Posts: 1191/1191
EXP: 2898945
For next: 116866

Since: 09-09-08

From: California

Since last post: 4.1 years
Last activity: 3.8 years

Posted on 03-13-18 01:50:46 AM Link | Quote
wait, is it really that easy to make a disassembly of an NES ROM?? This...is good to know.
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-13-18 01:54:02 AM Link | Quote
well, "easy", if you count having spent a few months on it i guess

____________________
(Lv 242 with 223103512 EXP)
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: 5240/5390
EXP: 29051660
For next: 283345

Since: 07-22-07

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

Since last post: 333 days
Last activity: 333 days

Posted on 03-15-18 11:46:59 PM Link | Quote
Post #5240 · Thu, 2018 Mar 15, 20:46:59
The hard part is going through the result, figuring out what everything does, and assigning names and nice macros to make it readable and editable. The output from just going through code/data logging won't have any names.

____________________
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-16-18 03:50:38 PM (last edited by Xkeeper at 03-16-18 03:51:34 PM) Link | Quote
Yeah, and labeling everything, finding all the places where "$8137" should actually be a label and not a value, that sort of thing. Otherwise you run into a ton of issues if you rearrange code.

Currently you still can in a lot of places, but you should be able to just build most of it without too much trouble. I'm slowly fixing the places that falls apart, but some of it will require a lot of work to figure out a good format for, like the music (which has a main pointer, then a bunch of relative one-byte addresses to the data within)

Anyway, I'm working on making a debug menu that can jump to different parts of the game, to help testing (so we stop having to make a bunch of savestates everywhere )

Right now it's still very much a work in progress. The menu will load and show text, but you can't actually do anything. I'm still trying to figure out how it should work under the hood and what variables are safe to overwrite, since you can call this from anywhere... even though you can't really go back afterwards



Most of the code for this right now lives in this file on the "debug" branch, but in true to how I want to do this you can still build this version with the debug components optional. When it's closer to being done I'll probably merge it into the main branch.

____________________
(Lv 242 with 223205764 EXP)
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: 5241/5390
EXP: 29051660
For next: 283345

Since: 07-22-07

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

Since last post: 333 days
Last activity: 333 days

Posted on 03-16-18 04:16:02 PM Link | Quote
Post #5241 · Fri, 2018 Mar 16, 13:16:02
I recently implemented a similar menu in Pokemon Crystal. It's a lot of work but the way I ended up designing it is:


  • Each item has:

    • A type

    • A pointer to text

    • A pointer to a RAM address

    • A pointer to an "activate" method (called when you press A)

    • A pointer to an "adjust" method (called when you press left/right)

    • A pointer to a "draw" method (called whenever the item is drawn)


    Any of the pointers can be null to use a suitable default.

  • Types are:


    • Text only

    • n-byte variable displayed as decimal (n=1 to 4)

    • n-byte variable displayed as hex

    • 1-byte variable displayed as Pokemon ID and name

    • etc for items, moves...




The default "adjust" method for all types except "text only" increments/decrements the variable pointed to (if it's not null). The default "draw" method draws the text followed by the variable. The default "activate" method does nothing. Left/Right call the adjust method with -1/+1 as parameter, or -16/+16 if Select is held. Start does nothing, B exits the menu.

It's complex, and it's tedious to adjust large values (something I should fix), but it makes nested menus really simple, and macros help with defining items:

DebugMenu_Warp:
ld hl, .menuItems
jp DebugMenu_Main

.menuItems:
debug_menu_hex_item 1, .textBank, wMapGroup, .doWarp
debug_menu_hex_item 1, .textMap, wMapNumber, .doWarp
debug_menu_hex_item 1, .textWarp, wWarpNumber, .doWarp
debug_menu_end

.textBank:
db "BANK@"
.textMap:
db "MAP @"
.textWarp:
db "WARP@"

.doWarp:
ld de, SFX_WARP_TO
call PlaySFX
ld a, -1
ld [wDefaultSpawnpoint], a
ld a, MAPSETUP_WARP
ld [hMapEntryMethod], a
ld a, 1
ld [wDebugMenuForceClose],a
call LoadMapStatus
scf
ccf ; return carry=0 from activate method to close the menu
ret


____________________
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-16-18 05:06:29 PM Link | Quote
I was planning on doing something similar, but not quite exactly the same. The current option would be a number, which would index into a list of pointers to the main "run the menu code", and those would handle their own button presses. Basically:


- Blink cursor
- Handle up/down to move
- JSR PointersToOptionCode[MenuOption]


PointersToOptionCode:
- Option1
- Option2
- Option3
...


Option1:
- Handle left/right to change value
- Handle displaying update to values
- Do something if you push A or w/e

Not quite as complex, but I don't think this needs to be for now; worst case I create a new submenu in the same style.

____________________
(Lv 242 with 223207267 EXP)
Xkeeper

Level: 263


Posts: 23358/25343
EXP: 296722067
For next: 2238386

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 03-16-18 05:11:59 PM Link | Quote
Also I should mention, I made a video showing how the music engine reads its data:



Kind of neat! Still plenty to go on making my own music, though.

____________________
(Lv 242 with 223207376 EXP)
Next newer thread
Jul - Game Development/Mod Projects - Super Mario Bros. 2 disassembly New poll - New thread - New reply


Rusted Logic

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

30 database queries.
Query execution time:  0.084939 seconds
Script execution time:  0.028846 seconds
Total render time:  0.113785 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 301 - 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 210 - 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 74 - Warning: <style> isn't allowed in <td> elements
line 179 column 9 - Info: <td> previously mentioned
line 186 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 188 column 9 - Warning: missing <tr>
line 206 column 13 - Warning: missing <tr>
line 207 column 102 - Warning: unescaped & or unknown entity "&postid"
line 212 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 214 column 9 - Warning: missing <tr>
line 232 column 13 - Warning: missing <tr>
line 233 column 102 - Warning: unescaped & or unknown entity "&postid"
line 238 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 240 column 9 - Warning: missing <tr>
line 258 column 13 - Warning: missing <tr>
line 259 column 102 - Warning: unescaped & or unknown entity "&postid"
line 261 column 74 - Warning: <style> isn't allowed in <td> elements
line 261 column 9 - Info: <td> previously mentioned
line 266 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 268 column 9 - Warning: missing <tr>
line 286 column 13 - Warning: missing <tr>
line 287 column 102 - Warning: unescaped & or unknown entity "&postid"
line 289 column 74 - Warning: <style> isn't allowed in <td> elements
line 289 column 9 - Info: <td> previously mentioned
line 297 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 299 column 9 - Warning: missing <tr>
line 317 column 13 - Warning: missing <tr>
line 318 column 102 - Warning: unescaped & or unknown entity "&postid"
line 323 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 325 column 9 - Warning: missing <tr>
line 343 column 13 - Warning: missing <tr>
line 344 column 102 - Warning: unescaped & or unknown entity "&postid"
line 346 column 74 - Warning: <style> isn't allowed in <td> elements
line 346 column 9 - Info: <td> previously mentioned
line 349 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 351 column 9 - Warning: missing <tr>
line 369 column 13 - Warning: missing <tr>
line 370 column 102 - Warning: unescaped & or unknown entity "&postid"
line 372 column 4658 - Warning: replacing unexpected input with </input>
line 372 column 4972 - Warning: discarding unexpected </span>
line 375 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 377 column 9 - Warning: missing <tr>
line 395 column 13 - Warning: missing <tr>
line 396 column 102 - Warning: unescaped & or unknown entity "&postid"
line 398 column 74 - Warning: <style> isn't allowed in <td> elements
line 398 column 9 - Info: <td> previously mentioned
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 102 - Warning: unescaped & or unknown entity "&postid"
line 437 column 1 - Warning: missing <li>
line 439 column 1 - Warning: missing <li>
line 440 column 1 - Warning: missing <li>
line 441 column 1 - Warning: missing <li>
line 442 column 1 - Warning: missing <li>
line 443 column 1 - Warning: missing <li>
line 444 column 1 - Warning: missing <li>
line 445 column 1 - Warning: missing <li>
line 448 column 1 - Warning: missing <li>
line 449 column 1 - Warning: missing <li>
line 450 column 1 - Warning: missing <li>
line 451 column 1 - Warning: missing <li>
line 452 column 1 - Warning: missing <li>
line 453 column 1 - Warning: missing <li>
line 454 column 1 - Warning: missing <li>
line 455 column 1 - Warning: missing <li>
line 491 column 6577 - Warning: replacing unexpected input with </input>
line 491 column 6891 - Warning: discarding unexpected </span>
line 494 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 496 column 9 - Warning: missing <tr>
line 514 column 13 - Warning: missing <tr>
line 515 column 102 - Warning: unescaped & or unknown entity "&postid"
line 517 column 74 - Warning: <style> isn't allowed in <td> elements
line 517 column 9 - Info: <td> previously mentioned
line 540 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 542 column 9 - Warning: missing <tr>
line 560 column 13 - Warning: missing <tr>
line 561 column 102 - Warning: unescaped & or unknown entity "&postid"
line 563 column 74 - Warning: <style> isn't allowed in <td> elements
line 563 column 9 - Info: <td> previously mentioned
line 570 column 17 - Warning: missing <tr>
line 570 column 17 - Warning: discarding unexpected <table>
line 573 column 35 - Warning: missing <tr>
line 573 column 50 - Warning: missing </font> before </td>
line 573 column 91 - Warning: missing </font> before </table>
line 575 column 35 - Warning: missing <tr>
line 575 column 50 - Warning: missing </font> before </td>
line 576 column 37 - Warning: unescaped & or unknown entity "&id"
line 575 column 210 - Warning: missing </font> before </table>
line 577 column 17 - Warning: discarding unexpected </textarea>
line 577 column 28 - Warning: discarding unexpected </form>
line 577 column 35 - Warning: discarding unexpected </embed>
line 577 column 43 - Warning: discarding unexpected </noembed>
line 577 column 53 - Warning: discarding unexpected </noscript>
line 577 column 64 - Warning: discarding unexpected </noembed>
line 577 column 74 - Warning: discarding unexpected </embed>
line 577 column 82 - Warning: discarding unexpected </table>
line 577 column 90 - Warning: discarding unexpected </table>
line 579 column 9 - Warning: missing </font> before <table>
line 591 column 25 - Warning: discarding unexpected </font>
line 600 column 37 - Warning: discarding unexpected </font>
line 578 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 45 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 248 - Warning: <img> proprietary attribute value "absmiddle"
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 190 column 11 - Warning: <img> lacks "alt" attribute
line 191 column 22 - Warning: <img> lacks "alt" attribute
line 191 column 63 - Warning: <img> lacks "alt" attribute
line 191 column 111 - Warning: <img> lacks "alt" attribute
line 191 column 161 - Warning: <img> lacks "alt" attribute
line 192 column 11 - Warning: <img> lacks "alt" attribute
line 202 column 15 - Warning: <img> lacks "alt" attribute
line 216 column 11 - Warning: <img> lacks "alt" attribute
line 217 column 23 - Warning: <img> lacks "alt" attribute
line 217 column 64 - Warning: <img> lacks "alt" attribute
line 217 column 113 - Warning: <img> lacks "alt" attribute
line 217 column 163 - Warning: <img> lacks "alt" attribute
line 218 column 11 - Warning: <img> lacks "alt" attribute
line 228 column 15 - Warning: <img> lacks "alt" attribute
line 243 column 23 - Warning: <img> lacks "alt" attribute
line 243 column 64 - Warning: <img> lacks "alt" attribute
line 243 column 113 - Warning: <img> lacks "alt" attribute
line 243 column 163 - Warning: <img> lacks "alt" attribute
line 244 column 11 - Warning: <img> lacks "alt" attribute
line 254 column 15 - Warning: <img> lacks "alt" attribute
line 261 column 901 - Warning: <div> anchor "xklayout" already defined
line 271 column 23 - Warning: <img> lacks "alt" attribute
line 271 column 64 - Warning: <img> lacks "alt" attribute
line 271 column 113 - Warning: <img> lacks "alt" attribute
line 271 column 163 - Warning: <img> lacks "alt" attribute
line 272 column 11 - Warning: <img> lacks "alt" attribute
line 282 column 15 - Warning: <img> lacks "alt" attribute
line 289 column 901 - Warning: <div> anchor "xklayout" already defined
line 301 column 11 - Warning: <img> lacks "alt" attribute
line 302 column 22 - Warning: <img> lacks "alt" attribute
line 302 column 63 - Warning: <img> lacks "alt" attribute
line 302 column 112 - Warning: <img> lacks "alt" attribute
line 302 column 162 - Warning: <img> lacks "alt" attribute
line 313 column 15 - Warning: <img> lacks "alt" attribute
line 328 column 23 - Warning: <img> lacks "alt" attribute
line 328 column 64 - Warning: <img> lacks "alt" attribute
line 328 column 113 - Warning: <img> lacks "alt" attribute
line 328 column 163 - Warning: <img> lacks "alt" attribute
line 329 column 11 - Warning: <img> lacks "alt" attribute
line 339 column 15 - Warning: <img> lacks "alt" attribute
line 346 column 901 - Warning: <div> anchor "xklayout" already defined
line 354 column 23 - Warning: <img> lacks "alt" attribute
line 354 column 64 - Warning: <img> lacks "alt" attribute
line 354 column 113 - Warning: <img> lacks "alt" attribute
line 354 column 163 - Warning: <img> lacks "alt" attribute
line 365 column 15 - Warning: <img> lacks "alt" attribute
line 380 column 23 - Warning: <img> lacks "alt" attribute
line 380 column 64 - Warning: <img> lacks "alt" attribute
line 380 column 113 - Warning: <img> lacks "alt" attribute
line 380 column 163 - Warning: <img> lacks "alt" attribute
line 381 column 11 - Warning: <img> lacks "alt" attribute
line 391 column 15 - Warning: <img> lacks "alt" attribute
line 398 column 901 - Warning: <div> anchor "xklayout" already defined
line 402 column 1701 - Warning: <img> proprietary attribute value "absmiddle"
line 402 column 1701 - Warning: <img> lacks "alt" attribute
line 404 column 2082 - Warning: <img> proprietary attribute value "absmiddle"
line 404 column 2082 - Warning: <img> lacks "alt" attribute
line 406 column 2141 - Warning: <img> lacks "alt" attribute
line 416 column 23 - Warning: <img> lacks "alt" attribute
line 416 column 64 - Warning: <img> lacks "alt" attribute
line 416 column 113 - Warning: <img> lacks "alt" attribute
line 416 column 163 - Warning: <img> lacks "alt" attribute
line 427 column 15 - Warning: <img> lacks "alt" attribute
line 499 column 23 - Warning: <img> lacks "alt" attribute
line 499 column 64 - Warning: <img> lacks "alt" attribute
line 499 column 113 - Warning: <img> lacks "alt" attribute
line 499 column 163 - Warning: <img> lacks "alt" attribute
line 500 column 11 - Warning: <img> lacks "alt" attribute
line 510 column 15 - Warning: <img> lacks "alt" attribute
line 517 column 901 - Warning: <div> anchor "xklayout" already defined
line 545 column 23 - Warning: <img> lacks "alt" attribute
line 545 column 64 - Warning: <img> lacks "alt" attribute
line 545 column 113 - Warning: <img> lacks "alt" attribute
line 545 column 163 - Warning: <img> lacks "alt" attribute
line 546 column 11 - Warning: <img> lacks "alt" attribute
line 556 column 15 - Warning: <img> lacks "alt" attribute
line 563 column 901 - Warning: <div> anchor "xklayout" already defined
line 576 column 45 - Warning: <img> proprietary attribute value "absmiddle"
line 576 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 576 column 248 - Warning: <img> proprietary attribute value "absmiddle"
line 585 column 25 - Warning: <img> lacks "alt" attribute
line 590 column 267 - Warning: <img> lacks "alt" attribute
line 149 column 50 - Warning: trimming empty <font>
line 372 column 4725 - Warning: trimming empty <label>
line 491 column 6644 - Warning: trimming empty <label>
line 570 column 17 - Warning: trimming empty <tr>
line 573 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 207 column 27 - Warning: <nobr> is not approved by W3C
line 233 column 27 - Warning: <nobr> is not approved by W3C
line 259 column 27 - Warning: <nobr> is not approved by W3C
line 287 column 27 - Warning: <nobr> is not approved by W3C
line 318 column 27 - Warning: <nobr> is not approved by W3C
line 344 column 27 - Warning: <nobr> is not approved by W3C
line 370 column 27 - Warning: <nobr> is not approved by W3C
line 396 column 27 - Warning: <nobr> is not approved by W3C
line 432 column 27 - Warning: <nobr> is not approved by W3C
line 515 column 27 - Warning: <nobr> is not approved by W3C
line 561 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 227 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