Warning: You are using TidyHTML mode! Pages MAY and probably WILL break. To disable, click here or append 'xxx-off=1' to the URL!

Register - Login
Views: 57949465
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - JCS - Stats - Latest Posts - Color Chart - Smilies
10-17-14 07:48:12 PM
fortyfive-antelope

Jul - Posts by yoshiman
Pages: 1 2 3 4 5
yoshiman
Member
Level: 21


Posts: 1/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-21-07 06:47:02 PM, in What Now? A pickable Peach Object? Link
It was me who created the pick up Peach code as can be viewed on YouTube (search for yoshielectron). The reason why Peach appears as she should is because I've bothered to include her animation pointer.

One pointer indicates which gfx structure the object uses. And for animated objects you use the animation pointer otherwise you get a messed up object.
yoshiman
Member
Level: 21


Posts: 2/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-22-07 07:03:10 PM, in What Now? A pickable Peach Object? Link
Hello everyone, James here!

Actually, I do ROM hacking including swapping Mario's gfx for Peach, though that's may be too difficult...

Anyway, there aren't two Peach models. Within an object structure you can set the level of transparency an object uses, though it doesn't affect all object graphics. So, after the end of the opening sequence, Peach's behaviour coding causes her to fade to completely transparent. But it's a simple matter of changing that value within the object structure so that Peach can be seen.

RAM hacking does have big advantages including the use of gameshark like codes, however, ROM hacking is better in some ways. I find the N64 MIPS ASM 'easy' so that's still something I need to look at in SM64. But if you're interested, within every object structure there is a pointer to the behaviour coding, change that pointer and te object becomes something totally different. For e.g., I changed a Goomba into a chain chomp!
yoshiman
Member
Level: 21


Posts: 3/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-23-07 05:47:27 PM, in Editing the RAM objects Link
I know a lot about the so-called 'RAM objects,' I'm putting a list together about the different variables that belong to a structure. From what I understand, the level details only set a few of the variables such as position and rotation, very much as is the case of Ocarina of Time. However, the level details are copied to the RAM in Ocarina of Time but this does not seem to be the case for SM64.

One of the object variables is a pointer to the behaviour coding, for all we know there might be unused behaviours? This was how, for example, I made a ghost Peach by using the Big Boo behaviour pointer; the behaviour coding can be used in any level. But be warned, some behaviour pointers cause the game to crash if used with certain objects, this may be due to the coding finding values within the object structure that it doesn't 'like.'

I really need to look at the ASM in more detail, see how it handles the object behaviour. Compared to Ocarina of Timer and Resi Evil 2 on the N64 that I know quite a bit how the objects are handled, SM64 although simple has features that perhaps were planned to be used at one time. For example, you can rotate an object's collision idependent of the actual object rotation so you can, for e.g., read only the back or side of a signpost.

We really need to take SM64 apart, I'm sure there is something hiding...

James S.
yoshiman
Member
Level: 21


Posts: 4/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-23-07 06:19:47 PM, in Editing the RAM objects Link
Am I right in thinking that the lower polygon Mario is used for collision purposes or is it the original model left in?

Even if there aren't any unused behaviour coding, understanding how objects are handled will allow us to create new behaviours. Say you wanted a Yoshi, which ended up in the SM64 DS version, then new behaviour coding would be needed.

James S.
yoshiman
Member
Level: 21


Posts: 5/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-24-07 05:55:57 PM, in Editing the RAM objects Link
What I mean by a pointer in the object structure (what you call a RAM object) I mean an actual address. It seems that in the ROM you use offset to the segment which makes sense since the actual RAM addresses aren't known. In the RAM, actual address pointers are used most of the time and look like this:

800E5F20 This is a pointer to Mario's gfx struxture for the PAL SM64.

This is confusing for some as it looks like a Gameshak code but it's just an aboslute address. Well, I say absolute as opposed to an offset added to a start address. In the RAM objects towards the end are pointers like above to the ASM coding, changing these alters how the obejct behaves.

I'm not totally sure but it seems every object can have at least 2 behaviours, perhaps 3. Often two of the the behaviour pointers are the same with a flag to say which one to use, with a third that I need to study more.

There does seem to be a lot of unused variables within each RAM object, for e.g., there are floating point values towards the end that look like size modifiers but they're at the beginning.

When I did a search for the instructions to set object positions in the RAM it didn't return many values which is strange.

James S.
yoshiman
Member
Level: 21


Posts: 6/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-25-07 05:37:01 PM, in Hacking animations Link
I'm surprised how the animations are handled in SM64, there is the Peach animation stored in memory when outside the castle; she claps her hands and pats something. There are 100 frames to this animation, and many different movements for each frame so the whole animation takes up a fair amount of memory.

First of all there was translation and rotation of Peach, and then the rotation of Peach's hair, dress and arms. The values look to be integers so that they need only 2 bytes as opposed to using more accurate f/p numbers that would need more bytes.

Now for something strange, no surprise that rotating Peach's forearms moves her hands but rotating her upperarms does not so that you can actually split her arms in half! There also seems to be repeated rotations, such as for her hair. I'm guessing that what can be animated about an object depends on how the gfx are constructed.

If it were possible to replace Mario with Peach then the animation would have to be adjusted. As Mario does different things, the data pointed to by Mario's animation pointer changes, but surely all of his animations are already loaded in memory?

James S.
yoshiman
Member
Level: 21


