Register - Login
Views: 99396484
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 01:13:53 PM
Jul - Posts by Hectamatatortron
Pages: 1 2 3 4 5 6 7 8 9 10 11 12
Hectamatatortron
Member
Level: 35


Posts: 122/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-23-09 03:13:41 PM, in DS debugging/reverse engineering/whatever you call it Link
It's using the loaded data differently based on whether or not it is the string "0DMB".

If the tileset index is 0x70, then you just need to follow the code using F7 and summarize what's happening to yourself as you go.

First you want to make sure that breakpoint is the one you want.

Change R02 to other tileset values when it breaks there and see if the tileset used in the level changes as a result.

Also, ARM isn't as scary as it looks (I was afraid of it too back when I learned Thumb). It should be easy to do something like


int r0, r1, r2 /*etc.*/;



And then just do things like


r0 += r1; //add r0, r0, r1



to dump the routine. GBATEK can help with understanding the opcodes, as can watching them be executed (which is where most of my assembly knowledge came from - watching instructions being executed when stepping through code in VBA-SDL-H's console window).

____________________
Hectamatatortron
Member
Level: 35


Posts: 123/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-23-09 06:17:33 PM, in DS debugging/reverse engineering/whatever you call it (last edited by Hectamatatortron at 03-23-09 06:13 PM) Link
bx means branch exchange. It's an absolute branch with a register argument (the b instruction is a relative branch that takes an immediate argument, not a register) that is capable of switching between ARM/Thumb mode based on bit 0 of the target address.

bx lr (r14 is called "lr", which means Link Return. bl means "branch long" and works like "b" does, but with a larger range; when an address is bl'd to, lr is updated with the address to return from the subroutine being called by the bl) is commonly used for returning from subroutines.

Also, strh stores a halfword, so in your case, it was storing 0x0008, not 0x08. ldr loads a word (0xXXXXXXXX).

It looks like you got everything commented correctly.

Also, the correct way to say that something is at a specific address is to use the .org directive.


ldr   r1      =020CACBCh      @The GNU ARM assembler uses @ for comments.

@The above line loads 0x020CACBC into register 1 in the fashion "ldr r1, [pc (pc is r15), #0x(immediate offset)]"
strh r0, [r1] @Stores lower 16 bits of r0 at the address held by r1
bx r14 @Return

.org 0x020BB970
ldr r1, =0208B168h @Should know how this works by now
mov r0, r4 @r4 is a local variable, probably one placed here by a mov r4, r0 instruction near the
@beginning of the routine, which means that it was one of the arguments of the current function being executed
ldr r2, [r1] @r2 is set equal to the 32 bits at the address held by r1
add r1, r4, 400h @r1 = r4 + 0x400, as you've noticed


I recommend improving your whitespacing of assembly code.

Edit: I've just confirmed that setting a breakpoint on reads of a ROM address is indeed possible with No$GBA if you follow the documentation I've quoted from GBATEK (written by the same person No$GBA was written by).

Set a break on writes to 0x040001A8 and use No$GBA's conditional breakpoint feature to do it something like this:

[040001A8]!!, r(some register number; you may have to try r0 through r2) == 0xB7aaaaaa

Where aaaaaa is the upper 24 bits of the address you want to watch.

After you get a hit, setting a break on reads of 0x04100010 and continuing until that breakpoint is hit will show you the data at or around your address being loaded serially (4 bytes at a time, usually in groups of 0x200 bytes).

____________________
Hectamatatortron
Member
Level: 35


Posts: 124/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-24-09 02:01:30 AM, in DS debugging/reverse engineering/whatever you call it (last edited by Hectamatatortron at 03-23-09 11:07 PM) Link

ldr r0,[r0,r2,lsl 2h]

r0 = [r0 + (r2 << 2)]


ldr r1,[r13,4h]

r1 = [sp (aka r13; sp means "stack pointer") + 4]

This means (since it's a stack offset) that it's loading a variable from the parent function's scope that was pushed or more likely (as the former makes no sense), a local variable that there was no room for in the register list that was pushed into extra stack space also allocated at the beginning of the function, usually by way of

add sp, #-0x8
str (some register), [sp]
str (the register later loaded into r1 in your example), [sp, #0x4]

Functions that do that will have

add sp, #0x8 (or whatever the number was depending on the amount of extra space needed)

before the

ldmia/pop sp!, {rlist} (sp is implied for pop instructions)

instructions that occur before the bx lr that functions end with. These functions will probably also use lots of other registers, which means intensive calculation and/or many arguments for that sub routine.

____________________
Hectamatatortron
Member
Level: 35


Posts: 125/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-24-09 02:23:17 PM, in DS debugging/reverse engineering/whatever you call it Link
Yes, that format is generally used for accessing arrays of data that have 4 byte entries.

Another common occurrence is:

add r0, r0, r1, lsl #0x2

Where r0 is the base address of some array and r1 is the index to access it by.

For some reason it's more common even though it could have included the load operation that is sure to follow by simply using the ldr instruction.

____________________
Hectamatatortron
Member
Level: 35


Posts: 126/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-25-09 05:59:01 PM, in DS debugging/reverse engineering/whatever you call it Link
Did I mention that if a mirror address is used for the accessing instruction that the break won't hit?

Oh, wait...yes, I did.

That's probably your problem. It could take a while to try all the mirrors. Maybe try backtracing from the read until you get to the write? That could take a while too, but you've got to do one or the other, it seems.

Pick your poison.

____________________
Hectamatatortron
Member
Level: 35


Posts: 127/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-25-09 10:39:58 PM, in DS debugging/reverse engineering/whatever you call it (last edited by Hectamatatortron at 03-25-09 07:42 PM) Link
I did say that was "probably" your problem.

Try the other way (backtracing).

Unless I have my hands on it, I won't know how to fuck with it to get what I want.

That's what you have to do sometimes. Just keep picking at things remotely relevant until you either think of something you wish you had thought of earlier or find a hint.

Edit: Try word aligned addresses (address & 0xFFFFFFFC); I was trying to emphasize before that word accesses of halfwords and similar situations are the leading cause of grief when it comes to the incapacity No$GBA has of breaking on mirrors, which is caused by the same problem (the access address has to match precisely).

____________________
Hectamatatortron
Member
Level: 35


Posts: 128/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-30-09 01:16:25 AM, in Nightmare 2.0 (last edited by Hectamatatortron at 01-16-10 08:54 PM) Link
Here it is - version 20100116.

Apparently the original Nightmare was released on ACMLM's board.

That's cool, because as far as I can tell, this forum contains many members who have gone through board I and II, as well as the various other JULs (there were others, right? I think there was like 3 domains?).

So to release Nightmare 2.0 here seems fitting, don't you think?

Here, I'll quote the post I made at the other place I released it:


IMPORTANT EDIT:

As of 2009/03/28/18:27, this application can parse all the component types that the original Nightmare can.

Because this application is compatible with FEditor Adv, avid FE hackers may want to consider switching from Nightmare to Nightmare 2.0...NOW.

~~~~~

I decided to go ahead and release what I have.

It has support for checksum validation and ID string validation.

It has the ability to use base pointers instead of just using base addresses and takes advantage of this to expand data.

Also, the doc is minimal (actually, you could say I haven't started it yet, despite there being some content in the doc folder), so you'll have to look at the source code if you want to learn how to use those new features and can't understand the example below (or you can bug me on AIM/MSN).

The coolest part is that it tells you the exact address you're editing down to the first bit of the data next to each editing control.

That alone, plus the fact that it's multi platform should get you to start using this now and then. ;D

There are screen shots here, but they're all outdated.

Examples of old modules updated to use the new features are in the doc folder.

Sweet, neh?

Enjoy!

Oh, and by the way...this and FEditor Adv (there's a thread for FEditor around this forum somewhere!) are both released under the GPL v3.

So, seriously, like I said - enjoy.

And serve me eternally out of sheer gratitude

Edit: 20090330 now has support for expanding the data.

____________________
Hectamatatortron
Member
Level: 35


Posts: 129/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-30-09 02:01:37 AM, in Nightmare 2.0 (last edited by Hectamatatortron at 03-29-09 11:02 PM) Link
Actually, it did take off.

Before me, the primary rohm acking done to Fire Emblem games was done using Nightmare and modules that FE hackers had made.

One particular FE hacker made most of them; she went by SpyroDi and now goes by Pukachi.

She's basically the mother of FE hacking and having never seen her at ACMLM, I have to wonder how she ran into Nightmare.

Either way, I ran into her shortly after she made most of the modules and got into hacking from that.

Pretty much all my genius in computer science stemmed from inspiration from her. Kinda...scary.

____________________
Hectamatatortron
Member
Level: 35


Posts: 130/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 03-31-09 02:16:16 AM, in Oracle of Ages Level Viewer Link
Heh, "Tina" and I were just reminiscing about the old GBA Zeldas just...yesterday, I believe.

This is uncanny.

And excellent, but mostly uncanny.

____________________
Hectamatatortron
Member
Level: 35


Posts: 131/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-01-09 02:58:14 AM, in Need Programers For Next Level Moding. Link
This is funny.

I'm an excellent programmer.

I'm an excellent Halo 3 player (I eat 50's for breakfast. ).

And yet, this project looks very unlikely to do well if they have people as apparently unacquainted with the very thing required to accomplish such a project running around searching for people to help.

____________________
Hectamatatortron
Member
Level: 35


Posts: 132/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-02-09 01:13:18 AM, in Nightmare 2.0 (last edited by Hectamatatortron at 04-05-09 01:47 PM) Link
20090401 (and this is NOT an April Fool's joke) has speed and accessibility improvements that hopefully anyone actually using this application will prefer.

Edit: 20090403 is better anyway. 20090401 may as well have been a joke. :/

Edit:


~ BUMPDATE ~

Massive improvements. Speed and accessibility improvements to be precise.

Edit: STRUCT support completed as well.

Here's an example of how to use it.

Remember Item Editor.nmm?

Go here:


Stat Bonuses Pointer

12
4
NEHU
NULL


And change it to this:


Stat Bonuses Pointer

12
4
STRUCT
Stat Bonuses Editor.nmm


Mega super happy fun time mode.

There is also a new picture in the screenshot post depicting this new feature.

Edit: As of 20090404, selecting a file in a directory when choosing a module to open will not select that file, but instead all of the files in the directory with ".nmm" as their extension. Excluding the actually selected file if it is not an .nmm.

Edit: Two new features in 20090405: "Allocate" and "Find", both for getting addresses of free space to point to in the open file.

Basically you can now have components in a module that are entire other modules. Nested goodness.

____________________
Hectamatatortron
Member
Level: 35


Posts: 133/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-02-09 03:17:00 PM, in DS debugging/reverse engineering/whatever you call it Link
What if he wants to expand them?

Surely there's some static reference (perhaps on a per-ROM basis) that can be followed to eventually locate the tables within the (what I imagine is an) accessible file system.

____________________
Hectamatatortron
Member
Level: 35


Posts: 134/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-02-09 09:56:02 PM, in DS debugging/reverse engineering/whatever you call it Link
How difficult it is (as well as whether code needs to be modified) should be viewed as trivial until efforts are made to practice theory.

At least, that's how I do things; if I let realism stand in the way of idealism I'd never get anything done.

If I pushed realism aside altogether I wouldn't get anything done, either, but...

____________________
Hectamatatortron
Member
Level: 35


Posts: 135/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-07-09 01:47:38 PM, in Working on a GB disassembler Link
Sounds great.

I probably won't use it much (actually, who knows...I DID hack VBA to help me debug Link's Awakening. If I ever have to do that again...)

All I can really suggest is looking at IDA Pro for ideas. Hopefully you have it >.>

It's quite an amazing disassembler.

____________________
Hectamatatortron
Member
Level: 35


Posts: 136/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-16-09 06:24:40 PM, in General rohm acking notes Link
Here's a permanent link to my personal repository of notes regarding hacking various games.

____________________
Hectamatatortron
Member
Level: 35


Posts: 137/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-19-09 04:14:09 PM, in General rohm acking notes Link
Nice to see that pile of crap doing what it's meant to.

Especially since I'm not sure how much I'll be adding to it anymore what with my loss of interest in...everything.

____________________
Hectamatatortron
Member
Level: 35


Posts: 138/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-19-09 05:50:15 PM, in IRC, 2:00 AM Link
Originally posted by Xkeeper
You have to do something pretty fucking stupid to get banned, really.

On the contrary.


Hector of Chad (10:09:23 PM): Yeah you strike me as the kind of person who doesn't do anything
Hector of Chad (10:09:33 PM): like how I would be if I didn't have random bursts of energy
Xkeeper NaN (9:08:49 PM): well
Xkeeper NaN (9:09:14 PM): the drama everywhere isn't hlepping
Hector of Chad (10:10:15 PM): HA
Hector of Chad (10:10:17 PM): hlepping
Xkeeper NaN (9:09:29 PM): helping you idiot
Hector of Chad (10:10:30 PM): no you said hlepping :3
Hector of Chad (10:10:35 PM): I'm gonna start using that word now
Xkeeper NaN (9:09:46 PM): ...
Hector of Chad (10:10:41 PM): did I say word?
Xkeeper NaN (9:09:49 PM): fuck you >=|
Hector of Chad (10:10:44 PM): I meant FALLACY
Xkeeper NaN (9:09:57 PM): i'm banning you now
Hector of Chad (10:10:58 PM): You can't ban me from AIM D:
Xkeeper NaN (9:10:28 PM): +block
Hector of Chad (10:11:21 PM): shit dude how did you even type two p's in helping
Xkeeper NaN (9:10:38 PM): >|
Hector of Chad (10:11:36 PM): XD
Xkeeper NaN (9:10:51 PM): actually my fingers are pretty beaten right now
Hector of Chad (10:11:48 PM): No they were right Xke...pper... is cute
Xkeeper NaN (9:11:07 PM): okay seriously I'm banning you now
Xkeeper NaN (9:11:11 PM): you were zeld on the board right
Hector of Chad (10:12:06 PM): You're like a little kid flailing around XD
Hector of Chad (10:12:16 PM): No I was HyperHacker
Xkeeper NaN (9:11:29 PM): hello zeld
Xkeeper NaN (9:11:43 PM): *201134» <@Tina> #159 Zeld (N) [Posts/59, last 9.5d ago] [Active 10.4h ago] [IP/24.167.79.85]
*201136» <+mistah_j> <script> should be disabled
*201136» <+DSMagnum> If you get a 360
*201138» <@laptuna> ~ban 159 YOU DIE NOW
*201139» <@Tina> 100 ok
Xkeeper NaN (9:11:47 PM): bye kthx.
Xkeeper NaN (9:11:50 PM): 8D
Hector of Chad (10:14:02 PM): FUCK
Hector of Chad (10:14:06 PM): I can't even see the board!
Hector of Chad (10:14:09 PM): 403
Xkeeper NaN (9:13:32 PM): ha ha ha ha ha ha (ha)

I hope HyperHacker doesn't run into this and see that I tried to scapegoat him >.>

____________________
Hectamatatortron
Member
Level: 35


Posts: 139/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-19-09 06:46:52 PM, in IRC, 2:00 AM (last edited by Hectamatatortron at 04-19-09 03:47 PM) Link
What? You said outright stupidity was necessary to get banned.

And yet all I was banned for was humorous observational comedy!

This shouldn't be a surprise, but I was cleaning my IM logs the other day. I'm proud to say they're up to par, for now.

____________________
Hectamatatortron
Member
Level: 35


Posts: 140/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-19-09 07:12:23 PM, in super nsmb editor Link
Originally posted by hydraphatphelinez
I was wondering where that Two'd image came from.

TWELVE-SIDED DIE'D!

IT'S OVER!

____________________
Hectamatatortron
Member
Level: 35


Posts: 141/232
EXP: 258005
For next: 21931

Since: 09-19-07


Since last post: 7.2 years
Last activity: 5.3 years

Posted on 04-21-09 02:43:06 AM, in IRC, 2:00 AM Link
Originally posted by Tyty
I remember the catgirl fad.

That was fun.

Fad?

You mean something that ends after a while?

NO IT'S NOT FAIR CAT GIRLS ARE ETERNAL



____________________
Pages: 1 2 3 4 5 6 7 8 9 10 11 12
Jul - Posts by Hectamatatortron


Rusted Logic

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

30 database queries, 47 query cache hits.
Query execution time:  0.080068 seconds
Script execution time:  0.028767 seconds
Total render time:  0.108835 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 147 column 143 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 95 - Warning: unescaped & or unknown entity "&page"
line 149 column 128 - Warning: unescaped & or unknown entity "&page"
line 149 column 161 - Warning: unescaped & or unknown entity "&page"
line 149 column 194 - Warning: unescaped & or unknown entity "&page"
line 149 column 227 - Warning: unescaped & or unknown entity "&page"
line 149 column 260 - Warning: unescaped & or unknown entity "&page"
line 149 column 295 - Warning: unescaped & or unknown entity "&page"
line 149 column 328 - Warning: unescaped & or unknown entity "&page"
line 149 column 361 - Warning: unescaped & or unknown entity "&page"
line 149 column 395 - Warning: unescaped & or unknown entity "&page"
line 149 column 430 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 467 - 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 198 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 200 column 9 - Warning: missing <tr>
line 218 column 13 - Warning: missing <tr>
line 255 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 257 column 9 - Warning: missing <tr>
line 275 column 13 - Warning: missing <tr>
line 301 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 303 column 9 - Warning: missing <tr>
line 321 column 13 - Warning: missing <tr>
line 335 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 337 column 9 - Warning: missing <tr>
line 355 column 13 - Warning: missing <tr>
line 367 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 369 column 9 - Warning: missing <tr>
line 387 column 13 - Warning: missing <tr>
line 401 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 403 column 9 - Warning: missing <tr>
line 421 column 13 - Warning: missing <tr>
line 454 column 1902 - Warning: unescaped & or unknown entity "&view"
line 454 column 1916 - Warning: unescaped & or unknown entity "&p"
line 470 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 472 column 9 - Warning: missing <tr>
line 490 column 13 - Warning: missing <tr>
line 506 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 508 column 9 - Warning: missing <tr>
line 526 column 13 - Warning: missing <tr>
line 536 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 538 column 9 - Warning: missing <tr>
line 556 column 13 - Warning: missing <tr>
line 568 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 570 column 9 - Warning: missing <tr>
line 588 column 13 - Warning: missing <tr>
line 623 column 1020 - Warning: unescaped & or unknown entity "&view"
line 623 column 1034 - Warning: unescaped & or unknown entity "&p"
line 631 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 633 column 9 - Warning: missing <tr>
line 651 column 13 - Warning: missing <tr>
line 659 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 661 column 9 - Warning: missing <tr>
line 679 column 13 - Warning: missing <tr>
line 689 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 691 column 9 - Warning: missing <tr>
line 709 column 13 - Warning: missing <tr>
line 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 747 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 749 column 9 - Warning: missing <tr>
line 767 column 13 - Warning: missing <tr>
line 775 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 777 column 9 - Warning: missing <tr>
line 795 column 13 - Warning: missing <tr>
line 841 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 843 column 9 - Warning: missing <tr>
line 861 column 13 - Warning: missing <tr>
line 871 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 873 column 9 - Warning: missing <tr>
line 891 column 13 - Warning: missing <tr>
line 900 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 902 column 9 - Warning: missing <tr>
line 920 column 13 - Warning: missing <tr>
line 935 column 17 - Warning: missing <tr>
line 935 column 17 - Warning: discarding unexpected <table>
line 938 column 35 - Warning: missing <tr>
line 938 column 95 - Warning: unescaped & or unknown entity "&page"
line 938 column 128 - Warning: unescaped & or unknown entity "&page"
line 938 column 161 - Warning: unescaped & or unknown entity "&page"
line 938 column 194 - Warning: unescaped & or unknown entity "&page"
line 938 column 227 - Warning: unescaped & or unknown entity "&page"
line 938 column 260 - Warning: unescaped & or unknown entity "&page"
line 938 column 295 - Warning: unescaped & or unknown entity "&page"
line 938 column 328 - Warning: unescaped & or unknown entity "&page"
line 938 column 361 - Warning: unescaped & or unknown entity "&page"
line 938 column 395 - Warning: unescaped & or unknown entity "&page"
line 938 column 430 - Warning: unescaped & or unknown entity "&page"
line 938 column 50 - Warning: missing </font> before </td>
line 938 column 467 - Warning: missing </font> before </table>
line 940 column 35 - Warning: missing <tr>
line 940 column 50 - Warning: missing </font> before </td>
line 940 column 143 - Warning: missing </font> before </table>
line 942 column 17 - Warning: discarding unexpected </textarea>
line 942 column 28 - Warning: discarding unexpected </form>
line 942 column 35 - Warning: discarding unexpected </embed>
line 942 column 43 - Warning: discarding unexpected </noembed>
line 942 column 53 - Warning: discarding unexpected </noscript>
line 942 column 64 - Warning: discarding unexpected </noembed>
line 942 column 74 - Warning: discarding unexpected </embed>
line 942 column 82 - Warning: discarding unexpected </table>
line 942 column 90 - Warning: discarding unexpected </table>
line 944 column 9 - Warning: missing </font> before <table>
line 956 column 25 - Warning: discarding unexpected </font>
line 965 column 58 - Warning: discarding unexpected </font>
line 943 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 161 column 22 - Warning: <img> lacks "alt" attribute
line 161 column 63 - Warning: <img> lacks "alt" attribute
line 161 column 112 - Warning: <img> lacks "alt" attribute
line 161 column 162 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 195 column 1177 - Warning: <img> proprietary attribute value "absmiddle"
line 195 column 1177 - Warning: <img> lacks "alt" attribute
line 195 column 1230 - Warning: <img> proprietary attribute value "absmiddle"
line 195 column 1230 - Warning: <img> lacks "alt" attribute
line 203 column 22 - Warning: <img> lacks "alt" attribute
line 203 column 63 - Warning: <img> lacks "alt" attribute
line 203 column 112 - Warning: <img> lacks "alt" attribute
line 203 column 162 - Warning: <img> lacks "alt" attribute
line 214 column 15 - Warning: <img> lacks "alt" attribute
line 252 column 2687 - Warning: <img> proprietary attribute value "absmiddle"
line 252 column 2687 - Warning: <img> lacks "alt" attribute
line 252 column 2740 - Warning: <img> proprietary attribute value "absmiddle"
line 252 column 2740 - Warning: <img> lacks "alt" attribute
line 260 column 22 - Warning: <img> lacks "alt" attribute
line 260 column 63 - Warning: <img> lacks "alt" attribute
line 260 column 112 - Warning: <img> lacks "alt" attribute
line 260 column 162 - Warning: <img> lacks "alt" attribute
line 271 column 15 - Warning: <img> lacks "alt" attribute
line 298 column 1201 - Warning: <img> proprietary attribute value "absmiddle"
line 298 column 1201 - Warning: <img> lacks "alt" attribute
line 298 column 1254 - Warning: <img> proprietary attribute value "absmiddle"
line 298 column 1254 - Warning: <img> lacks "alt" attribute
line 306 column 22 - Warning: <img> lacks "alt" attribute
line 306 column 63 - Warning: <img> lacks "alt" attribute
line 306 column 112 - Warning: <img> lacks "alt" attribute
line 306 column 162 - Warning: <img> lacks "alt" attribute
line 317 column 15 - Warning: <img> lacks "alt" attribute
line 332 column 514 - Warning: <img> proprietary attribute value "absmiddle"
line 332 column 514 - Warning: <img> lacks "alt" attribute
line 332 column 567 - Warning: <img> proprietary attribute value "absmiddle"
line 332 column 567 - Warning: <img> lacks "alt" attribute
line 340 column 22 - Warning: <img> lacks "alt" attribute
line 340 column 63 - Warning: <img> lacks "alt" attribute
line 340 column 112 - Warning: <img> lacks "alt" attribute
line 340 column 162 - Warning: <img> lacks "alt" attribute
line 351 column 15 - Warning: <img> lacks "alt" attribute
line 364 column 497 - Warning: <img> proprietary attribute value "absmiddle"
line 364 column 497 - Warning: <img> lacks "alt" attribute
line 364 column 550 - Warning: <img> proprietary attribute value "absmiddle"
line 364 column 550 - Warning: <img> lacks "alt" attribute
line 372 column 22 - Warning: <img> lacks "alt" attribute
line 372 column 63 - Warning: <img> lacks "alt" attribute
line 372 column 112 - Warning: <img> lacks "alt" attribute
line 372 column 162 - Warning: <img> lacks "alt" attribute
line 383 column 15 - Warning: <img> lacks "alt" attribute
line 398 column 798 - Warning: <img> proprietary attribute value "absmiddle"
line 398 column 798 - Warning: <img> lacks "alt" attribute
line 398 column 851 - Warning: <img> proprietary attribute value "absmiddle"
line 398 column 851 - Warning: <img> lacks "alt" attribute
line 406 column 22 - Warning: <img> lacks "alt" attribute
line 406 column 63 - Warning: <img> lacks "alt" attribute
line 406 column 112 - Warning: <img> lacks "alt" attribute
line 406 column 162 - Warning: <img> lacks "alt" attribute
line 417 column 15 - Warning: <img> lacks "alt" attribute
line 467 column 2445 - Warning: <img> proprietary attribute value "absmiddle"
line 467 column 2445 - Warning: <img> lacks "alt" attribute
line 467 column 2498 - Warning: <img> proprietary attribute value "absmiddle"
line 467 column 2498 - Warning: <img> lacks "alt" attribute
line 475 column 22 - Warning: <img> lacks "alt" attribute
line 475 column 63 - Warning: <img> lacks "alt" attribute
line 475 column 112 - Warning: <img> lacks "alt" attribute
line 475 column 162 - Warning: <img> lacks "alt" attribute
line 486 column 15 - Warning: <img> lacks "alt" attribute
line 503 column 709 - Warning: <img> proprietary attribute value "absmiddle"
line 503 column 709 - Warning: <img> lacks "alt" attribute
line 503 column 762 - Warning: <img> proprietary attribute value "absmiddle"
line 503 column 762 - Warning: <img> lacks "alt" attribute
line 511 column 22 - Warning: <img> lacks "alt" attribute
line 511 column 63 - Warning: <img> lacks "alt" attribute
line 511 column 112 - Warning: <img> lacks "alt" attribute
line 511 column 162 - Warning: <img> lacks "alt" attribute
line 522 column 15 - Warning: <img> lacks "alt" attribute
line 533 column 274 - Warning: <img> proprietary attribute value "absmiddle"
line 533 column 274 - Warning: <img> lacks "alt" attribute
line 533 column 327 - Warning: <img> proprietary attribute value "absmiddle"
line 533 column 327 - Warning: <img> lacks "alt" attribute
line 541 column 22 - Warning: <img> lacks "alt" attribute
line 541 column 63 - Warning: <img> lacks "alt" attribute
line 541 column 112 - Warning: <img> lacks "alt" attribute
line 541 column 162 - Warning: <img> lacks "alt" attribute
line 552 column 15 - Warning: <img> lacks "alt" attribute
line 563 column 190 - Warning: <img> proprietary attribute value "absmiddle"
line 563 column 190 - Warning: <img> lacks "alt" attribute
line 565 column 495 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 495 - Warning: <img> lacks "alt" attribute
line 565 column 548 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 548 - Warning: <img> lacks "alt" attribute
line 573 column 22 - Warning: <img> lacks "alt" attribute
line 573 column 63 - Warning: <img> lacks "alt" attribute
line 573 column 112 - Warning: <img> lacks "alt" attribute
line 573 column 162 - Warning: <img> lacks "alt" attribute
line 584 column 15 - Warning: <img> lacks "alt" attribute
line 628 column 1643 - Warning: <img> proprietary attribute value "absmiddle"
line 628 column 1643 - Warning: <img> lacks "alt" attribute
line 628 column 1696 - Warning: <img> proprietary attribute value "absmiddle"
line 628 column 1696 - Warning: <img> lacks "alt" attribute
line 636 column 22 - Warning: <img> lacks "alt" attribute
line 636 column 63 - Warning: <img> lacks "alt" attribute
line 636 column 112 - Warning: <img> lacks "alt" attribute
line 636 column 162 - Warning: <img> lacks "alt" attribute
line 647 column 15 - Warning: <img> lacks "alt" attribute
line 656 column 331 - Warning: <img> proprietary attribute value "absmiddle"
line 656 column 331 - Warning: <img> lacks "alt" attribute
line 656 column 384 - Warning: <img> proprietary attribute value "absmiddle"
line 656 column 384 - Warning: <img> lacks "alt" attribute
line 664 column 22 - Warning: <img> lacks "alt" attribute
line 664 column 63 - Warning: <img> lacks "alt" attribute
line 664 column 112 - Warning: <img> lacks "alt" attribute
line 664 column 162 - Warning: <img> lacks "alt" attribute
line 675 column 15 - Warning: <img> lacks "alt" attribute
line 686 column 457 - Warning: <img> proprietary attribute value "absmiddle"
line 686 column 457 - Warning: <img> lacks "alt" attribute
line 686 column 510 - Warning: <img> proprietary attribute value "absmiddle"
line 686 column 510 - Warning: <img> lacks "alt" attribute
line 694 column 22 - Warning: <img> lacks "alt" attribute
line 694 column 63 - Warning: <img> lacks "alt" attribute
line 694 column 112 - Warning: <img> lacks "alt" attribute
line 694 column 162 - Warning: <img> lacks "alt" attribute
line 705 column 15 - Warning: <img> lacks "alt" attribute
line 718 column 407 - Warning: <img> proprietary attribute value "absmiddle"
line 718 column 407 - Warning: <img> lacks "alt" attribute
line 718 column 460 - Warning: <img> proprietary attribute value "absmiddle"
line 718 column 460 - Warning: <img> lacks "alt" attribute
line 726 column 22 - Warning: <img> lacks "alt" attribute
line 726 column 63 - Warning: <img> lacks "alt" attribute
line 726 column 112 - Warning: <img> lacks "alt" attribute
line 726 column 162 - Warning: <img> lacks "alt" attribute
line 737 column 15 - Warning: <img> lacks "alt" attribute
line 744 column 274 - Warning: <img> proprietary attribute value "absmiddle"
line 744 column 274 - Warning: <img> lacks "alt" attribute
line 744 column 327 - Warning: <img> proprietary attribute value "absmiddle"
line 744 column 327 - Warning: <img> lacks "alt" attribute
line 752 column 22 - Warning: <img> lacks "alt" attribute
line 752 column 63 - Warning: <img> lacks "alt" attribute
line 752 column 112 - Warning: <img> lacks "alt" attribute
line 752 column 162 - Warning: <img> lacks "alt" attribute
line 763 column 15 - Warning: <img> lacks "alt" attribute
line 772 column 292 - Warning: <img> proprietary attribute value "absmiddle"
line 772 column 292 - Warning: <img> lacks "alt" attribute
line 772 column 345 - Warning: <img> proprietary attribute value "absmiddle"
line 772 column 345 - Warning: <img> lacks "alt" attribute
line 780 column 22 - Warning: <img> lacks "alt" attribute
line 780 column 63 - Warning: <img> lacks "alt" attribute
line 780 column 112 - Warning: <img> lacks "alt" attribute
line 780 column 162 - Warning: <img> lacks "alt" attribute
line 791 column 15 - Warning: <img> lacks "alt" attribute
line 836 column 2246 - Warning: <img> proprietary attribute value "absmiddle"
line 836 column 2246 - Warning: <img> lacks "alt" attribute
line 838 column 2490 - Warning: <img> proprietary attribute value "absmiddle"
line 838 column 2490 - Warning: <img> lacks "alt" attribute
line 838 column 2543 - Warning: <img> proprietary attribute value "absmiddle"
line 838 column 2543 - Warning: <img> lacks "alt" attribute
line 846 column 22 - Warning: <img> lacks "alt" attribute
line 846 column 63 - Warning: <img> lacks "alt" attribute
line 846 column 112 - Warning: <img> lacks "alt" attribute
line 846 column 162 - Warning: <img> lacks "alt" attribute
line 857 column 15 - Warning: <img> lacks "alt" attribute
line 868 column 375 - Warning: <img> proprietary attribute value "absmiddle"
line 868 column 375 - Warning: <img> lacks "alt" attribute
line 868 column 428 - Warning: <img> proprietary attribute value "absmiddle"
line 868 column 428 - Warning: <img> lacks "alt" attribute
line 876 column 22 - Warning: <img> lacks "alt" attribute
line 876 column 63 - Warning: <img> lacks "alt" attribute
line 876 column 112 - Warning: <img> lacks "alt" attribute
line 876 column 162 - Warning: <img> lacks "alt" attribute
line 887 column 15 - Warning: <img> lacks "alt" attribute
line 894 column 210 - Warning: <img> proprietary attribute value "absmiddle"
line 894 column 210 - Warning: <img> lacks "alt" attribute
line 897 column 371 - Warning: <img> proprietary attribute value "absmiddle"
line 897 column 371 - Warning: <img> lacks "alt" attribute
line 897 column 424 - Warning: <img> proprietary attribute value "absmiddle"
line 897 column 424 - Warning: <img> lacks "alt" attribute
line 905 column 22 - Warning: <img> lacks "alt" attribute
line 905 column 63 - Warning: <img> lacks "alt" attribute
line 905 column 112 - Warning: <img> lacks "alt" attribute
line 905 column 162 - Warning: <img> lacks "alt" attribute
line 916 column 15 - Warning: <img> lacks "alt" attribute
line 925 column 196 - Warning: <img> proprietary attribute value "absmiddle"
line 925 column 196 - Warning: <img> lacks "alt" attribute
line 932 column 375 - Warning: <img> proprietary attribute value "absmiddle"
line 932 column 375 - Warning: <img> lacks "alt" attribute
line 932 column 464 - Warning: <img> proprietary attribute value "absmiddle"
line 932 column 464 - Warning: <img> lacks "alt" attribute
line 932 column 517 - Warning: <img> proprietary attribute value "absmiddle"
line 932 column 517 - Warning: <img> lacks "alt" attribute
line 950 column 25 - Warning: <img> lacks "alt" attribute
line 955 column 267 - Warning: <img> lacks "alt" attribute
line 147 column 143 - Warning: trimming empty <font>
line 149 column 467 - Warning: trimming empty <font>
line 935 column 17 - Warning: trimming empty <tr>
line 938 column 467 - Warning: trimming empty <font>
line 940 column 143 - 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 219 column 27 - Warning: <nobr> is not approved by W3C
line 276 column 27 - Warning: <nobr> is not approved by W3C
line 322 column 27 - Warning: <nobr> is not approved by W3C
line 356 column 27 - Warning: <nobr> is not approved by W3C
line 388 column 27 - Warning: <nobr> is not approved by W3C
line 422 column 27 - Warning: <nobr> is not approved by W3C
line 491 column 27 - Warning: <nobr> is not approved by W3C
line 527 column 27 - Warning: <nobr> is not approved by W3C
line 557 column 27 - Warning: <nobr> is not approved by W3C
line 589 column 27 - Warning: <nobr> is not approved by W3C
line 652 column 27 - Warning: <nobr> is not approved by W3C
line 680 column 27 - Warning: <nobr> is not approved by W3C
line 710 column 27 - Warning: <nobr> is not approved by W3C
line 742 column 27 - Warning: <nobr> is not approved by W3C
line 768 column 27 - Warning: <nobr> is not approved by W3C
line 796 column 27 - Warning: <nobr> is not approved by W3C
line 862 column 27 - Warning: <nobr> is not approved by W3C
line 892 column 27 - Warning: <nobr> is not approved by W3C
line 921 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 344 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