Register - Login
Views: 99364343
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-23-22 02:29:01 PM
Jul - Posts by xdaniel
Pages: 1 2 3 4 5 6 7 8 9 10 ... 41 42 43 44 45 46 47 48 49 50
xdaniel
980
Level: 64


Posts: 1/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 12-04-08 01:02:44 PM, in MariOZMAV - a Super Mario 64 level viewer (last edited by xdaniel at 01-14-09 06:09 PM) Link
Hi there,

to give a short introduction, I'm xdaniel, a ROM hacker & translator from Germany, currently working mainly on a few N64-related things, all of them being level, or more generically model/geometry viewers. The one I'd like to post about here was the fourth started - first being one for Zelda OoT and MM maps, second for Starfox 64 models, third works on RAM dumps of Smash Bros. and Neon Genesis Evangelion -, but is already the second, or possibly even farthest along of the bunch.

Anyway, this is "MariOZMAV", a stupid pun on the base of them all, the Zelda viewer OZMAV (OpenGL Zelda Map Viewer).



It's coded in C, uses - as per the acronym - OpenGL for 3D rendering and reads all data from a Mario 64 ROM expanded by VL-Tone's ROM Extender. The RSP Display List interpreter is pretty complete - SETGEOMETRYMODE is giving me a hard time, tho, in regards to en-/disabling lighting and such, so that part is ignored in this build -, the Mario 64-specific stuff, mainly interpreting the Level Layout Script and loading and rendering objects, is, however, still rather incomplete.

Some problems are, for example: Rendering objects that don't have their Display Lists inside the level data itself (meaning those that aren't ex. the tilting bridge-thingy, or the gate in front of the Chain Chomp star, in Bob-Omb's Battlefield) doesn't work and they only show up as small, green and white cubes, the Bowser levels and Rainbow Ride barely show anything at all (they're almost(?) fully made from objects, aren't they?), other levels are missing their ground - ex. Lethal Lava Land's lava -, again others seem to be randomly missing parts of the geometry(??), etc., etc. Some of those are certainly sloppy coding on my part (^^"), with others I just don't understand and/or interpret enough of Mario 64's level layout data yet.

If you still want to give it a try, despite all the flaws I mentioned, the download is below. Just start the program and load up an expanded ROM, it will then render the level specified inside its INI file. Without an INI, it defaults to the first level in the level script pointer list, that being the Haunted House. Once you've run it once, you can change the level ID inside the INI to anything from 0 to 30 - 0 is the Haunted House, 1 is Cool-Cool Mountain, 2 is the castle interior, etc.

...or tl;dr: Mario 64 level viewer, working okay but has some bugs and is rather early overall.

Thus, enough of this wall of text, here we go: http://magicstone.de/dzd/random/ozmav-misc/MariOZMAV_v02.rar

Newer version + source: http://magicstone.de/dzd/random/MariOZMAV_v03_src.rar

Edit: ah, right, in case you're interested in the other viewers I mentioned: http://code.google.com/p/ozmav/ & http://zelda-coalition.net/index.php?topic=109.0
xdaniel
980
Level: 64


Posts: 2/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 12-04-08 01:09:27 PM, in Open-source N64 Display List viewer (last edited by xdaniel at 12-04-08 10:11 AM) Link
Heh, I just posted a thread about yet another branch of OZMAV in the Mario 64 hacking forum, called MariOZMAV - a Mario 64 level viewer, as one might be able to guess. That one isn't at the Google Code SVN yet, but a Windows binary is available in said thread

Edit: Btw, as for Ucode support, there's one supported per branch (they just share the same n64.h definition file, which in turn comes mostly from glN64's source), but OZMAV supports F3DZEX, the Starfox branch F3DEX and MariOZMAV Fast3D.
xdaniel
980
Level: 64


Posts: 3/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 12-05-08 10:52:43 AM, in MariOZMAV - a Super Mario 64 level viewer (last edited by xdaniel at 12-05-08 07:53 AM) Link
Stevoisiak: It's at least very close to it. There's stuff missing, like I said before, the SETGEOMETRYMODE command I mentioned still isn't correctly implemented, but otherwise it's pretty good, I suppose.

messiaen: It's not yet available, but I'm planning to commit it to the Google Code SVN over the weekend. I'll try to get some more stuff in, fix some bugs and then make it available there


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 4/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 12-06-08 05:27:31 PM, in Open-source N64 Display List viewer Link
First of all, this is going to be another wall of text!

Generally speaking, the same microcodes (Ucodes for short) are used across most N64 games, but, as messiaen said, there are variations as well as updated versions. The ones used in the majority of games are:

- Fast3D (or "RSP SW 2.0D"), for example in Mario 64 and Waverace 64
- F3DEX 1.xx, for example in Starfox, Mystical Ninja or Aerogauge
- F3DEX 2.xx, for example in Smash Bros., Evangelion or Sin & Punishment
- F3DZEX, a seemingly specialized version of the former used in the Zelda games and Animal Forest