Posts: 7/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-26-07 06:19:53 PM, in Hacking animations Link
It's strange the problem with Peach's upperarms but I've now found the proper values to rotate her arms. Has anyone ever edited SM64 animations before-what about an animation editor?

It's been a while since I've seen the ending sequence, but you can even move or rotate Peach's earrings. Of course changing Mario's animations would be a lot more difficult but it would be a challenge.

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 8/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-27-07 06:00:12 PM, in Editing the RAM objects Link
Yeah, the behaviour pointerss are nothing more than jumps to ASM, that is, coding stored in the RAM. But since that's copied from the ROM, it would be possible to alter how objects behave. I mean, create new behaviours, such as for Mario to ride Yoshi.

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 9/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-27-07 06:03:53 PM, in Hacking animations Link
I can edit Mario's animation data but it gets overwritten by the game, unlike for Peach, for example. The animation pointer in Mario's object structure stays the same but the data it points to changes, so its possible new animations are loaded but I'm not so sure.

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 10/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-30-07 06:01:38 PM, in Blinking Eyes Link
Yeah, the blinking eyes are also separate from an object's animation. I can easily change the textures in RAM used for things like eyes, so it shouldn't be too hard to change them in the ROM. How about Mario with Peach's eyes?!

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 11/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-31-07 06:14:49 PM, in Blinking Eyes (last edited by yoshiman at 01-01-08 06:20 PM) Link
Ok, I will look into it and perhaps put it on my website or this forum...

I've put the results on my website but it's not good news.

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 12/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 12-31-07 06:20:27 PM, in Opening Sequence Link
We all know the opening sequence at the start of the game when Peach reads the letter to Mario and so on. But there are some interesting points about the objects that I would like to point out:

* The Peach object turns into the pipe after Peach vanishes; couldn't a separate object be used for the pipe?

* The cameraman Lakitu gfx does not include his cloud; why not? I've noticed this in the mirror room in that you can just see his cloud when you can't see Lakitu himself.

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 13/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-06-08 06:02:13 PM, in Editing the RAM objects (last edited by yoshiman at 01-07-08 05:43 PM) Link
Ok, here are some of the variables that I've found so far for an object structure and some information that I'm putting on my website:

Stored in the RAM while playing SM64 are the object structures which are simply an area of memory dedicated to each object that stores its position, rotation, and so on as well as defining how it looks. These object structures appear to be doubly-linked lists since the game was most likely programmed in either C or C++ and each object structure contains a pointer to the next and previous structure. Just think of a structure as a collection of variables bound to a particular object, each of the 240 objects that can be in a single level have this structure stored in the RAM one after another.

Each structure uses 608 (0x260) bytes, so all 240 objects in a level occupy a total of 145,920 (0x23A00) bytes. The first object structure is located in RAM at address 8030B0B8 for the PAL game and 8033D488 for the NTSC game.

What follows is that which I know about the variables contained within an object structure; not all variables are normally used by a single object and thus some variables will not have an effect on the object. The number in square brackets [] is the offset from the start of the object structure. Following that is an example value and then a description of how various values affect the object.

(f/p) is a floating-point value.
0x?? or 0x???? are hexadecimal values.