Additionally, games are able to use multiple Ucodes at once (I seem to recall a LOADUCODE command or similar, I suppose that's used for switching), like ex. Evangelion, which also uses a 2D Ucode called S2DEX. That one is also used by Yoshi's Story and is the reason why both games weren't emulated for quite some time - emulators/video plugins didn't support that Ucode. There are a few more in Nintendo's official set of Ucodes, but those aren't used that often, or at least it appears so (ex. L3DEX). And finally, there are a few customized Ucodes made/modified by the game's developers themselfs, like those used in, if I recall, Star Wars Rouge Squadron and Indiana Jones.

So overall, once a basic RSP Display List interpreter is coded up, it should be rather easy to adapt it for different games as long as that use the same Ucode. That said, loading and finding Display Lists to render is a story in itself. I've used multiple methodes so far to get them:

One would be the way OZMAV does it with Zelda - it opens a pair of extracted files, in this case zmap and zscene files which contain geometry data in Display Lists, actor information (characters, signs, greenery, etc), collision data, different area configurations, etc. Then I scan those files for the Display List start command, 0xDE here (DE000000 xxyyyyyy, the xx/yy being the DList's RAM segment and offset), take note of their offsets and render them. Alternatively, if there aren't any such starting commands (like in zobj files, the actor models I've mentioned, and a few maps) you can check for 0xE7 which is some kinda synchronization command for the RSP which appears in every Display List, but that naturally gives you many, possibly incorrect, entry points for rendering.

Next up is loading, analyzing and rendering from a ROM. Unless there's already documentation about the game out, like luckily with Mario 64, you'll most likely need to tear the ROM open yourself to figure out where ex. level information is stored, which DLists are needed for each level and where they're stored, etc. There are projects for Zelda that read everything out of the ROM, also correctly rendering actors with their real models instead of ugly cubes like I'm doing it.

Finally, which was a wild but logical guess, you can try to use RAM dumps for rendering, like I'm doing it with the Evangelion branch (also works with other games, like I said above, but Eva looks best in it ). Many games have what I'm calling a "Master Display List", which sets up the RAM segments among other things, and then calls each "Geometry Display List", the ones that contain all the drawing commands themselfs, like VTX, TRI1, TRI2, etc. I don't know how to automatically detect that Master DList's offset, so you've got to manually check the RAM dump for a possible offset and try that out in the viewer.

In the end, taking Banjo-Kazooie as an example which is using a F3DEX 1.xx Ucode, after taking a compatible DList interpreter, determining the best method to use for DList finding - there's a file extractor for the game, and actually even a model viewer using them (Bottles' Glasses by cooliscool, also author of the Zelda editor Utility of Time), so I suppose that would be the easiest -, and adapting what might need adapting (file loading, RAM segment stuff), you've got yourself a working model viewer.

...and man, this has become really, really long. I apologize for this giant wall of text here, but I hope it was somewhat interesting and that I haven't forgot anything.


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 5/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 12-06-08 09:35:34 PM, in Open-source N64 Display List viewer Link
Exactly. So theoretically, you could take the Display List interpreter from the Starfox branch, modify the file loading stuff, and have a viewer for ex. Banjo-Kazooie. And speaking of which, I'm gonna try that now just for fun and post the results here


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 6/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 12-22-08 05:55:17 PM, in MariOZMAV - a Super Mario 64 level viewer Link
Sorry for the (very) late reply, I've been quite busy with real life, and pretty much all the spare time I had for programming went into OZMAV itself (which now also loading from ROM, etc.)

VL-Tone: Thanks for your comments and suggestions! After reading your post a while ago, I did make some improvements to the rendering code, ex. regarding the textures with alpha blending (the dark edge around them). Lighting is actually pretty much the weakest point of the entire renderer, among the reasons for that being that I'm using a static light source - the data for that coming from the NeHe OpenGL tutorials that my earliest viewer experiments were heavily based on, and are still using some parts of. That's also why the alpha-blended fences in the Battlefield appear as dark as they do, flat out wrong lighting.

As for the source code to MariOZMAV, I still haven't put it up anywhere, sorry. I will do that after christmas ^^"


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 7/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-13-09 06:42:51 PM, in MariOZMAV - a Super Mario 64 level viewer Link
Hoping that this bump is acceptable...

http://magicstone.de/dzd/random/MariOZMAV_v03_src.rar - the most recent binary and source code to MariOZMAV. It's rather untested and all since I last worked on it, I guess, a week before Christmas, but I hope it'll be useful to someone nonetheless, even if it's just for the F3D interpreter or whatever...

GEOMETRYMODE emulation is enabled but en-/disabling of lighting and especially the vertex coloring in general is still very buggy... There's also a very simple kind of texture cache inplemented, which speeds rendering up by far in most cases, but for some reason also causes certain textures to disappear when enabled (sometimes only one texture in the level, sometimes most of them). The caching function can be enabled or disabled via the INI file. Speaking of which, level switching at runtime still isn't possible and you still have to change the level ID inside the INI.

Well, that's it so far, I guess. If anyone wants to improve upon this program, feel free to do so, since I'm not sure if I will devote much more time to MariOZMAV... While I really do like Mario 64, I just don't have as many fond memories of playing it as of Zelda OoT, for example, and those tend to play quite a big part in most projects and such that I'm working on.


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 8/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-14-09 09:19:10 PM, in MariOZMAV - a Super Mario 64 level viewer Link
Heh, cooliscool's Utility of Time actually already exists for quite some time now - I'm still having a really, really old version from March 2007 here, for example (still called ZAV, with no textures at all) -, and I guess our renderers are almost on par with each other, his having the edge over OZMAV However, even if I could theoretically contribute something to it - which I suppose I can't -, I couldn't contribute actual source code or anything because UoT is written in VB.NET and the last Visual Basic version I had anything to do with was 6.0.

Thinking about it, I'm actually wondering about the current state of UoT. It's been a while since I last heard anything about it or since he last released a build...


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 9/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-21-09 06:27:23 PM, in MariOZMAV - a Super Mario 64 level viewer Link
So, actually I ended up working on this some more... I honestly didn't think I'd do, but here we go:

- GEOMETRYMODE problems seem fixed now - en-/disabling of lighting, normals and vertex colors seem to work properly. Well, the actual lighting, in regards to light position etc., is still bad compared to the real game, but it's better than nothing...
- the texture cache is still broken, possibly even more so than before...
- "Macro 3D Objects" are now being handled much better (or rather, for the first time ever, more or less correctly, they - like most other objects - only show up as little green cubes though
- ...maybe other things, but I'm not sure



No updated download or anything yet, as parts of the code got... well... really messed up. It works, but it's unstable, sometimes crashing without (seemingly) any reason, etc...


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 10/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-22-09 12:05:27 PM, in MariOZMAV - a Super Mario 64 level viewer (last edited by xdaniel at 01-24-09 08:20 PM) Link
VL-Tone:

I'm not 100% sure if my method is correct (wrong light position, semi-broken texturing and all...), but it does look okay... Anyway: By default, I'm having OpenGL's lighting and normalization features enabled, glEnable(GL_LIGHTING) and glEnable(GL_NORMALIZE), and my program's vertex color flag disabled, Renderer_EnableVtxColors = false.

Then, when it comes to interpreting the Display List, I use the flags like this (example being SETGEOMETRYMODE, just think "glDisable" for CLEAR ):

0x00000001: glEnable(GL_DEPTH_TEST) - Z-buffering
0x00000004: Renderer_EnableVtxColors = false - vertex colors
0x00001000: glEnable(GL_CULL_FACE), glCullFace(GL_FRONT) - frontface culling
0x00002000: glEnable(GL_CULL_FACE), glCullFace(GL_BACK) - backface culling
0x00010000: glEnable(GL_FOG) - fog
0x00020000: glEnable(GL_LIGHTING), glEnable(GL_NORMALIZE) - lighting & normalization

As I said, I'm not fully certain that this is the correct way to do it, but it seems to be working so far. Also, I'm not resetting those flags to their initial status after each Display List or anything, I just let them handle the flags. Here's hoping that this helps you somehow

Finally, I've got a question myself. Here's part of MariOZMAV's log for Bob-Omb's Battlefield's level loading script:


(Command type, offset in script, first two bytes of command, description)

LVL: 0x00000264 - 0x1B04 - Start RAM loading sequence

LVL: 0x00000268 - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x07: start: 0x00EF0E37, end: 0x00F025F9, length: 0x000117C2

LVL: 0x00000274 - 0x1A0C - Decompress MIO0 data from ROM to RAM (textures)
- Texture start: 0x00CD4BD1, end: 0x00CE03D1, length: 0x0000B800

LVL: 0x00000280 - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x0A: start: 0x00B35715, end: 0x00B55855, length: 0x00020140

LVL: 0x0000028C - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x05: start: 0x0088C3BC, end: 0x0089D45C, length: 0x000110A0

LVL: 0x00000298 - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x0C: start: 0x0013B5D0, end: 0x0013B910, length: 0x00000340

LVL: 0x000002A4 - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x06: start: 0x00A09934, end: 0x00A2EABC, length: 0x00025188

LVL: 0x000002B0 - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x0D: start: 0x001D7C90, end: 0x001D8310, length: 0x00000680

LVL: 0x000002BC - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x08: start: 0x00A8181C, end: 0x00AAA40C, length: 0x00028BF0

LVL: 0x000002C8 - 0x170C - Copy data from ROM to RAM
- Copying data to segment 0x0F: start: 0x002008D0, end: 0x00201410, length: 0x00000B40

LVL: 0x000002D4 - 0x1D04 - End RAM loading sequence


Now, my problem is that I don't know for what many of those segments are used. As far as I understand them, segment 0x07 is geometry data, 0x09 is texture data (not mentioned as 0x09 since it's covered by the 0x1A command), 0x0E is right inside the level loading script as used by command 0x22 to execute geometry layout commands and... that's about it.

I'm not sure if I'm handling any other segments at the moment, but I don't think so. While not referenced above, segment 0x13 is behavior data (as far as I'm aware), and I do remember that one of the loading commands above points to the level's skybox textures, but neither is handled by MariOZMAV yet. I'm guessing that I might be able to access the Display Lists for all the objects that are right now being rendered as the lil' cubes once I understand more of those RAM segments, but... well, I dunno... it's kinda confusing ^^"

EDIT:



More objects are showing up (almost) correctly now, compared to the build of MariOZMAV v0.3 I posted above. Rotation for Macro Objects is non-existant at the moment, but that should be easy to implement...

EDIT 2:

Not really showing much more progress, but anyway: http://magicstone.de/dzd/random/ozmav-misc/v03x2_battlefield.png ~


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 11/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-26-09 06:55:30 PM, in MariOZMAV - a Super Mario 64 level viewer (last edited by xdaniel at 01-26-09 04:01 PM) Link
Ah, thanks! Some modification to the level loading process later, and I'm now interpreting the important parts of the hub script as well, thus filling segments 0x03, 0x04, 0x13, 0x16 and 0x17 as well as executing the geometry layout data for each of the 0x22 commands in it - signs, among multiple other things are now starting to appear. That, however, brings me to the next problem:



What's wrong in that screenshot should be obvious, I guess:

1) All "!" boxes are rendered at once, in the same place, every time one of the boxes appears in a level.