[0x00] 0x001800 Always that value, should not be changed as it marks the start of an object structure.
[0x03] 0x25 Alters how the object behaves in relation to the camera. 0x25 causes the object to always face the camera as is the case of the 2D objects like trees and other objects so that it appears 3D, however it can be used with 3D objects. 0x21 is used for true 3D objects so the object isn't forced to always face the camera since rotating the camera will show other parts of the object.
[0x04] 0x8030B0B8 Usually pointer to the previous object. If this is the first object, it will point to the last object.
[0x08] 0x8030B578 Usually pointer to the next object. If this is the last object, it will point to the first object.
[0x0C] 0x80386A20 Always equals this value, points to a structure that contains variables which affect all the objects.
[0x10] 0x00000000 ?
[0x14] 0x80195084 Pointer to the object's graphics structure.
[0x18] 0x01 Use graphics flag: =0x00 don't display object's graphics, =0x01 do display object's graphics.
[0x19] 0x01 Appears to have no effect on the object; usually equals 0x01 if [0x18]=0x01.
[0x1A] 0x0000 ?
[0x1C] 0x00000000 ?
[0x20] 0xC4A6A000 (f/p) Some form of coordinate?
[0x24] 0x4431C000 (f/p) Some form of coordinate?
[0x28] 0x44EB2000 (f/p) Some form of coordinate?
[0x2C] 0x3F800000 (f/p) X size modifier (scaling value).
[0x30] 0x3F800000 (f/p) Y size modifier (scaling value).
[0x34] 0x3F800000 (f/p) Z size modifier (sacling value).
[0x38] 0x00000000 ?
[0x3C] 0x80060030 Pointer to the object's animation structure; if zero, object is not animated.
[0x40] 0x00000000 ?
[0x44] 0x00000000 ?
[0x48] 0x00010000 ?
[0x4C] 0x00000000 ?
[0x50] 0x00000000 ?
[0x54] 0x3F751000 ?
[0x58] 0xC2D2C670 (f/p) Some form of coordinate?
[0x5C] 0xC444B1C0 (f/p) Some form of coordinate?
[0x60] 0x8030FA58 Pointer to object ?
[0x64] 0x8030F598 Pointer to object ?
[0x68] 0x8030F7F8 Pointer to object ?
[0x6C] 0x00000000 ?
[0x70] 0x00000000 ?
[0x74] 0x01 ?
[0x75] 0x01 Determines if the object is active: =0x00 remove the object (the structure remains), =0x01 continue using this object.
[0x76] 0x0001 ?
[0x78] 0x803194B8 Pointer to object?
[0x7C] 0x00000000 ?
[0x80] 0x00000000 ?
[0x84] 0x00000000 ?
[0x88] 0x00000000 ?
[0x8C] 0x0000
[0x8E] 0x0001 How much object homes in on Mario? 0x0001=Do not react to Mario.
0x2449=Rotate to face Mario.
[0x90] 0x00000000 ?
[0x94] 0x00000000 ?
[0x98] 0x00000000 ?
[0x9C] 0x00000000 ?
[0xA0] 0x45A54000 (f/p) X position in level.
[0xA4] 0x43C4FD52 (f/p) Y position in level.
[0xA8] 0xC4480000 (f/p) Z position in level.
[0xAC] 0x00000000 ?
[0xB0] 0x00000000 ?
[0xB4] 0x00000000 ?
[0xB8] 0x00000000 ?
[0xBC] 0x00000000 ?
[0xC0] 0x00000000 ?
[0xC4] 0x00000000 X collision rotation?
[0xC8] 0xFFFFBA00 Y collision rotation?
[0xCC] 0x00000000 Z collision rotation?
[0xD0] 0x00000000 X object rotation.
[0xD4] 0xFFFFBA00 Y object rotation.
[0xD8] 0x00000000 Z object rotation.
[0xDC] 0x00000000 ?
[0xF3] 0x00 For ! boxes, controls its colour (does not change what it gives out; use [0x147]):
0x00=red (wing cap).
0x01=green (metal cap).
0x02=blue(vanish cap).
0x03=yellow (other item such as coins).
For ordinary boxes changes the texture of its graphics: 0x00=Shifting Sands box texture.
0x01=Bob-omb Battlefield box texture.
For coins selects texture to use to animate its spinning; ranges from 0x00 to 0x07.
[0xFE] 0x0028 ?
[0x131] 0x80 0x00=Solid object; can be punched, kicked and climbed onto its top.
0x10=Similiar to 0x40.
0x20=Cause Mario damage upon contact ([0x183] determines how much damage); can't jump on top or bounce off.
0x40=Cause Mario damage upon contact ([0x183] determines how much damage); can jump onto top and bounce off.
0x80=Can be read like a signpost and climbed onto its top.
[0x133] 0x40 0x00=Solid object.
0x40=Object can be climbed.
[0x147] 0x32 Message to use for signposts and Bob-omb buddies (0x00 is the first message).
For ! boxes it controls what object is given after the box is broken (has no affect on the colour of the ! box unless a code is active before entering the level):
0x00=Wing cap.
0x01=Metal cap.
0x02=Vanish cap.
0x03=Koopa shell.
0x04=x1 yellow coin.
0x05=x3 yellow coins.
0x06=x10 yellow coins.
0x07=1-up mushroom (moves slowly).
0x08=Level star 1.
0x09=1-up mushroom (moves fast).
0x0A=Level star 2.
0x0B=Level star 3.
0x0C=Level star 4.
0x0D=Level star 5.
0x0E=Level star 6.
0x0F=nothing.
[0x14F] 0x04 Current action. For a platform lift: 0x01=Moving straight upwards.
0x02=Turning over.
0x03=Moving straight downwards.
0x04=Moving horizontally.
[0x156] 0x0033 Timer that increases until it reaches a certain value, resets to 0 and counts up again. Used by objects such as the platform lifts to decide when to change its movement type. For ! boxes it is used to delay the 'return' of the box.
[0x17F] 0xFF Level of transparency for object's graphics (only affects some graphics?) 0x00=completely transparent, 0xFF=opaque.
[0x183] 0x01 How many segments of damage to do Mario for objects that cause him harm; if zero enemy objects will push Mario away but not do him any harm.
[0x1CC] 0x800E3B50 Pointer to behavoiur coding.
[0x1D4] 0x800E3B50 Pointer to behaviour coding.
[0x20C] 0x800E3B20 Pointer to behaviour related data?

Hope this helps; it's far from complete.

I actually did Mario riding Yoshi by changing Yoshi's behaviour to that of a Koopa shell. But of course his animation wasn't right as Mario was surfing on Yoshi!

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 14/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-06-08 06:23:00 PM, in Hacking animations Link
Thanks for what's no doubt an NTSC address! The debug code was never found for the PAL version as far as I'm aware. But thanks anyway.

James S.

--------------------
Time is the key...
yoshiman
Member
Level: 21


Posts: 15/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-06-08 07:23:19 PM, in Blinking Eyes Link
That's strange what you said about Mario's head; the texture commands for Mario's eyes (open, half shut, closed, etc) are always in memory or are they just for the main Mario model? You only need to change those texture commands, as I did, to give Mario Peach's eyes. But the problem is, other than Peach having one more blink texture than Mario, is Mario only has one Peach eye.

James S.

--------------------
We English do things a little differently...Anyone for a cup of tea while we hack?!
yoshiman
Member
Level: 21


Posts: 16/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-06-08 07:55:18 PM, in Hacking animations (last edited by yoshiman at 01-06-08 08:06 PM) Link
Actually, you can't always add/subtract to get the address for a different version; that's a common mistake. Otherwise all PAL users would be able to use the debug code if it were that simple; but there are some remains left in the PAL version such as the level select names.