For example, the "!" boxes are object ID 0x89, the 0x22 command loading the geometry - 22 08 00 89 0F 00 06 94 - being at 0x0698 in segment 0x15, which in turn executes 4 Display Lists in segment 0x08... So, how does the game know which one of the 4 Display Lists to use for a given box?

2) Certain objects aren't scaled down to their in-game size, among other things.

The sign in the screenshot above is way too big and another sign near the tilting bridge, right after the Chain Chomp is even floating in midair - again the question, how does the game know how to scale those objects properly, and why is said sign floating? (...actually, as I just noticed, it's also floating in Toad's Tool, so at least I'm not the only one who doesn't know, I guess )

Is the data that I'm missing - a Display List ID, additional model scaling and translation information - be coming from either the macro preset or the behavior data of an object? I looked at the macro presets for ex. the "!" boxes, but the parameters in there don't seem to influence ex. which Display List to use or at least I can't see them do it (since they're going from 0x00 to 0x09, for each box type increasing by one, and they're just 4 Display Lists). And behaviors... I don't really understand their data at all for now, gotta read up on that some.

(Goes to check out the thread on behavior scripts pretty much just next to this here...)

EDIT: *cough* geometry layout command 0x1D - "scale polygons command" ^^"


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 12/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-26-09 08:41:33 PM, in MariOZMAV - a Super Mario 64 level viewer Link
Okay, first about the scaling: I've got the 0x1D geometry command in, approximating how to read its parameter bytes based on the signposts - they now show up pretty much like they do in the game, I think. As for the other ways how scaling and positioning might be set or offset... I'll leave those out since it really seems like too much work and all to try and implement them...

Now for the "!" boxes, which I guess I haven't written about clearly enough (ugh, typing and coding while being tired isn't that great of an idea ^^"):

Anyway, what I'm doing right now actually is already rendering all the Display Lists inside one geometry layout script, and using the X, Y and Z position specified by the 0x24 command to render them. This one has 4 almost identical Display Lists - same order and amount of commands, just different texture and vertex offsets - which, I suppose, means that there's one for the red Wing Cap box, one for the green Metal Cap box, one for the blue Vanish Cap box and one for the regular orange box.

So when rendering a 0x89 "!" box object, I end up with all 4 of those Display Lists being rendered instead of just the one of the box type that's actually supposed to be at that place in the level - so when there's a Wing Cap box in Bob-Omb's Battlefield somewhere, the viewer places it at the correct position but renders all four "!" box models instead of just the red one, or if there's a regular orange box with coins or a star inside, it again renders all four models instead of the orange one alone.

I hope this came out a bit clearer ^^"


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 13/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-29-09 07:26:37 PM, in MariOZMAV - a Super Mario 64 level viewer Link
Thanks for the help and advice, but I haven't managed to get the program to render those objects properly... It's not that I don't understand how I should be doing it, but rather that I can't seem to implement that into my existing code without breaking everything - objects not showing up at all, objects still rendering all Display Lists instead of just one, objects only rendering one Display List when they should render multiple, etc. The last one was my third freaking try... Well, gotta rewrite some of that object rendering code, I suppose -.-


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 14/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 04-06-09 04:23:56 PM, in MariOZMAV - a Super Mario 64 level viewer Link
It's been a while since I last posted here, and also since I last worked on MariOZMAV... So, in case someone might be interested in it, here's the (slightly broken) latest source code of the program - I last worked on it late January, the included executable having been built on January 31st, I think the texture cache is still broken, object rendering is still buggy as well, but it's better than nothing...

...anyway, download here: http://magicstone.de/dzd/random/ozmav-misc/mariozmav_latest.rar

Even though I've ceased working on it - actually, no branch of OZMAV is still in the works at the moment -, I still won't mind comments or whatever


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 15/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 05-23-09 12:14:15 PM, in The General Project Screenshot/Videos Thread... Link


Already posted that one at RHDN, but I figured it'll, dunno, fit here better? Anyway, ever being able to edit anything is likely out of the question (just looking at the current codebase), but, if nothing else, it's programming practice or so


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 16/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 10-13-09 07:51:30 PM, in Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) (last edited by xdaniel at 10-13-09 06:00 PM) Link
*randomly drops in*

A question/comment about the SM64 engine not supporting texture combining and such: The SetCombine graphics command (0xFC) which is responsible for such things as multi-texturing, is a shared command between many if not all microcodes, and thus Mario's Fast3D microcode should in theory support everything it allows, too. Actually, if the logs of my old MariOZMAV viewer are to be trusted (and, at least in this case, I do so), Mario 64 does even use the command - not for multi-texturing maybe, but it does use it somehow.

I'm not saying that Mario 64 MUST WITHOUT FAIL!!11 support multi-texturing or other advanced rendering techniques, but I guess it might be worth trying out?

EDIT:

The Zelda OoT Debug ROM's test map imported via messiaen's Wavefront importer, some badly patched together combiner setup lifted from OoT's Hyrule Field's grass and 45 minutes of hacking around:


Two more screenshots: http://magicstone.de/dzd/random/sm64_comb2.png & http://magicstone.de/dzd/random/sm64_comb3.png

Doesn't look pretty, but Mario 64 is able to do multi-texturing. Also, the relevant part of the display list, as MariOZMAV spits it out:

  0x00008858:        F3D_TEXTURE                     [BB000002 FFFFFFFF] -