Mario's lives (PAL) 803094DD (NTSC) 8033B21D Difference=31D40
First object structure (PAL) 8030B0B8 (NTSC) 8033D488 Difference=323D0

See? It doesn't always work out. I've tried subtracting to get the debug code but nothing.

But what you're talking about once more is totally different to what I'm referring to.

If Peach's actual animation data is just a number of translations and rotations for each of her body parts then why should it be different for any other objects? The animations commands you talk about do change dynamically for Mario but does Mario's actual animation data-the translations and rotations-change dynamically too?

James S.

--------------------
We English do things a little differently...Anyone for a cup of tea while we hack?!
yoshiman
Member
Level: 21


Posts: 17/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-06-08 08:31:17 PM, in Hacking animations Link
Yeah, I've tried nearby but I think the only way to find the debug in the PAL version is to trace the coding. However, I can't find in the PAL version the ASM that checks the debug flag. So it seems like it was removed from the PAL version, or certainly the one I have.

James S.

--------------------
We English do things a little differently...Anyone for a cup of tea while we hack?!
yoshiman
Member
Level: 21


Posts: 18/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-07-08 08:05:13 PM, in Hacking animations (last edited by yoshiman at 01-07-08 08:05 PM) Link
Thanks, VL-Tone; never before had I seen the PAL debug code yet you knew it all the time! It would have taken me much longer to find the code myself especially as the coding is different for the two versions for the ASM in the RAM:

NTSC

80248BE0 3C188033 lui t8, 0x8033
80248BE4 8318D598 lb t8, 0xd598 (debug_flag)
80248BE8 1300000B beq t8, r0, 0x80248C18

PAL

8026DFA0 3C0A8030 lui t2, 0x8030
8026DFA4 814A9748 lb t2, 0x802F9748 (debug_flag)
8026DFA8 3C018030 lui at, 0x8030
8026DFAC AC20A0D0 sw r0, 0x802FA0D0
8026DFB0 1140000A beq t2, r0, 0x8026DFDC

This really helps as I'm looking over the coding; I'd love to do a thread on SM64 ASM...

James S.

--------------------
We English do things a little differently...Anyone for a cup of tea while we hack?!
yoshiman
Member
Level: 21


Posts: 19/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-07-08 08:17:05 PM, in Blinking Eyes Link
The time I notice the low-poly Mario the most is when on the mountain summit in Bob-omb Battlefield and the camera is zoomed out. Another place is when fighting Bowser you can see the low-poly Mario. As the camera zooms in the high-poly Mario 'pops' into view which should never happen had they kept with just the better model.

This really complicates making changes to Mario but I think it's the best way as then the edited graphics will be available in all levels.

James S.

--------------------
We English do things a little differently...Anyone for a cup of tea while we hack?!
yoshiman
Member
Level: 21


Posts: 20/95
EXP: 46223
For next: 3720

Since: 12-21-07
From: London, England

Since last post: 2065 days
Last activity: 1949 days

Posted on 01-07-08 10:30:33 PM, in Level editing, WITH GAMESHARK?!? Link
Just to let you know, they are my codes that I created. I'm an expert at RAM hacking; there is a lot that can be done by just using Gameshark codes. I know you can't copyright codes but it would be nice to get some credit and if you created the same codes by chance then that's some chance.

James S.

--------------------
We English do things a little differently...Anyone for a cup of tea while we hack?!
Pages: 1 2 3 4 5
Jul - Posts by yoshiman






Rusted Logic

Acmlmboard - 07/23/2013 b378.03
©2000-2013 Acmlm, Xkeeper, Inuyasha, et al.