0x00008860: G_SETTIMG [FD100000 09006000] -
0x00008868: G_SETTILE [F5100000 07000000] -
0x00008870: G_LOADBLOCK [F3000000 073FF100] <unemulated>
0x00008878: G_RDPLOADSYNC [E6000000 00000000] -
0x00008880: G_RDPPIPESYNC [E7000000 00000000] -
0x00008888: G_SETTILE [F5101000 00014050] -
0x00008890: G_SETTILESIZE [F2000000 0007C07C] -
0x00008898: G_SETTIMG [FD100000 09005000] -
0x000088A0: G_SETTILE [F5100100 07000000] -
0x000088A8: G_LOADBLOCK [F3000000 073FF100] <unemulated>
0x000088B0: G_RDPLOADSYNC [E6000000 00000000] -
0x000088B8: G_RDPPIPESYNC [E7000000 00000000] -
0x000088C0: G_SETTILE [F5101100 01014050] -
0x000088C8: G_SETTILESIZE [F2000000 0107C07C] -
0x000088D0: G_SETCOMBINE [FC267E04 1FFCFDF8] <unemulated>
0x000088D8: G_SETPRIMCOLOR [FA000000 FFFFFFFF] -
0x000088E0: <unknown> [FB000000 80808080] -


("unknown" being G_SETENVCOLOR, btw)

Hope this helps somehow and/or... wasn't already known? ^^"


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 17/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 10-18-09 08:36:10 PM, in Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) Link
Originally posted by VL-Tone
Welcome back xdaniel!

The thing is, despite having done a SM64 geometry decoder and an importer in TT64, I don't have a very deep knowledge of the actual GBI commands. Most of the reverse-engineering I did was through deductions and experimentation. So I'm not sure I understand how this SetCombine command works and how did you use it in your example. One thing I know is that what the Banjo Kazooie engine seems able to do is use two textured polygon layers and fade between them at the polygon level (not the texture level). It's kind of like they used vertex coloring but with an alpha channel.


With the fading in BK you describe, do you mean ex. the fade-out at the level edge that can be seen in the Bottles' Glasses screenshot you've posted above, http://img26.imageshack.us/img26/5456/clipboard01jcg.jpg ? If it's that, I'm pretty sure that this actually isn't created by the combiner, because Bottles' Glasses doesn't even emulate it (as far as I can see from the program's source that cooliscool released some time ago).

Also, something I've been working on for a few days now: http://z64.spinout182.com/index.php?topic=391.0 - it's a tool that allows experimenting with and previewing combiner setups. Might be useful if anyone wants to mess with the combiner or so

btw, another multi-texturing experiment, this time using Flatworld as the base (which is way easier to work with instead of an imported Wavefront model in this case): http://magicstone.de/dzd/random/sm64_newcomb.png


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 18/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 10-21-09 03:52:13 PM, in Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) Link
At least Wave Race 64's non-Rumble versions (that one's F3DEX 1.23) and that early Shogi game use Fast3D as well.

Btw, a thought I've just had, at least in regards to porting levels from other N64 games to Mario 64: What about using the source game's original Display Lists as far as possible, converting the commands and syntax to Fast3D? The one big problem I'm seeing here is the differences in vertex cache size, as messiaen mentioned, with VTX and TRIx commands having to be recalculated somehow.