26 database queries, 51 query cache hits.
Query execution time:  0.053831 seconds
Script execution time:  0.077383 seconds
Total render time:  0.131213 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 94 column 11 - Warning: <form> isn't allowed in <table> elements
line 93 column 10 - Info: <table> previously mentioned
line 95 column 11 - Warning: missing <tr>
line 95 column 124 - Warning: missing </font> before </td>
line 99 column 16 - Warning: plain text isn't allowed in <tr> elements
line 95 column 11 - Info: <tr> previously mentioned
line 100 column 68 - Warning: <nobr> is not approved by W3C
line 100 column 68 - Warning: missing </nobr> before </td>
line 117 column 68 - Warning: <nobr> is not approved by W3C
line 117 column 68 - Warning: missing </nobr> before <tr>
line 141 column 35 - Warning: missing <tr>
line 141 column 50 - Warning: missing </font> before </td>
line 141 column 135 - Warning: missing </font> before </table>
line 143 column 35 - Warning: missing <tr>
line 143 column 97 - Warning: unescaped & or unknown entity "&page"
line 143 column 130 - Warning: unescaped & or unknown entity "&page"
line 143 column 163 - Warning: unescaped & or unknown entity "&page"
line 143 column 196 - Warning: unescaped & or unknown entity "&page"
line 143 column 50 - Warning: missing </font> before </td>
line 143 column 231 - Warning: missing </font> before </table>
line 150 column 9 - Warning: <div> isn't allowed in <tr> elements
line 149 column 9 - Info: <tr> previously mentioned
line 152 column 9 - Warning: missing <tr>
line 166 column 13 - Warning: missing <tr>
line 167 column 27 - Warning: <nobr> is not approved by W3C
line 173 column 15 - Warning: missing <td>
line 174 column 9 - Warning: <div> isn't allowed in <tr> elements
line 173 column 15 - Info: <tr> previously mentioned
line 176 column 9 - Warning: missing <tr>
line 190 column 13 - Warning: missing <tr>
line 191 column 27 - Warning: <nobr> is not approved by W3C
line 201 column 15 - Warning: missing <td>
line 202 column 9 - Warning: <div> isn't allowed in <tr> elements
line 201 column 15 - Info: <tr> previously mentioned
line 204 column 9 - Warning: missing <tr>
line 218 column 13 - Warning: missing <tr>
line 219 column 27 - Warning: <nobr> is not approved by W3C
line 231 column 15 - Warning: missing <td>
line 232 column 9 - Warning: <div> isn't allowed in <tr> elements
line 231 column 15 - Info: <tr> previously mentioned
line 234 column 9 - Warning: missing <tr>
line 248 column 13 - Warning: missing <tr>
line 249 column 27 - Warning: <nobr> is not approved by W3C
line 257 column 15 - Warning: missing <td>
line 258 column 9 - Warning: <div> isn't allowed in <tr> elements
line 257 column 15 - Info: <tr> previously mentioned
line 260 column 9 - Warning: missing <tr>
line 274 column 13 - Warning: missing <tr>
line 275 column 27 - Warning: <nobr> is not approved by W3C
line 291 column 15 - Warning: missing <td>
line 292 column 9 - Warning: <div> isn't allowed in <tr> elements
line 291 column 15 - Info: <tr> previously mentioned
line 294 column 9 - Warning: missing <tr>
line 308 column 13 - Warning: missing <tr>
line 309 column 27 - Warning: <nobr> is not approved by W3C
line 321 column 15 - Warning: missing <td>
line 322 column 9 - Warning: <div> isn't allowed in <tr> elements
line 321 column 15 - Info: <tr> previously mentioned
line 324 column 9 - Warning: missing <tr>
line 338 column 13 - Warning: missing <tr>
line 339 column 27 - Warning: <nobr> is not approved by W3C
line 347 column 15 - Warning: missing <td>
line 348 column 9 - Warning: <div> isn't allowed in <tr> elements
line 347 column 15 - Info: <tr> previously mentioned
line 350 column 9 - Warning: missing <tr>
line 364 column 13 - Warning: missing <tr>
line 365 column 27 - Warning: <nobr> is not approved by W3C
line 371 column 15 - Warning: missing <td>
line 372 column 9 - Warning: <div> isn't allowed in <tr> elements
line 371 column 15 - Info: <tr> previously mentioned
line 374 column 9 - Warning: missing <tr>
line 388 column 13 - Warning: missing <tr>
line 389 column 27 - Warning: <nobr> is not approved by W3C
line 395 column 15 - Warning: missing <td>
line 396 column 9 - Warning: <div> isn't allowed in <tr> elements
line 395 column 15 - Info: <tr> previously mentioned
line 398 column 9 - Warning: missing <tr>
line 412 column 13 - Warning: missing <tr>
line 413 column 27 - Warning: <nobr> is not approved by W3C
line 419 column 15 - Warning: missing <td>
line 420 column 9 - Warning: <div> isn't allowed in <tr> elements
line 419 column 15 - Info: <tr> previously mentioned
line 422 column 9 - Warning: missing <tr>
line 436 column 13 - Warning: missing <tr>
line 437 column 27 - Warning: <nobr> is not approved by W3C
line 445 column 15 - Warning: missing <td>
line 446 column 9 - Warning: <div> isn't allowed in <tr> elements
line 445 column 15 - Info: <tr> previously mentioned
line 448 column 9 - Warning: missing <tr>
line 462 column 13 - Warning: missing <tr>
line 463 column 27 - Warning: <nobr> is not approved by W3C
line 473 column 15 - Warning: missing <td>
line 474 column 9 - Warning: <div> isn't allowed in <tr> elements
line 473 column 15 - Info: <tr> previously mentioned
line 476 column 9 - Warning: missing <tr>
line 490 column 13 - Warning: missing <tr>
line 491 column 27 - Warning: <nobr> is not approved by W3C
line 618 column 15 - Warning: missing <td>
line 619 column 9 - Warning: <div> isn't allowed in <tr> elements
line 618 column 15 - Info: <tr> previously mentioned
line 621 column 9 - Warning: missing <tr>
line 635 column 13 - Warning: missing <tr>
line 636 column 27 - Warning: <nobr> is not approved by W3C
line 642 column 15 - Warning: missing <td>
line 643 column 9 - Warning: <div> isn't allowed in <tr> elements
line 642 column 15 - Info: <tr> previously mentioned
line 645 column 9 - Warning: missing <tr>
line 659 column 13 - Warning: missing <tr>
line 660 column 27 - Warning: <nobr> is not approved by W3C
line 666 column 15 - Warning: missing <td>
line 667 column 9 - Warning: <div> isn't allowed in <tr> elements
line 666 column 15 - Info: <tr> previously mentioned
line 669 column 9 - Warning: missing <tr>
line 683 column 13 - Warning: missing <tr>
line 684 column 27 - Warning: <nobr> is not approved by W3C
line 699 column 15 - Warning: missing <td>
line 700 column 9 - Warning: <div> isn't allowed in <tr> elements
line 699 column 15 - Info: <tr> previously mentioned
line 702 column 9 - Warning: missing <tr>
line 716 column 13 - Warning: missing <tr>
line 717 column 27 - Warning: <nobr> is not approved by W3C
line 723 column 15 - Warning: missing <td>
line 724 column 9 - Warning: <div> isn't allowed in <tr> elements
line 723 column 15 - Info: <tr> previously mentioned
line 726 column 9 - Warning: missing <tr>
line 740 column 13 - Warning: missing <tr>
line 741 column 27 - Warning: <nobr> is not approved by W3C
line 763 column 15 - Warning: missing <td>
line 764 column 9 - Warning: <div> isn't allowed in <tr> elements
line 763 column 15 - Info: <tr> previously mentioned
line 766 column 9 - Warning: missing <tr>
line 780 column 13 - Warning: missing <tr>
line 781 column 27 - Warning: <nobr> is not approved by W3C
line 789 column 15 - Warning: missing <td>
line 790 column 9 - Warning: <div> isn't allowed in <tr> elements
line 789 column 15 - Info: <tr> previously mentioned
line 792 column 9 - Warning: missing <tr>
line 806 column 13 - Warning: missing <tr>
line 807 column 27 - Warning: <nobr> is not approved by W3C
line 814 column 17 - Warning: discarding unexpected <table>
line 817 column 35 - Warning: missing <tr>
line 817 column 97 - Warning: unescaped & or unknown entity "&page"
line 817 column 130 - Warning: unescaped & or unknown entity "&page"
line 817 column 163 - Warning: unescaped & or unknown entity "&page"
line 817 column 196 - Warning: unescaped & or unknown entity "&page"
line 817 column 50 - Warning: missing </font> before </td>
line 817 column 231 - Warning: missing </font> before </table>
line 819 column 35 - Warning: missing <tr>
line 819 column 50 - Warning: missing </font> before </td>
line 819 column 135 - Warning: missing </font> before </table>
line 821 column 17 - Warning: discarding unexpected </textarea>
line 821 column 28 - Warning: discarding unexpected </form>
line 821 column 35 - Warning: discarding unexpected </embed>
line 821 column 43 - Warning: discarding unexpected </noembed>
line 821 column 53 - Warning: discarding unexpected </noscript>
line 821 column 64 - Warning: discarding unexpected </noembed>
line 821 column 74 - Warning: discarding unexpected </embed>
line 821 column 82 - Warning: discarding unexpected </table>
line 821 column 90 - Warning: discarding unexpected </table>
line 830 column 9 - Warning: missing </font> before <table>
line 846 column 9 - Warning: inserting implicit <font>
line 846 column 9 - Warning: missing </a> before <div>
line 846 column 9 - Warning: missing </font> before <div>
line 846 column 105 - Warning: inserting implicit <font>
line 846 column 111 - Warning: discarding unexpected </a>
line 865 column 58 - Warning: discarding unexpected </font>
line 823 column 1 - Warning: missing </center>
line 91 column 9 - Warning: <img> lacks "alt" attribute
line 93 column 10 - Warning: <table> lacks "summary" attribute
line 95 column 63 - Warning: <img> lacks "alt" attribute
line 100 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 100 column 93 - Warning: <img> lacks "alt" attribute
line 117 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 117 column 98 - Warning: <img> lacks "alt" attribute
line 136 column 1 - Warning: <table> lacks "summary" attribute
line 136 column 240 - Warning: <td> attribute "bgcolor" lacks value
line 141 column 17 - Warning: <table> lacks "summary" attribute
line 143 column 17 - Warning: <table> lacks "summary" attribute
line 151 column 9 - Warning: <table> lacks "summary" attribute
line 155 column 22 - Warning: <img> lacks "alt" attribute
line 155 column 63 - Warning: <img> lacks "alt" attribute
line 155 column 112 - Warning: <img> lacks "alt" attribute
line 155 column 162 - Warning: <img> lacks "alt" attribute
line 162 column 15 - Warning: <img> lacks "alt" attribute
line 165 column 11 - Warning: <table> lacks "summary" attribute
line 175 column 9 - Warning: <table> lacks "summary" attribute
line 179 column 22 - Warning: <img> lacks "alt" attribute
line 179 column 63 - Warning: <img> lacks "alt" attribute
line 179 column 112 - Warning: <img> lacks "alt" attribute
line 179 column 162 - Warning: <img> lacks "alt" attribute
line 186 column 15 - Warning: <img> lacks "alt" attribute
line 189 column 11 - Warning: <table> lacks "summary" attribute
line 203 column 9 - Warning: <table> lacks "summary" attribute
line 207 column 22 - Warning: <img> lacks "alt" attribute
line 207 column 63 - Warning: <img> lacks "alt" attribute
line 207 column 112 - Warning: <img> lacks "alt" attribute
line 207 column 162 - Warning: <img> lacks "alt" attribute
line 214 column 15 - Warning: <img> lacks "alt" attribute
line 217 column 11 - Warning: <table> lacks "summary" attribute
line 233 column 9 - Warning: <table> lacks "summary" attribute
line 237 column 22 - Warning: <img> lacks "alt" attribute
line 237 column 63 - Warning: <img> lacks "alt" attribute
line 237 column 112 - Warning: <img> lacks "alt" attribute
line 237 column 162 - Warning: <img> lacks "alt" attribute
line 244 column 15 - Warning: <img> lacks "alt" attribute
line 247 column 11 - Warning: <table> lacks "summary" attribute
line 259 column 9 - Warning: <table> lacks "summary" attribute
line 263 column 22 - Warning: <img> lacks "alt" attribute
line 263 column 63 - Warning: <img> lacks "alt" attribute
line 263 column 112 - Warning: <img> lacks "alt" attribute
line 263 column 162 - Warning: <img> lacks "alt" attribute
line 270 column 15 - Warning: <img> lacks "alt" attribute
line 273 column 11 - Warning: <table> lacks "summary" attribute
line 293 column 9 - Warning: <table> lacks "summary" attribute
line 297 column 22 - Warning: <img> lacks "alt" attribute
line 297 column 63 - Warning: <img> lacks "alt" attribute
line 297 column 112 - Warning: <img> lacks "alt" attribute
line 297 column 162 - Warning: <img> lacks "alt" attribute
line 304 column 15 - Warning: <img> lacks "alt" attribute
line 307 column 11 - Warning: <table> lacks "summary" attribute
line 323 column 9 - Warning: <table> lacks "summary" attribute
line 327 column 22 - Warning: <img> lacks "alt" attribute
line 327 column 63 - Warning: <img> lacks "alt" attribute
line 327 column 112 - Warning: <img> lacks "alt" attribute
line 327 column 162 - Warning: <img> lacks "alt" attribute
line 334 column 15 - Warning: <img> lacks "alt" attribute
line 337 column 11 - Warning: <table> lacks "summary" attribute
line 349 column 9 - Warning: <table> lacks "summary" attribute
line 353 column 22 - Warning: <img> lacks "alt" attribute
line 353 column 63 - Warning: <img> lacks "alt" attribute
line 353 column 112 - Warning: <img> lacks "alt" attribute
line 353 column 162 - Warning: <img> lacks "alt" attribute
line 360 column 15 - Warning: <img> lacks "alt" attribute
line 363 column 11 - Warning: <table> lacks "summary" attribute
line 373 column 9 - Warning: <table> lacks "summary" attribute
line 377 column 22 - Warning: <img> lacks "alt" attribute
line 377 column 63 - Warning: <img> lacks "alt" attribute
line 377 column 112 - Warning: <img> lacks "alt" attribute
line 377 column 162 - Warning: <img> lacks "alt" attribute
line 384 column 15 - Warning: <img> lacks "alt" attribute
line 387 column 11 - Warning: <table> lacks "summary" attribute
line 397 column 9 - Warning: <table> lacks "summary" attribute
line 401 column 22 - Warning: <img> lacks "alt" attribute
line 401 column 63 - Warning: <img> lacks "alt" attribute
line 401 column 112 - Warning: <img> lacks "alt" attribute
line 401 column 162 - Warning: <img> lacks "alt" attribute
line 408 column 15 - Warning: <img> lacks "alt" attribute
line 411 column 11 - Warning: <table> lacks "summary" attribute
line 421 column 9 - Warning: <table> lacks "summary" attribute
line 425 column 22 - Warning: <img> lacks "alt" attribute
line 425 column 63 - Warning: <img> lacks "alt" attribute
line 425 column 112 - Warning: <img> lacks "alt" attribute
line 425 column 162 - Warning: <img> lacks "alt" attribute
line 432 column 15 - Warning: <img> lacks "alt" attribute
line 435 column 11 - Warning: <table> lacks "summary" attribute
line 447 column 9 - Warning: <table> lacks "summary" attribute
line 451 column 22 - Warning: <img> lacks "alt" attribute
line 451 column 63 - Warning: <img> lacks "alt" attribute
line 451 column 112 - Warning: <img> lacks "alt" attribute
line 451 column 162 - Warning: <img> lacks "alt" attribute
line 458 column 15 - Warning: <img> lacks "alt" attribute
line 461 column 11 - Warning: <table> lacks "summary" attribute
line 475 column 9 - Warning: <table> lacks "summary" attribute
line 479 column 22 - Warning: <img> lacks "alt" attribute
line 479 column 63 - Warning: <img> lacks "alt" attribute
line 479 column 112 - Warning: <img> lacks "alt" attribute
line 479 column 162 - Warning: <img> lacks "alt" attribute
line 486 column 15 - Warning: <img> lacks "alt" attribute
line 489 column 11 - Warning: <table> lacks "summary" attribute
line 620 column 9 - Warning: <table> lacks "summary" attribute
line 624 column 22 - Warning: <img> lacks "alt" attribute
line 624 column 63 - Warning: <img> lacks "alt" attribute
line 624 column 112 - Warning: <img> lacks "alt" attribute
line 624 column 162 - Warning: <img> lacks "alt" attribute
line 631 column 15 - Warning: <img> lacks "alt" attribute
line 634 column 11 - Warning: <table> lacks "summary" attribute
line 644 column 9 - Warning: <table> lacks "summary" attribute
line 648 column 22 - Warning: <img> lacks "alt" attribute
line 648 column 63 - Warning: <img> lacks "alt" attribute
line 648 column 112 - Warning: <img> lacks "alt" attribute
line 648 column 162 - Warning: <img> lacks "alt" attribute
line 655 column 15 - Warning: <img> lacks "alt" attribute
line 658 column 11 - Warning: <table> lacks "summary" attribute
line 668 column 9 - Warning: <table> lacks "summary" attribute
line 672 column 22 - Warning: <img> lacks "alt" attribute
line 672 column 63 - Warning: <img> lacks "alt" attribute
line 672 column 112 - Warning: <img> lacks "alt" attribute
line 672 column 162 - Warning: <img> lacks "alt" attribute
line 679 column 15 - Warning: <img> lacks "alt" attribute
line 682 column 11 - Warning: <table> lacks "summary" attribute
line 701 column 9 - Warning: <table> lacks "summary" attribute
line 705 column 22 - Warning: <img> lacks "alt" attribute
line 705 column 63 - Warning: <img> lacks "alt" attribute
line 705 column 112 - Warning: <img> lacks "alt" attribute
line 705 column 162 - Warning: <img> lacks "alt" attribute
line 712 column 15 - Warning: <img> lacks "alt" attribute
line 715 column 11 - Warning: <table> lacks "summary" attribute
line 725 column 9 - Warning: <table> lacks "summary" attribute
line 729 column 22 - Warning: <img> lacks "alt" attribute
line 729 column 63 - Warning: <img> lacks "alt" attribute
line 729 column 112 - Warning: <img> lacks "alt" attribute
line 729 column 162 - Warning: <img> lacks "alt" attribute
line 736 column 15 - Warning: <img> lacks "alt" attribute
line 739 column 11 - Warning: <table> lacks "summary" attribute
line 765 column 9 - Warning: <table> lacks "summary" attribute
line 769 column 22 - Warning: <img> lacks "alt" attribute
line 769 column 63 - Warning: <img> lacks "alt" attribute
line 769 column 112 - Warning: <img> lacks "alt" attribute
line 769 column 162 - Warning: <img> lacks "alt" attribute
line 776 column 15 - Warning: <img> lacks "alt" attribute
line 779 column 11 - Warning: <table> lacks "summary" attribute
line 791 column 9 - Warning: <table> lacks "summary" attribute
line 795 column 22 - Warning: <img> lacks "alt" attribute
line 795 column 63 - Warning: <img> lacks "alt" attribute
line 795 column 112 - Warning: <img> lacks "alt" attribute
line 795 column 162 - Warning: <img> lacks "alt" attribute
line 802 column 15 - Warning: <img> lacks "alt" attribute
line 805 column 11 - Warning: <table> lacks "summary" attribute
line 146 column 17 - Warning: <table> lacks "summary" attribute
line 817 column 17 - Warning: <table> lacks "summary" attribute
line 819 column 17 - Warning: <table> lacks "summary" attribute
line 825 column 1 - Warning: <img> lacks "alt" attribute
line 826 column 1 - Warning: <img> lacks "alt" attribute
line 827 column 1 - Warning: <img> lacks "alt" attribute
line 834 column 9 - Warning: <table> lacks "summary" attribute
line 836 column 25 - Warning: <img> lacks "alt" attribute
line 866 column 17 - Warning: <table> lacks "summary" attribute
line 141 column 135 - Warning: trimming empty <font>
line 143 column 231 - Warning: trimming empty <font>
line 789 column 15 - Warning: trimming empty <tr>
line 817 column 231 - Warning: trimming empty <font>
line 819 column 135 - Warning: trimming empty <font>
line 846 column 105 - Warning: trimming empty <font>
line 153 column 11 - Warning: <a> cannot copy name attribute to id
line 177 column 11 - Warning: <a> cannot copy name attribute to id
line 205 column 11 - Warning: <a> cannot copy name attribute to id
line 235 column 11 - Warning: <a> cannot copy name attribute to id
line 261 column 11 - Warning: <a> cannot copy name attribute to id
line 295 column 11 - Warning: <a> cannot copy name attribute to id
line 325 column 11 - Warning: <a> cannot copy name attribute to id
line 351 column 11 - Warning: <a> cannot copy name attribute to id
line 375 column 11 - Warning: <a> cannot copy name attribute to id
line 399 column 11 - Warning: <a> cannot copy name attribute to id
line 423 column 11 - Warning: <a> cannot copy name attribute to id
line 449 column 11 - Warning: <a> cannot copy name attribute to id
line 477 column 11 - Warning: <a> cannot copy name attribute to id
line 622 column 11 - Warning: <a> cannot copy name attribute to id
line 646 column 11 - Warning: <a> cannot copy name attribute to id
line 670 column 11 - Warning: <a> cannot copy name attribute to id
line 703 column 11 - Warning: <a> cannot copy name attribute to id
line 727 column 11 - Warning: <a> cannot copy name attribute to id
line 767 column 11 - Warning: <a> cannot copy name attribute to id
line 793 column 11 - Warning: <a> cannot copy name attribute to id
Info: Document content looks like HTML Proprietary
Info: No system identifier in emitted doctype
332 warnings, 0 errors were found!


The table summary attribute should be used to describe
the table structure. It is very helpful for people using
non-visual browsers. The scope and headers attributes for
table cells are useful for specifying which headers apply
to each table cell, enabling non-visual browsers to provide
a meaningful context for each cell.

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 may also want to try
"http://www.cast.org/bobby/" which is a free Web-based
service for checking URLs for accessibility.

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.

To learn more about HTML Tidy see http://tidy.sourceforge.net
Please fill bug reports and queries using the "tracker" on the Tidy web site.
Additionally, questions can be sent to html-tidy@w3.org
HTML and CSS specifications are available from http://www.w3.org/
Lobby your company to join W3C, see http://www.w3.org/Consortium