Collision data might also be a problem (a smaller one), but otherwise this could end up being way more accurate than exporting from an N64 game, via a Wavefront object, and then reimporting it in a different game.


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 19/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-29-10 08:47:16 PM, in Samus Aran in OOT! (I'm completely kidding I swear!) Link
Originally posted by messiaen
Originally posted by Peardian
That's pretty neat. I'd love to see it with the proper shading figured out.


Though I'm more waiting on a model exporter, personally.


xdaniel's OZMAV can export some models in the game to the .obj format (with some problems though), but probably not animated models.


There are problems with dumping to .obj files in the most recent revisions of the program, tho - use r76 for the time being. And yeah, since it can only load maps, it can only export those.


____________________
cu xdaniel
xdaniel
980
Level: 64


Posts: 20/982
EXP: 2151467
For next: 62630

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 16 days
Last activity: 7 hours

Posted on 01-29-10 09:27:21 PM, in The General Project Screenshot/Videos Thread... Link
<object width="425" height="344"><embed src="http://www.youtube.com/v/UCcwhScJhjo&hl=de_DE&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Not done via .obj model files.


____________________
cu xdaniel
Pages: 1 2 3 4 5 6 7 8 9 10 ... 41 42 43 44 45 46 47 48 49 50
Jul - Posts by xdaniel


Rusted Logic

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

24 database queries, 33 query cache hits.
Query execution time:  0.069884 seconds
Script execution time:  0.041459 seconds
Total render time:  0.111343 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 134 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 97 - Warning: unescaped & or unknown entity "&page"
line 149 column 130 - Warning: unescaped & or unknown entity "&page"
line 149 column 163 - Warning: unescaped & or unknown entity "&page"
line 149 column 196 - Warning: unescaped & or unknown entity "&page"
line 149 column 229 - Warning: unescaped & or unknown entity "&page"
line 149 column 262 - 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 399 - Warning: unescaped & or unknown entity "&page"
line 149 column 434 - Warning: unescaped & or unknown entity "&page"
line 149 column 469 - Warning: unescaped & or unknown entity "&page"
line 149 column 504 - Warning: unescaped & or unknown entity "&page"
line 149 column 539 - Warning: unescaped & or unknown entity "&page"
line 149 column 574 - Warning: unescaped & or unknown entity "&page"
line 149 column 609 - Warning: unescaped & or unknown entity "&page"
line 149 column 644 - Warning: unescaped & or unknown entity "&page"
line 149 column 679 - Warning: unescaped & or unknown entity "&page"
line 149 column 714 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 751 - 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 202 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 204 column 9 - Warning: missing <tr>
line 222 column 13 - Warning: missing <tr>
line 231 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 233 column 9 - Warning: missing <tr>
line 251 column 13 - Warning: missing <tr>
line 261 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 263 column 9 - Warning: missing <tr>
line 281 column 13 - Warning: missing <tr>
line 310 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 312 column 9 - Warning: missing <tr>
line 330 column 13 - Warning: missing <tr>
line 338 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 340 column 9 - Warning: missing <tr>
line 358 column 13 - Warning: missing <tr>
line 370 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 372 column 9 - Warning: missing <tr>
line 390 column 13 - Warning: missing <tr>
line 404 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 406 column 9 - Warning: missing <tr>
line 424 column 13 - Warning: missing <tr>
line 434 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 436 column 9 - Warning: missing <tr>
line 454 column 13 - Warning: missing <tr>
line 471 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 473 column 9 - Warning: missing <tr>
line 491 column 13 - Warning: missing <tr>
line 561 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 563 column 9 - Warning: missing <tr>
line 581 column 13 - Warning: missing <tr>
line 607 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 609 column 9 - Warning: missing <tr>
line 627 column 13 - Warning: missing <tr>
line 643 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 645 column 9 - Warning: missing <tr>
line 663 column 13 - Warning: missing <tr>
line 671 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 673 column 9 - Warning: missing <tr>
line 691 column 13 - Warning: missing <tr>
line 703 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 705 column 9 - Warning: missing <tr>
line 723 column 13 - Warning: missing <tr>
line 733 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 735 column 9 - Warning: missing <tr>
line 753 column 13 - Warning: missing <tr>
line 795 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 797 column 9 - Warning: missing <tr>
line 815 column 13 - Warning: missing <tr>
line 831 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 833 column 9 - Warning: missing <tr>
line 851 column 13 - Warning: missing <tr>
line 863 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 865 column 9 - Warning: missing <tr>
line 883 column 13 - Warning: missing <tr>
line 898 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 900 column 9 - Warning: missing <tr>
line 918 column 13 - Warning: missing <tr>
line 921 column 176 - Warning: unescaped & or unknown entity "&hl"
line 921 column 185 - Warning: unescaped & or unknown entity "&fs"
line 921 column 113 - Warning: discarding unexpected <param>
line 921 column 193 - Warning: discarding unexpected </param>
line 921 column 201 - Warning: discarding unexpected <param>
line 921 column 244 - Warning: discarding unexpected </param>
line 921 column 252 - Warning: discarding unexpected <param>
line 921 column 299 - Warning: discarding unexpected </param>
line 921 column 358 - Warning: unescaped & or unknown entity "&hl"
line 921 column 367 - Warning: unescaped & or unknown entity "&fs"
line 928 column 17 - Warning: missing <tr>
line 928 column 17 - Warning: discarding unexpected <table>
line 931 column 35 - Warning: missing <tr>
line 931 column 97 - Warning: unescaped & or unknown entity "&page"
line 931 column 130 - Warning: unescaped & or unknown entity "&page"
line 931 column 163 - Warning: unescaped & or unknown entity "&page"
line 931 column 196 - Warning: unescaped & or unknown entity "&page"
line 931 column 229 - Warning: unescaped & or unknown entity "&page"
line 931 column 262 - Warning: unescaped & or unknown entity "&page"
line 931 column 295 - Warning: unescaped & or unknown entity "&page"
line 931 column 328 - Warning: unescaped & or unknown entity "&page"
line 931 column 361 - Warning: unescaped & or unknown entity "&page"
line 931 column 399 - Warning: unescaped & or unknown entity "&page"
line 931 column 434 - Warning: unescaped & or unknown entity "&page"
line 931 column 469 - Warning: unescaped & or unknown entity "&page"
line 931 column 504 - Warning: unescaped & or unknown entity "&page"
line 931 column 539 - Warning: unescaped & or unknown entity "&page"
line 931 column 574 - Warning: unescaped & or unknown entity "&page"
line 931 column 609 - Warning: unescaped & or unknown entity "&page"
line 931 column 644 - Warning: unescaped & or unknown entity "&page"
line 931 column 679 - Warning: unescaped & or unknown entity "&page"
line 931 column 714 - Warning: unescaped & or unknown entity "&page"
line 931 column 50 - Warning: missing </font> before </td>
line 931 column 751 - Warning: missing </font> before </table>
line 933 column 35 - Warning: missing <tr>
line 933 column 50 - Warning: missing </font> before </td>
line 933 column 134 - Warning: missing </font> before </table>
line 935 column 17 - Warning: discarding unexpected </textarea>
line 935 column 28 - Warning: discarding unexpected </form>
line 935 column 35 - Warning: discarding unexpected </embed>
line 935 column 43 - Warning: discarding unexpected </noembed>
line 935 column 53 - Warning: discarding unexpected </noscript>
line 935 column 64 - Warning: discarding unexpected </noembed>
line 935 column 74 - Warning: discarding unexpected </embed>
line 935 column 82 - Warning: discarding unexpected </table>
line 935 column 90 - Warning: discarding unexpected </table>
line 937 column 9 - Warning: missing </font> before <table>
line 949 column 25 - Warning: discarding unexpected </font>
line 958 column 58 - Warning: discarding unexpected </font>
line 936 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 160 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 15 - Warning: <img> lacks "alt" attribute
line 160 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 58 - Warning: <img> lacks "alt" attribute
line 160 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 101 - Warning: <img> lacks "alt" attribute
line 160 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 144 - Warning: <img> lacks "alt" attribute
line 160 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 187 - Warning: <img> lacks "alt" attribute
line 160 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 230 - Warning: <img> lacks "alt" attribute
line 160 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 273 - Warning: <img> lacks "alt" attribute
line 160 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 316 - Warning: <img> lacks "alt" attribute
line 160 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 359 - Warning: <img> lacks "alt" attribute
line 160 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 160 column 402 - 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 162 column 11 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 185 column 705 - Warning: <img> lacks "alt" attribute
line 206 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 15 - Warning: <img> lacks "alt" attribute
line 206 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 58 - Warning: <img> lacks "alt" attribute
line 206 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 101 - Warning: <img> lacks "alt" attribute
line 206 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 144 - Warning: <img> lacks "alt" attribute
line 206 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 187 - Warning: <img> lacks "alt" attribute
line 206 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 230 - Warning: <img> lacks "alt" attribute
line 206 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 273 - Warning: <img> lacks "alt" attribute
line 206 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 316 - Warning: <img> lacks "alt" attribute
line 206 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 359 - Warning: <img> lacks "alt" attribute
line 206 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 206 column 402 - Warning: <img> lacks "alt" 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 208 column 11 - Warning: <img> lacks "alt" attribute
line 218 column 15 - Warning: <img> lacks "alt" attribute
line 225 column 340 - Warning: <img> proprietary attribute value "absmiddle"
line 225 column 340 - Warning: <img> lacks "alt" attribute
line 235 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 15 - Warning: <img> lacks "alt" attribute
line 235 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 58 - Warning: <img> lacks "alt" attribute
line 235 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 101 - Warning: <img> lacks "alt" attribute
line 235 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 144 - Warning: <img> lacks "alt" attribute
line 235 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 187 - Warning: <img> lacks "alt" attribute
line 235 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 230 - Warning: <img> lacks "alt" attribute
line 235 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 273 - Warning: <img> lacks "alt" attribute
line 235 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 316 - Warning: <img> lacks "alt" attribute
line 235 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 359 - Warning: <img> lacks "alt" attribute
line 235 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 235 column 402 - Warning: <img> lacks "alt" attribute
line 236 column 22 - Warning: <img> lacks "alt" attribute
line 236 column 63 - Warning: <img> lacks "alt" attribute
line 236 column 112 - Warning: <img> lacks "alt" attribute
line 236 column 162 - Warning: <img> lacks "alt" attribute
line 237 column 11 - Warning: <img> lacks "alt" attribute
line 247 column 15 - Warning: <img> lacks "alt" attribute
line 256 column 473 - Warning: <img> proprietary attribute value "absmiddle"
line 256 column 473 - Warning: <img> lacks "alt" attribute
line 265 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 15 - Warning: <img> lacks "alt" attribute
line 265 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 58 - Warning: <img> lacks "alt" attribute
line 265 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 101 - Warning: <img> lacks "alt" attribute
line 265 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 144 - Warning: <img> lacks "alt" attribute
line 265 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 187 - Warning: <img> lacks "alt" attribute
line 265 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 230 - Warning: <img> lacks "alt" attribute
line 265 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 273 - Warning: <img> lacks "alt" attribute
line 265 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 316 - Warning: <img> lacks "alt" attribute
line 265 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 359 - Warning: <img> lacks "alt" attribute
line 265 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 265 column 402 - Warning: <img> lacks "alt" attribute
line 266 column 22 - Warning: <img> lacks "alt" attribute
line 266 column 63 - Warning: <img> lacks "alt" attribute
line 266 column 112 - Warning: <img> lacks "alt" attribute
line 266 column 162 - Warning: <img> lacks "alt" attribute
line 267 column 11 - Warning: <img> lacks "alt" attribute
line 277 column 15 - Warning: <img> lacks "alt" attribute
line 301 column 3144 - Warning: <img> proprietary attribute value "absmiddle"
line 301 column 3144 - Warning: <img> lacks "alt" attribute
line 314 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 15 - Warning: <img> lacks "alt" attribute
line 314 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 58 - Warning: <img> lacks "alt" attribute
line 314 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 101 - Warning: <img> lacks "alt" attribute
line 314 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 144 - Warning: <img> lacks "alt" attribute
line 314 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 187 - Warning: <img> lacks "alt" attribute
line 314 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 230 - Warning: <img> lacks "alt" attribute
line 314 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 273 - Warning: <img> lacks "alt" attribute
line 314 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 316 - Warning: <img> lacks "alt" attribute
line 314 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 359 - Warning: <img> lacks "alt" attribute
line 314 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 314 column 402 - Warning: <img> lacks "alt" attribute
line 315 column 22 - Warning: <img> lacks "alt" attribute
line 315 column 63 - Warning: <img> lacks "alt" attribute
line 315 column 112 - Warning: <img> lacks "alt" attribute
line 315 column 162 - Warning: <img> lacks "alt" attribute
line 316 column 11 - Warning: <img> lacks "alt" attribute
line 326 column 15 - Warning: <img> lacks "alt" attribute
line 333 column 326 - Warning: <img> proprietary attribute value "absmiddle"
line 333 column 326 - Warning: <img> lacks "alt" attribute
line 342 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 15 - Warning: <img> lacks "alt" attribute
line 342 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 58 - Warning: <img> lacks "alt" attribute
line 342 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 101 - Warning: <img> lacks "alt" attribute
line 342 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 144 - Warning: <img> lacks "alt" attribute
line 342 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 187 - Warning: <img> lacks "alt" attribute
line 342 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 230 - Warning: <img> lacks "alt" attribute
line 342 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 273 - Warning: <img> lacks "alt" attribute
line 342 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 316 - Warning: <img> lacks "alt" attribute
line 342 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 359 - Warning: <img> lacks "alt" attribute
line 342 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 342 column 402 - Warning: <img> lacks "alt" attribute
line 343 column 22 - Warning: <img> lacks "alt" attribute
line 343 column 63 - Warning: <img> lacks "alt" attribute
line 343 column 112 - Warning: <img> lacks "alt" attribute
line 343 column 162 - Warning: <img> lacks "alt" attribute
line 344 column 11 - Warning: <img> lacks "alt" attribute
line 354 column 15 - Warning: <img> lacks "alt" attribute
line 374 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 15 - Warning: <img> lacks "alt" attribute
line 374 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 58 - Warning: <img> lacks "alt" attribute
line 374 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 101 - Warning: <img> lacks "alt" attribute
line 374 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 144 - Warning: <img> lacks "alt" attribute
line 374 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 187 - Warning: <img> lacks "alt" attribute
line 374 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 230 - Warning: <img> lacks "alt" attribute
line 374 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 273 - Warning: <img> lacks "alt" attribute
line 374 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 316 - Warning: <img> lacks "alt" attribute
line 374 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 359 - Warning: <img> lacks "alt" attribute
line 374 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 402 - Warning: <img> lacks "alt" attribute
line 375 column 22 - Warning: <img> lacks "alt" attribute
line 375 column 63 - Warning: <img> lacks "alt" attribute
line 375 column 112 - Warning: <img> lacks "alt" attribute
line 375 column 162 - Warning: <img> lacks "alt" attribute
line 376 column 11 - Warning: <img> lacks "alt" attribute
line 386 column 15 - Warning: <img> lacks "alt" attribute
line 408 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 15 - Warning: <img> lacks "alt" attribute
line 408 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 58 - Warning: <img> lacks "alt" attribute
line 408 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 101 - Warning: <img> lacks "alt" attribute
line 408 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 144 - Warning: <img> lacks "alt" attribute
line 408 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 187 - Warning: <img> lacks "alt" attribute
line 408 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 230 - Warning: <img> lacks "alt" attribute
line 408 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 273 - Warning: <img> lacks "alt" attribute
line 408 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 316 - Warning: <img> lacks "alt" attribute
line 408 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 359 - Warning: <img> lacks "alt" attribute
line 408 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 408 column 402 - Warning: <img> lacks "alt" attribute
line 409 column 22 - Warning: <img> lacks "alt" attribute
line 409 column 63 - Warning: <img> lacks "alt" attribute
line 409 column 112 - Warning: <img> lacks "alt" attribute
line 409 column 162 - Warning: <img> lacks "alt" attribute
line 410 column 11 - Warning: <img> lacks "alt" attribute
line 420 column 15 - Warning: <img> lacks "alt" attribute
line 427 column 383 - Warning: <img> proprietary attribute value "absmiddle"
line 427 column 383 - Warning: <img> lacks "alt" attribute
line 438 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 15 - Warning: <img> lacks "alt" attribute
line 438 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 58 - Warning: <img> lacks "alt" attribute
line 438 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 101 - Warning: <img> lacks "alt" attribute
line 438 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 144 - Warning: <img> lacks "alt" attribute
line 438 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 187 - Warning: <img> lacks "alt" attribute
line 438 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 230 - Warning: <img> lacks "alt" attribute
line 438 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 273 - Warning: <img> lacks "alt" attribute
line 438 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 316 - Warning: <img> lacks "alt" attribute
line 438 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 359 - Warning: <img> lacks "alt" attribute
line 438 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 438 column 402 - Warning: <img> lacks "alt" attribute
line 439 column 22 - Warning: <img> lacks "alt" attribute
line 439 column 63 - Warning: <img> lacks "alt" attribute
line 439 column 112 - Warning: <img> lacks "alt" attribute
line 439 column 162 - Warning: <img> lacks "alt" attribute
line 440 column 11 - Warning: <img> lacks "alt" attribute
line 450 column 15 - Warning: <img> lacks "alt" attribute
line 464 column 762 - Warning: <img> lacks "alt" attribute
line 475 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 15 - Warning: <img> lacks "alt" attribute
line 475 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 58 - Warning: <img> lacks "alt" attribute
line 475 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 101 - Warning: <img> lacks "alt" attribute
line 475 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 144 - Warning: <img> lacks "alt" attribute
line 475 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 187 - Warning: <img> lacks "alt" attribute
line 475 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 230 - Warning: <img> lacks "alt" attribute
line 475 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 273 - Warning: <img> lacks "alt" attribute
line 475 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 316 - Warning: <img> lacks "alt" attribute
line 475 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 359 - Warning: <img> lacks "alt" attribute
line 475 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 475 column 402 - Warning: <img> lacks "alt" attribute
line 476 column 22 - Warning: <img> lacks "alt" attribute
line 476 column 63 - Warning: <img> lacks "alt" attribute
line 476 column 112 - Warning: <img> lacks "alt" attribute
line 476 column 162 - Warning: <img> lacks "alt" attribute
line 477 column 11 - Warning: <img> lacks "alt" attribute
line 487 column 15 - Warning: <img> lacks "alt" attribute
line 498 column 580 - Warning: <img> proprietary attribute value "absmiddle"
line 498 column 580 - Warning: <img> lacks "alt" attribute
line 507 column 1366 - Warning: <img> proprietary attribute value "absmiddle"
line 507 column 1366 - Warning: <img> lacks "alt" attribute
line 550 column 4147 - Warning: <img> lacks "alt" attribute
line 565 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 15 - Warning: <img> lacks "alt" attribute
line 565 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 58 - Warning: <img> lacks "alt" attribute
line 565 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 101 - Warning: <img> lacks "alt" attribute
line 565 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 144 - Warning: <img> lacks "alt" attribute
line 565 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 187 - Warning: <img> lacks "alt" attribute
line 565 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 230 - Warning: <img> lacks "alt" attribute
line 565 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 273 - Warning: <img> lacks "alt" attribute
line 565 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 316 - Warning: <img> lacks "alt" attribute
line 565 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 359 - Warning: <img> lacks "alt" attribute
line 565 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 565 column 402 - Warning: <img> lacks "alt" attribute
line 566 column 22 - Warning: <img> lacks "alt" attribute
line 566 column 63 - Warning: <img> lacks "alt" attribute
line 566 column 112 - Warning: <img> lacks "alt" attribute
line 566 column 162 - Warning: <img> lacks "alt" attribute
line 567 column 11 - Warning: <img> lacks "alt" attribute
line 577 column 15 - Warning: <img> lacks "alt" attribute
line 586 column 465 - Warning: <img> lacks "alt" attribute
line 596 column 1529 - Warning: <img> proprietary attribute value "absmiddle"
line 596 column 1529 - Warning: <img> lacks "alt" attribute
line 611 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 15 - Warning: <img> lacks "alt" attribute
line 611 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 58 - Warning: <img> lacks "alt" attribute
line 611 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 101 - Warning: <img> lacks "alt" attribute
line 611 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 144 - Warning: <img> lacks "alt" attribute
line 611 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 187 - Warning: <img> lacks "alt" attribute
line 611 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 230 - Warning: <img> lacks "alt" attribute
line 611 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 273 - Warning: <img> lacks "alt" attribute
line 611 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 316 - Warning: <img> lacks "alt" attribute
line 611 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 359 - Warning: <img> lacks "alt" attribute
line 611 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 611 column 402 - Warning: <img> lacks "alt" attribute
line 612 column 22 - Warning: <img> lacks "alt" attribute
line 612 column 63 - Warning: <img> lacks "alt" attribute
line 612 column 112 - Warning: <img> lacks "alt" attribute
line 612 column 162 - Warning: <img> lacks "alt" attribute
line 613 column 11 - Warning: <img> lacks "alt" attribute
line 623 column 15 - Warning: <img> lacks "alt" attribute
line 647 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 15 - Warning: <img> lacks "alt" attribute
line 647 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 58 - Warning: <img> lacks "alt" attribute
line 647 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 101 - Warning: <img> lacks "alt" attribute
line 647 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 144 - Warning: <img> lacks "alt" attribute
line 647 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 187 - Warning: <img> lacks "alt" attribute
line 647 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 230 - Warning: <img> lacks "alt" attribute
line 647 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 273 - Warning: <img> lacks "alt" attribute
line 647 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 316 - Warning: <img> lacks "alt" attribute
line 647 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 359 - Warning: <img> lacks "alt" attribute
line 647 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 647 column 402 - Warning: <img> lacks "alt" 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 649 column 11 - Warning: <img> lacks "alt" attribute
line 659 column 15 - Warning: <img> lacks "alt" attribute
line 675 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 15 - Warning: <img> lacks "alt" attribute
line 675 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 58 - Warning: <img> lacks "alt" attribute
line 675 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 101 - Warning: <img> lacks "alt" attribute
line 675 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 144 - Warning: <img> lacks "alt" attribute
line 675 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 187 - Warning: <img> lacks "alt" attribute
line 675 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 230 - Warning: <img> lacks "alt" attribute
line 675 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 273 - Warning: <img> lacks "alt" attribute
line 675 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 316 - Warning: <img> lacks "alt" attribute
line 675 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 359 - Warning: <img> lacks "alt" attribute
line 675 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 675 column 402 - Warning: <img> lacks "alt" attribute
line 676 column 22 - Warning: <img> lacks "alt" attribute
line 676 column 63 - Warning: <img> lacks "alt" attribute
line 676 column 112 - Warning: <img> lacks "alt" attribute
line 676 column 162 - Warning: <img> lacks "alt" attribute
line 677 column 11 - Warning: <img> lacks "alt" attribute
line 687 column 15 - Warning: <img> lacks "alt" attribute
line 698 column 813 - Warning: <img> proprietary attribute value "absmiddle"
line 698 column 813 - Warning: <img> lacks "alt" attribute
line 707 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 15 - Warning: <img> lacks "alt" attribute
line 707 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 58 - Warning: <img> lacks "alt" attribute
line 707 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 101 - Warning: <img> lacks "alt" attribute
line 707 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 144 - Warning: <img> lacks "alt" attribute
line 707 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 187 - Warning: <img> lacks "alt" attribute
line 707 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 230 - Warning: <img> lacks "alt" attribute
line 707 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 273 - Warning: <img> lacks "alt" attribute
line 707 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 316 - Warning: <img> lacks "alt" attribute
line 707 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 359 - Warning: <img> lacks "alt" attribute
line 707 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 707 column 402 - Warning: <img> lacks "alt" attribute
line 708 column 22 - Warning: <img> lacks "alt" attribute
line 708 column 63 - Warning: <img> lacks "alt" attribute
line 708 column 112 - Warning: <img> lacks "alt" attribute
line 708 column 162 - Warning: <img> lacks "alt" attribute
line 709 column 11 - Warning: <img> lacks "alt" attribute
line 719 column 15 - Warning: <img> lacks "alt" attribute
line 726 column 130 - Warning: <img> lacks "alt" attribute
line 728 column 463 - Warning: <img> proprietary attribute value "absmiddle"
line 728 column 463 - Warning: <img> lacks "alt" attribute
line 737 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 15 - Warning: <img> lacks "alt" attribute
line 737 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 58 - Warning: <img> lacks "alt" attribute
line 737 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 101 - Warning: <img> lacks "alt" attribute
line 737 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 144 - Warning: <img> lacks "alt" attribute
line 737 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 187 - Warning: <img> lacks "alt" attribute
line 737 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 230 - Warning: <img> lacks "alt" attribute
line 737 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 273 - Warning: <img> lacks "alt" attribute
line 737 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 316 - Warning: <img> lacks "alt" attribute
line 737 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 359 - Warning: <img> lacks "alt" attribute
line 737 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 737 column 402 - Warning: <img> lacks "alt" attribute
line 738 column 22 - Warning: <img> lacks "alt" attribute
line 738 column 63 - Warning: <img> lacks "alt" attribute
line 738 column 112 - Warning: <img> lacks "alt" attribute
line 738 column 162 - Warning: <img> lacks "alt" attribute
line 739 column 11 - Warning: <img> lacks "alt" attribute
line 749 column 15 - Warning: <img> lacks "alt" attribute
line 766 column 1018 - Warning: <img> lacks "alt" attribute
line 799 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 15 - Warning: <img> lacks "alt" attribute
line 799 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 58 - Warning: <img> lacks "alt" attribute
line 799 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 101 - Warning: <img> lacks "alt" attribute
line 799 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 144 - Warning: <img> lacks "alt" attribute
line 799 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 187 - Warning: <img> lacks "alt" attribute
line 799 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 230 - Warning: <img> lacks "alt" attribute
line 799 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 273 - Warning: <img> lacks "alt" attribute
line 799 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 316 - Warning: <img> lacks "alt" attribute
line 799 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 359 - Warning: <img> lacks "alt" attribute
line 799 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 799 column 402 - Warning: <img> lacks "alt" attribute
line 800 column 22 - Warning: <img> lacks "alt" attribute
line 800 column 63 - Warning: <img> lacks "alt" attribute
line 800 column 112 - Warning: <img> lacks "alt" attribute
line 800 column 162 - Warning: <img> lacks "alt" attribute
line 801 column 11 - Warning: <img> lacks "alt" attribute
line 811 column 15 - Warning: <img> lacks "alt" attribute
line 824 column 1594 - Warning: <img> proprietary attribute value "absmiddle"
line 824 column 1594 - Warning: <img> lacks "alt" attribute
line 835 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 15 - Warning: <img> lacks "alt" attribute
line 835 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 58 - Warning: <img> lacks "alt" attribute
line 835 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 101 - Warning: <img> lacks "alt" attribute
line 835 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 144 - Warning: <img> lacks "alt" attribute
line 835 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 187 - Warning: <img> lacks "alt" attribute
line 835 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 230 - Warning: <img> lacks "alt" attribute
line 835 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 273 - Warning: <img> lacks "alt" attribute
line 835 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 316 - Warning: <img> lacks "alt" attribute
line 835 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 359 - Warning: <img> lacks "alt" attribute
line 835 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 835 column 402 - Warning: <img> lacks "alt" attribute
line 836 column 22 - Warning: <img> lacks "alt" attribute
line 836 column 63 - Warning: <img> lacks "alt" attribute
line 836 column 112 - Warning: <img> lacks "alt" attribute
line 836 column 162 - Warning: <img> lacks "alt" attribute
line 837 column 11 - Warning: <img> lacks "alt" attribute
line 847 column 15 - Warning: <img> lacks "alt" attribute
line 867 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 15 - Warning: <img> lacks "alt" attribute
line 867 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 58 - Warning: <img> lacks "alt" attribute
line 867 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 101 - Warning: <img> lacks "alt" attribute
line 867 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 144 - Warning: <img> lacks "alt" attribute
line 867 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 187 - Warning: <img> lacks "alt" attribute
line 867 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 230 - Warning: <img> lacks "alt" attribute
line 867 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 273 - Warning: <img> lacks "alt" attribute
line 867 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 316 - Warning: <img> lacks "alt" attribute
line 867 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 359 - Warning: <img> lacks "alt" attribute
line 867 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 867 column 402 - Warning: <img> lacks "alt" attribute
line 868 column 22 - Warning: <img> lacks "alt" attribute
line 868 column 63 - Warning: <img> lacks "alt" attribute
line 868 column 112 - Warning: <img> lacks "alt" attribute
line 868 column 162 - Warning: <img> lacks "alt" attribute
line 869 column 11 - Warning: <img> lacks "alt" attribute
line 879 column 15 - Warning: <img> lacks "alt" attribute
line 886 column 304 - Warning: <img> proprietary attribute value "absmiddle"
line 886 column 304 - Warning: <img> lacks "alt" attribute
line 889 column 425 - Warning: <img> proprietary attribute value "absmiddle"
line 889 column 425 - Warning: <img> lacks "alt" attribute
line 902 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 15 - Warning: <img> lacks "alt" attribute
line 902 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 58 - Warning: <img> lacks "alt" attribute
line 902 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 101 - Warning: <img> lacks "alt" attribute
line 902 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 144 - Warning: <img> lacks "alt" attribute
line 902 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 187 - Warning: <img> lacks "alt" attribute
line 902 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 230 - Warning: <img> lacks "alt" attribute
line 902 column 273 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 273 - Warning: <img> lacks "alt" attribute
line 902 column 316 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 316 - Warning: <img> lacks "alt" attribute
line 902 column 359 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 359 - Warning: <img> lacks "alt" attribute
line 902 column 402 - Warning: <img> proprietary attribute value "absmiddle"
line 902 column 402 - Warning: <img> lacks "alt" attribute
line 903 column 22 - Warning: <img> lacks "alt" attribute
line 903 column 63 - Warning: <img> lacks "alt" attribute
line 903 column 112 - Warning: <img> lacks "alt" attribute
line 903 column 162 - Warning: <img> lacks "alt" attribute
line 904 column 11 - Warning: <img> lacks "alt" attribute
line 914 column 15 - Warning: <img> lacks "alt" attribute
line 943 column 25 - Warning: <img> lacks "alt" attribute
line 948 column 267 - Warning: <img> lacks "alt" attribute
line 147 column 134 - Warning: trimming empty <font>
line 149 column 751 - Warning: trimming empty <font>
line 928 column 17 - Warning: trimming empty <tr>
line 931 column 751 - Warning: trimming empty <font>
line 933 column 134 - 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 223 column 27 - Warning: <nobr> is not approved by W3C
line 252 column 27 - Warning: <nobr> is not approved by W3C
line 282 column 27 - Warning: <nobr> is not approved by W3C
line 331 column 27 - Warning: <nobr> is not approved by W3C
line 359 column 27 - Warning: <nobr> is not approved by W3C
line 391 column 27 - Warning: <nobr> is not approved by W3C
line 425 column 27 - Warning: <nobr> is not approved by W3C
line 455 column 27 - Warning: <nobr> is not approved by W3C
line 492 column 27 - Warning: <nobr> is not approved by W3C
line 582 column 27 - Warning: <nobr> is not approved by W3C
line 628 column 27 - Warning: <nobr> is not approved by W3C
line 664 column 27 - Warning: <nobr> is not approved by W3C
line 692 column 27 - Warning: <nobr> is not approved by W3C
line 724 column 27 - Warning: <nobr> is not approved by W3C
line 754 column 27 - Warning: <nobr> is not approved by W3C
line 816 column 27 - Warning: <nobr> is not approved by W3C
line 852 column 27 - Warning: <nobr> is not approved by W3C
line 884 column 27 - Warning: <nobr> is not approved by W3C
line 919 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 728 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