Register - Login
Views: 99396281
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 01:08:00 PM
Jul - SM64 Hacking (Archive) - Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) New poll - New thread - Thread closed
Pages: 1 2 3 4 5 6 7 8 9 10 11 ... 19 20 21 22 23 24 25 26 27 28 Next newer thread | Next older thread
Polygon model importer, how soon do you want it?
Please vote or be transformed into Walluigi!
Now! Even if it means it will be buggy and limited to a single untextured model!
 
11.4%, 14 votes
I could wait a month for more features and textured model import.
 
22.8%, 28 votes
I want all the features you can cram in, even if it means waiting indefinitely!
 
56.9%, 70 votes
You shouldn't have announced anything and released it when ready!
 
4.1%, 5 votes
Me don't care!
 
4.9%, 6 votes
Multi-voting is disabled. 123 users have voted.

VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 417/621
EXP: 1135565
For next: 21554

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 03-29-09 10:45:27 PM Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by Grawly
Don't know how to phrase this, but at any point would we be able to import obj's for the castle walls?


Do you mean replacing the Inside Castle level with a custom level? If so then yes, you'll be able to do this in 0.6b, but I wouldn't recommend it as it's a special level with a tons of dependencies, and you'd have to reproduce entrance/exit warps for every levels, and the painting mechanism is simply too complicated for it to be created by TT64 anytime soon.

If you're asking if we'll be able to use additional custom objects inside the Castle, the answer is not anytime soon. While 0.7b should be able to import .OBJ files as individual objects, it will be only be for custom levels. Adding new objects to existing levels is not as simple as it seems, and most level use almost all RAM so until we make some major changes to the engine so that we can put them into extended RAM (not ROM) it won't be possible.


Originally posted by wwwarea
Wow, the snap shot looks really cool but in this really cool feature, when you make another flat level? Is there going to be away to not make the texture for the flat part not to spread into another level? I mean if theirs away to to make the dessert flat and the texture for the flat part will be sand and Bomb omb battle field, it will still be texture to grass?

Im asking can this feature do that? If so then it looks like it will be at the bank swapper I think.



Unlike the level polygon texture in Flatworld Battlefield, it won't be shared, it will be embedded in the level data in each custom level slot, so each level can have its own texture independently.
Originally posted by Stevoisiak
Originally posted by M. Bison
Dude, totally. This is THE most user-friendly specific-game-editor I've ever used (Never had a chance to try any general-game-editors, though).

Then you've obviosly never seen lunar magic for SMW, the easiest to use fan-made level editor EVER! But, thats a 2D game, and is off topic. So, will we be able to know if we reach the polygon limit?



That's a good question... I could make it warn you if you reach the ROM space limit of 400k, but a this size the game will probably crash in most cases because of RAM space. It will all depend on which banks are selected. I'll have to calculate the RAM used by default banks + background banks + selected banks + the custom level data and look at how much RAM will be left. That will require some experimentation and time is running out... It is a critical feature though, I'm pretty sure that many users will try to cram high-polygon objects into the game and make it crash if there's no safeguard.

Originally posted by Marioforever45
Progress is looking good so far,I cant wait for the release on April 1,2009


Well please don't kill me if there's a delay of a few days...

____________________
FieryIce

Luigi
Level: 119


Posts: 92/4161
EXP: 18741450
For next: 187841

Since: 12-18-08

From: Chicago

Since last post: 180 days
Last activity: 5 days

Posted on 03-30-09 12:13:00 AM Link
Don't worry if you have to delay it, I'm sure most people can wait a few extra days. Well, at least I can wait... I'd be busy with school anyways.

gamekrazzy
Member
Level: 32


Posts: 44/199
EXP: 194437
For next: 12005

Since: 03-06-09


Since last post: 10.4 years
Last activity: 8.6 years

Posted on 03-30-09 12:53:17 AM Link
XD! school always gets in the way...

____________________
RDX

Level: 32


Posts: 37/198
EXP: 193371
For next: 13071

Since: 02-14-09


Since last post: 10.8 years
Last activity: 10.5 years

Posted on 03-30-09 04:05:01 AM Link
Yeah I'm off for Spring Break next week, so it doesn't matter anyways.

Plus it's not like we're all a bunch of impatient little babies. We can wait.

____________________
Nikodude
User
Level: 9


Posts: 7/10
EXP: 2191
For next: 971

Since: 03-01-09

From: Denmark

Since last post: 13.0 years
Last activity: 12.4 years

Posted on 03-30-09 04:50:12 AM Link
I have got a good idea what about somehow makeing SM64 use the expansion pack?

____________________
Go get some pie!
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 192


Posts: 2340/12211
EXP: 99240920
For next: 632651

Since: 07-03-07

From: 52-2-88-7

Since last post: 7.4 years
Last activity: 7.3 years

Posted on 03-30-09 05:10:19 AM Link

Time/Date

03-29-09 11:10:19pm

Posts

2340

Days Here

635

Level

69
Metal_Man88
Local Moderator
Hint: Wild game engine-altering changes are probably not readily possible or sanely programmable into TT64 at this point.

____________________
Original Layout © Tobias Kelmandia
Stevoisiak
Member
Level: 38


Posts: 232/283
EXP: 345495
For next: 24952

Since: 11-22-07

From: New York, Long Island

Since last post: 12.3 years
Last activity: 5.6 years

Posted on 03-30-09 08:36:49 PM Link
Originally posted by VL-Tone
Originally posted by Marioforever45
Progress is looking good so far,I cant wait for the release on April 1,2009


Well please don't kill me if there's a delay of a few days...

Just link to 2 versions on the site. An unstable beta, and the stable one. Many people do that.
Vinnyboiler
Catgirl
Level: 66


Posts: 39/1044
EXP: 2439913
For next: 21938

Since: 12-27-07

From: London, England

Since last post: 7 days
Last activity: 3 days

Posted on 03-30-09 08:57:31 PM (last edited by vinnyboiler at 03-30-09 06:03 PM) Link
Does the floor and model have the same texture or can we apply another texture for the floor.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 418/621
EXP: 1135565
For next: 21554

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 03-31-09 02:11:34 AM Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by Stevoisiak
Just link to 2 versions on the site. An unstable beta, and the stable one. Many people do that.


That's what I first wanted to do last week, but at this point, I probably won't be able to release a working level importer this Wednesday. Releasing a buggy program is one thing, but releasing a non-working one is another...

The main importer code is working, as you've seen in the spiral slide example, but it's the multiple level slot feature , the level file format and a lot of little details that need to be finalized so that all of these combined will make the level importer working. At this point, the whole interface is constructed around these features, and I simply can't scrap part of these and add/finalize them later.

The thing is that while these things are close to be finished, but would need like 10-12 more hours of work on TT64. Considering that I stayed 13 hours today at my job, not working on TT64, and that I have to go to sleep soon because I'm getting up at 7am tomorrow, and I may well have to work another big shift until late tomorrow night, I won't be able to release a working level importer on April 1st.

I know that I'm the one that set this deadline and didn't meet it, but remember that I'm doing this for free (my donations were still at $0 last time I checked...). The deadline wasn't useless in itself, I'm much closer to finish 0.6 now that I would've been if I hadn't set myself this deadline.

Anyway I shouldn't have to justify myself that much, it's a nasty habit I have

I'll keep you updated about the progress, and there shouldn't be more than a week of delay.

Now let's get back what did progress since my last post:

I figured out how much RAM is left for the 3 swappable banks + polygon data, and it's around 525k. So I added a RAM gage that shows you how much RAM each bank uses, as well as the polygon data, and how much remaining RAM you have.



Banks now show their RAM size (that's the total of poly+geo data), even in their pop-up menus so you can choose which bank to swap according to their size. A little note: Bowser takes 398k, so there's not much space left for other banks and polygons. TT64 will warn you if you use more than 525k, and prevent you from saving the level to ROM (because it would, without a doubt, crash the game.)

What I'm also planning to do, is to write a small "file table" to the ROM, that will list the position and size, the level its replacing, as well as the level file name that was used to save the level for each of the custom level slots. That way, when you open a ROM, you'll be able to identify which slots are used and what level files were used to create the levels. I think that feature is essential, and will be really useful in the long run.

As for using extended RAM, messiaen designed a method to access it in SM64, and it was planned that I would probably use it in 0.7b. But seeing at how limited "normal" RAM is, I'll check with him to see how easy it would be to implement in 0.6b.

Originally posted by vinnyboiler
Does the floor and model have the same texture or can we apply another texture for the floor.


Assuming that you're talking about the "death floor", well it's invisible so it's not textured anyway. I'll also add a feature to disable it.

____________________
Me-me
340
Level: 41


Posts: 66/341
EXP: 461705
For next: 18440

Since: 08-05-07


Since last post: 9.7 years
Last activity: 8.1 years

Posted on 03-31-09 04:46:14 AM Link
When Mario fall from a level the death sequence (when the screen fade out) begin before Mario hit the floor.
So, even with the death floor, how do you know where the death sequence begin?
Also, great work so far!

____________________
Wow! SM64 is totally turned upside-down!
Tina
Beep boop
Level: 79


Posts: 991/1549
EXP: 4467969
For next: 111498

Since: 08-10-07


Since last post: 3.4 years
Last activity: 3.4 years

Posted on 03-31-09 05:14:28 AM Link
Originally posted by Marioforever45
Originally posted by Deleted User
hello VL-Tone
I have 3d Studio Max I hacked this with 3d Studio Max Keygen
this program is cool this programm can OBJ.file exporting

Greetings Tarek701



-----------------------------------------


Jul does not support keygens
You would have been banned

You need to read the rules.

Failure to do so will get you banned.

____________________
luigiman1928
Member
Level: 17


Posts: 11/46
EXP: 21632
For next: 3111

Since: 02-23-09

From: Gscentral

Since last post: 12.0 years
Last activity: 11.3 years

Posted on 03-31-09 02:22:13 PM Link
Tommarow is april!

____________________
Gscentral forever!!
messiaen
Catgirl
Level: 68


Posts: 528/1085
EXP: 2594183
For next: 134617

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 03-31-09 10:32:59 PM Link
Originally posted by VL-Tone
As for using extended RAM, messiaen designed a method to access it in SM64, and it was planned that I would probably use it in 0.7b. But seeing at how limited "normal" RAM is, I'll check with
him to see how easy it would be to implement in 0.6b.


Probably the major issue for you is that there's data in the checksum area that needs to be overwritten. Since you seem to use a specific CRC to ensure a valid ROM is loaded, you'll probably need to switch to an alternative method, perhaps a simple 'watermark' (a few identifer bytes somewhere) so that TT64 knows its a valid ROM which has been extended AND patched for extended memory (and in the future other useful additions/modifications).

Also, the little patch to get rid of the CRC works well, however since it causes PJ64 (by far the most used emulator) to popup two error messages, it would be cleaner to just correct the CRC, either integrating a checksum fixer in TT64 or a launcher for an external application (as you do in the ROM Extender).

The extended memory support I have been using for the "Missing Stars" is very simple. First, there is a loader function which runs just after the boot and copies the new level script command from ROM to extended memory. The level command function table in the ROM has been changed so that the 0x10 level command (unused) now points to this new function loaded in extended memory.

This level command copies an uncompressed ROM segment to extended memory and then updates the segment pointer table so that whenever segmented data is acessed it will point to the correct RAM location. Since it doesn't use a memory allocation function (I couldn't get this to work), you have to manually specify the beggining address in RAM it will be copied too. I don't think it would be hard to implement this in TT64.

Here's an example. Let's define that our additional banks will be loaded from 0x80500000 onwards. Note that you can still use the 1.4mb shared pool with the regular 0x17 command, so this would give 4.5mb of available memory for banks, plus another 1meg (0x80400000 - 0x80500000) for custom ASM/data/variables. So, to load banks 0x07 and 0x08 you use this:

[10 10 00 07] [80 50 00 00] [01 00 00 00] [01 00 22 30]
[10 10 00 08] [80 50 22 30] [01 20 00 00] [01 20 22 30]

Note that the manual memory allocation is quite easy. Since that part of RAM will never be accessed by the game, you can just sum the previous loaded bank lenght to get the address for the next bank. So, you would just have keep track of the 0x10 commands and update the RAM addresses if the ROM segment grows larger.

The only thing I haven't tested is loading the texture bank with this command. One of the reasons you couldn't change the 0x1A commands into 0x17 commands is that the 0x1A command will decompress data to a specific location in RAM, so this needs to be tested more and perhaps an additional hack of the 0x1A command will be needed so that the texture bank always get into extended memory.
Marioforever45

Level: 10


Posts: 10/13
EXP: 3290
For next: 1124

Since: 10-24-08


Since last post: 13.1 years
Last activity: 11.0 years

Posted on 04-01-09 02:17:14 AM Link
Originally posted by mario 64 fan
hello I have a question when
coming out the 3d importer?

The 3d importer will be in Toad Tool 64 0.6,It will be out on April 1,2009
gamekrazzy
Member
Level: 32


Posts: 48/199
EXP: 194437
For next: 12005

Since: 03-06-09


Since last post: 10.4 years
Last activity: 8.6 years

Posted on 04-01-09 02:25:08 AM Link
Originally posted by Marioforever45
Originally posted by mario 64 fan
hello I have a question when
coming out the 3d importer?

The 3d importer will be in Toad Tool 64 0.6,It will be out on April 1,2009

actually I doubt that, VL-tone already said that it might come out later My guess would be Friday April 3, 2009, and anyways I want a version that works don't you.

____________________
RDX

Level: 32


Posts: 38/198
EXP: 193371
For next: 13071

Since: 02-14-09


Since last post: 10.8 years
Last activity: 10.5 years

Posted on 04-01-09 04:52:13 AM Link
No, he finalized that it isn't coming out April 1st maybe two or so posts ago.

It's fine, it's not like we're paying him or anything.

____________________
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 420/621
EXP: 1135565
For next: 21554

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 04-01-09 04:56:53 AM (last edited by VL-Tone at 04-05-09 02:25 PM) Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42

First let me address the delay in a more official way: TT64 won't be released April 1st as originally planned. The new release date will be April 7th 15th. I'm really sorry about that.



Originally posted by messiaen
Probably the major issue for you is that there's data in the checksum area that needs to be overwritten. Since you seem to use a specific CRC to ensure a valid ROM is loaded, you'll probably need to switch to an alternative method, perhaps a simple 'watermark' (a few identifer bytes somewhere) so that TT64 knows its a valid ROM which has been extended AND patched for extended memory (and in the future other useful additions/modifications).

Also, the little patch to get rid of the CRC works well, however since it causes PJ64 (by far the most used emulator) to popup two error messages, it would be cleaner to just correct the CRC, either integrating a checksum fixer in TT64 or a launcher for an external application (as you do in the ROM Extender).



Actually, the issue with checksum area is that coding my own checksum calculator in Director looks like something that would be complicated, and would probably take a while to execute, and executing an external command line program like the ROM extender does has caused some problems with Windows systems that have some restrictions regarding command-line executable.

But... a checksum calculator would be only needed if I wanted to make something editable in the checksum area, that would require re-calculation each time it's modified. But we're talking about a "permanent" patch to the ROM, so I only have to calculate the checksum, note the resulting CRC, then simply make TT64 write the pre-calculated CRC bytes when it applies the patch.

Now that I think about it, the ROM extender shouldn't even use the checksum calculating executable, since the resulting CRC bytes are always the same!

Originally posted by messiaen
The extended memory support I have been using for the "Missing Stars" is very simple. First, there is a loader function which runs just after the boot and copies the new level script command from ROM to extended memory. The level command function table in the ROM has been changed so that the 0x10 level command (unused) now points to this new function loaded in extended memory.

This level command copies an uncompressed ROM segment to extended memory and then updates the segment pointer table so that whenever segmented data is acessed it will point to the correct RAM location. Since it doesn't use a memory allocation function (I couldn't get this to work), you have to manually specify the beggining address in RAM it will be copied too. I don't think it would be hard to implement this in TT64.

Here's an example. Let's define that our additional banks will be loaded from 0x80500000 onwards. Note that you can still use the 1.4mb shared pool with the regular 0x17 command, so this would give 4.5mb of available memory for banks, plus another 1meg (0x80400000 - 0x80500000) for custom ASM/data/variables. So, to load banks 0x07 and 0x08 you use this:

[10 10 00 07] [80 50 00 00] [01 00 00 00] [01 00 22 30]
[10 10 00 08] [80 50 22 30] [01 20 00 00] [01 20 22 30]

Note that the manual memory allocation is quite easy. Since that part of RAM will never be accessed by the game, you can just sum the previous loaded bank lenght to get the address for the next bank. So, you would just have keep track of the 0x10 commands and update the RAM addresses if the ROM segment grows larger.

The only thing I haven't tested is loading the texture bank with this command. One of the reasons you couldn't change the 0x1A commands into 0x17 commands is that the 0x1A command will decompress data to a specific location in RAM, so this needs to be tested more and perhaps an additional hack of the 0x1A command will be needed so that the texture bank always get into extended memory.



Yeah, it will be quite easy to deal with manual memory allocation. I'll just generate the 0x10 commands as I would generate 0x17 commands, except that I'll keep a "RAM pointer" variable that will increase as new 0x10 commands are created in the script, to determine the beginning address value.

As for 0x1A commands, as far as I know they're only used by the original level polygon banks. Unlike in the original FlatWorld, I won't have to deal with any 0x1A banks in the custom levels, as the texture used by the level is embedded in the level's polygon bank. It seems that 0x1A banks are only needed when a polygon bank needs to access textures found in another bank. (any idea why?)

So, this whole thing looks much more easy to implement than I thought. Just tell me what I have to patch, and I'll modify TT64 accordingly.

Originally posted by Me-me
When Mario fall from a level the death sequence (when the screen fade out) begin before Mario hit the floor.
So, even with the death floor, how do you know where the death sequence begin?
Also, great work so far!



Mario doesn't hit the death floor as far as I remember, he keeps falling and the death sequence is triggered when he goes through the invisible death floor. If you've seen Mario hit something while the screen was fading it was probably an invisible wall on the side of a level, not a floor.


____________________
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 421/621
EXP: 1135565
For next: 21554

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 04-01-09 04:57:27 AM (last edited by VL-Tone at 04-13-09 09:10 PM) Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by VL-Tone


Originally posted by messiaen
Probably the major issue for you is that there's data in the checksum area that needs to be overwritten. Since you seem to use a specific CRC to ensure a valid ROM is loaded, you'll probably need to switch to an alternative method, perhaps a simple 'watermark' (a few identifer bytes somewhere) so that TT64 knows its a valid ROM which has been extended AND patched for extended memory (and in the future other useful additions/modifications).

Also, the little patch to get rid of the CRC works well, however since it causes PJ64 (by far the most used emulator) to popup two error messages, it would be cleaner to just correct the CRC, either integrating a checksum fixer in TT64 or a launcher for an external application (as you do in the ROM Extender).



Actually, the issue with checksum area is that coding my own checksum calculator in Director looks like something that would be complicated, and would probably take a while to execute, and executing an external command line program like the ROM extender does has caused some problems with Windows systems that have some restrictions regarding command-line executable.

But... a checksum calculator would be only needed if I wanted to make something editable in the checksum area, that would require re-calculation each time it's modified. But we're talking about a "permanent" patch to the ROM, so I only have to calculate the checksum, note the resulting CRC, then simply make TT64 write the pre-calculated CRC bytes when it applies the patch.

Now that I think about it, the ROM extender shouldn't even use the checksum calculating executable, since the resulting CRC bytes are always the same!

Originally posted by messiaen
The extended memory support I have been using for the "Missing Stars" is very simple. First, there is a loader function which runs just after the boot and copies the new level script command from ROM to extended memory. The level command function table in the ROM has been changed so that the 0x10 level command (unused) now points to this new function loaded in extended memory.

This level command copies an uncompressed ROM segment to extended memory and then updates the segment pointer table so that whenever segmented data is acessed it will point to the correct RAM location. Since it doesn't use a memory allocation function (I couldn't get this to work), you have to manually specify the beggining address in RAM it will be copied too. I don't think it would be hard to implement this in TT64.

Here's an example. Let's define that our additional banks will be loaded from 0x80500000 onwards. Note that you can still use the 1.4mb shared pool with the regular 0x17 command, so this would give 4.5mb of available memory for banks, plus another 1meg (0x80400000 - 0x80500000) for custom ASM/data/variables. So, to load banks 0x07 and 0x08 you use this:

[10 10 00 07] [80 50 00 00] [01 00 00 00] [01 00 22 30]
[10 10 00 08] [80 50 22 30] [01 20 00 00] [01 20 22 30]

Note that the manual memory allocation is quite easy. Since that part of RAM will never be accessed by the game, you can just sum the previous loaded bank lenght to get the address for the next bank. So, you would just have keep track of the 0x10 commands and update the RAM addresses if the ROM segment grows larger.

The only thing I haven't tested is loading the texture bank with this command. One of the reasons you couldn't change the 0x1A commands into 0x17 commands is that the 0x1A command will decompress data to a specific location in RAM, so this needs to be tested more and perhaps an additional hack of the 0x1A command will be needed so that the texture bank always get into extended memory.



Yeah, it will be quite easy to deal with manual memory allocation. I'll just generate the 0x10 commands as I would generate 0x17 commands, except that I'll keep a "RAM pointer" variable that will increase as new 0x10 commands are created in the script, to determine the beginning address value.

As for 0x1A commands, as far as I know they're only used by the original level polygon banks. Unlike in the original FlatWorld, I won't have to deal with any 0x1A banks in the custom levels, as the texture used by the level is embedded in the level's polygon bank. It seems that 0x1A banks are only needed when a polygon bank needs to access textures found in another bank. (any idea why?)

So, this whole thing looks much more easy to implement than I thought. Just tell me what I have to patch, and I'll modify TT64 accordingly.

Originally posted by Me-me
When Mario fall from a level the death sequence (when the screen fade out) begin before Mario hit the floor.
So, even with the death floor, how do you know where the death sequence begin?
Also, great work so far!



Mario doesn't hit the death floor as far as I remember, he keeps falling and the death sequence is triggered when he goes through the invisible death floor. If you've seen Mario hit something while the screen was fading it was probably an invisible wall on the side of a level, not a floor.




____________________
messiaen
Catgirl
Level: 68


Posts: 531/1085
EXP: 2594183
For next: 134617

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 04-01-09 11:44:15 AM Link
Originally posted by VL-Tone
But... a checksum calculator would be only needed if I wanted to make something editable in the checksum area, that would require re-calculation each time it's modified. But we're talking about a "permanent" patch to the ROM, so I only have to calculate the checksum, note the resulting CRC, then simply make TT64 write the pre-calculated CRC bytes when it applies the patch.


Ah, that should work .

Originally posted by VL-Tone
So, this whole thing looks much more easy to implement than I thought. Just tell me what I have to patch, and I'll modify TT64 accordingly.


Right, I'm doing a summary of the things that needs to be modified as well as some detailed documentation. I think it would be interesting to integrate this as early as possible in the importer so we can test how it works before comitting it to a later, more stable version.

To make things easier in the future, I think the first meg of extended memory should be an exact mirror of a ROM segment. Here's how I am thinking of using it:

0x80401000 - 0x804A0000 -> Reserved space for data (used in the future for data such as collision tables, trajectories, water data, new variables and other stuff which will be acessed from any level since it's not restricted to a certain segment ID).
0x804A0000 - 0x80500000 -> Custom code (new script functions and eventually new objects code).

The remaing space, 0x80500000 - 0x80800000 would be used for level banks. Note that I left 0x1000 bytes for compatibility with Gameshark codes which use extended memory.

All of this would be copied from somewhere like 0x1201000 - 0x1300000 in the ROM (we should decide on this because it will be hardcoded in the loader function). Any space after this would be used by TT64 to store the new levels.

I can send you a list of the needed patches today or tomorrow, all that I need to know is where I should reserve the space in the ROM for this first meg of extended memory so it doesn't conflicts with the way the importer currently works.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 422/621
EXP: 1135565
For next: 21554

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 04-01-09 03:41:12 PM Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by messiaen
Originally posted by VL-Tone
But... a checksum calculator would be only needed if I wanted to make something editable in the checksum area, that would require re-calculation each time it's modified. But we're talking about a "permanent" patch to the ROM, so I only have to calculate the checksum, note the resulting CRC, then simply make TT64 write the pre-calculated CRC bytes when it applies the patch.


Ah, that should work .

Originally posted by VL-Tone
So, this whole thing looks much more easy to implement than I thought. Just tell me what I have to patch, and I'll modify TT64 accordingly.


Right, I'm doing a summary of the things that needs to be modified as well as some detailed documentation. I think it would be interesting to integrate this as early as possible in the importer so we can test how it works before comitting it to a later, more stable version.

To make things easier in the future, I think the first meg of extended memory should be an exact mirror of a ROM segment. Here's how I am thinking of using it:

0x80401000 - 0x804A0000 -> Reserved space for data (used in the future for data such as collision tables, trajectories, water data, new variables and other stuff which will be acessed from any level since it's not restricted to a certain segment ID).
0x804A0000 - 0x80500000 -> Custom code (new script functions and eventually new objects code).

The remaing space, 0x80500000 - 0x80800000 would be used for level banks. Note that I left 0x1000 bytes for compatibility with Gameshark codes which use extended memory.

All of this would be copied from somewhere like 0x1201000 - 0x1300000 in the ROM (we should decide on this because it will be hardcoded in the loader function). Any space after this would be used by TT64 to store the new levels.

I can send you a list of the needed patches today or tomorrow, all that I need to know is where I should reserve the space in the ROM for this first meg of extended memory so it doesn't conflicts with the way the importer currently works.



Ok so if I understand this correctly, I'll have to leave 1MB empty in the ROM for future usage, and put the custom level data after. Now that would leave 5 MB for custom levels. I had decided to allow 400k per level slot, so that would make about 12 levels. But now that we'll have much more RAM space, it would be a good idea to allow for more than 400k. I wanted to have fixed addresses for the level slots to avoid having to "compact" the data when levels have varying sizes. That's because the I/O libraries I was using didn't seem to be very efficient in Director when moving relatively large chunks of data. The ROM extender does take a few seconds to copy the de-compressed MIO0 banks (which in total take about 8 MB). But all in all it's not that bad, and having planned to have a file table will help me easily manage level slots that are moving around the ROM. Even with "compacted" data it may still be a good idea to extend the ROM furthermore to get even more space (how about 32MB?).

If you take RAM/ROM limitations out of the equation, do you have any idea if there's a limit on the number of polygons a level can contain? I would guess that the main limitation will be slow-downs if there are too many polygons on screen (and I'd guess that the collision map would also things slow-down if it gets too complex).

Note that complex levels that have doors and rooms in the original game (Inside Castle, Hazy Maze Cave, Haunted House) have some management techniques that involve displaying a limited number of rooms at a time (and it's a little buggy, as you can see other rooms disappearing while Mario crosses the doors inside the castle, even though a transition state where both rooms are visible was included in the game.)


____________________
Pages: 1 2 3 4 5 6 7 8 9 10 11 ... 19 20 21 22 23 24 25 26 27 28 Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) New poll - New thread - Thread closed


Rusted Logic

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

44 database queries, 6 query cache hits.
Query execution time:  0.176502 seconds
Script execution time:  0.056380 seconds
Total render time:  0.232882 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 158 - Warning: unescaped & or unknown entity "&page"
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 233 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 94 - Warning: unescaped & or unknown entity "&page"
line 149 column 126 - Warning: unescaped & or unknown entity "&page"
line 149 column 158 - Warning: unescaped & or unknown entity "&page"
line 149 column 190 - Warning: unescaped & or unknown entity "&page"
line 149 column 222 - Warning: unescaped & or unknown entity "&page"
line 149 column 254 - Warning: unescaped & or unknown entity "&page"
line 149 column 288 - Warning: unescaped & or unknown entity "&page"
line 149 column 320 - Warning: unescaped & or unknown entity "&page"
line 149 column 352 - Warning: unescaped & or unknown entity "&page"
line 149 column 385 - Warning: unescaped & or unknown entity "&page"
line 149 column 423 - Warning: unescaped & or unknown entity "&page"
line 149 column 457 - Warning: unescaped & or unknown entity "&page"
line 149 column 491 - Warning: unescaped & or unknown entity "&page"
line 149 column 525 - Warning: unescaped & or unknown entity "&page"
line 149 column 559 - Warning: unescaped & or unknown entity "&page"
line 149 column 593 - Warning: unescaped & or unknown entity "&page"
line 149 column 627 - Warning: unescaped & or unknown entity "&page"
line 149 column 661 - Warning: unescaped & or unknown entity "&page"
line 149 column 695 - Warning: unescaped & or unknown entity "&page"
line 149 column 729 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 766 - Warning: missing </font> before </table>
line 152 column 73 - Warning: missing </b> before </td>
line 155 column 210 - Warning: discarding unexpected </a>
line 156 column 131 - Warning: missing <tr>
line 159 column 195 - Warning: discarding unexpected </a>
line 160 column 133 - Warning: missing <tr>
line 163 column 209 - Warning: discarding unexpected </a>
line 164 column 132 - Warning: missing <tr>
line 167 column 195 - Warning: discarding unexpected </a>
line 168 column 133 - Warning: missing <tr>
line 171 column 144 - Warning: discarding unexpected </a>
line 172 column 131 - Warning: missing <tr>
line 175 column 66 - Warning: missing </font> before </td>
line 175 column 140 - Warning: plain text isn't allowed in <tr> elements
line 175 column 25 - Info: <tr> previously mentioned
line 182 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 184 column 9 - Warning: missing <tr>
line 202 column 13 - Warning: missing <tr>
line 205 column 74 - Warning: <style> isn't allowed in <td> elements
line 205 column 9 - Info: <td> previously mentioned
line 205 column 1512 - Warning: missing </font> before <blockquote>
line 205 column 1591 - Warning: inserting implicit <font>
line 205 column 1591 - Warning: missing </font> before <hr>
line 205 column 1654 - Warning: inserting implicit <font>
line 205 column 1654 - Warning: missing </font> before <hr>
line 206 column 1 - Warning: inserting implicit <font>
line 206 column 1 - Warning: missing </font> before <blockquote>
line 212 column 2638 - Warning: inserting implicit <font>
line 212 column 2638 - Warning: missing </font> before <hr>
line 213 column 1 - Warning: inserting implicit <font>
line 213 column 1 - Warning: missing </font> before <hr>
line 215 column 1 - Warning: inserting implicit <font>
line 215 column 1 - Warning: missing </font> before <blockquote>
line 217 column 3413 - Warning: inserting implicit <font>
line 217 column 3413 - Warning: missing </font> before <hr>
line 217 column 3492 - Warning: inserting implicit <font>
line 217 column 3492 - Warning: missing </font> before <hr>
line 217 column 3557 - Warning: inserting implicit <font>
line 217 column 3557 - Warning: missing </font> before <hr>
line 218 column 1 - Warning: inserting implicit <font>
line 218 column 1 - Warning: missing </font> before <hr>
line 219 column 1 - Warning: inserting implicit <font>
line 219 column 1 - Warning: missing </font> before <blockquote>
line 222 column 4563 - Warning: inserting implicit <font>
line 222 column 4563 - Warning: missing </font> before <hr>
line 222 column 4634 - Warning: inserting implicit <font>
line 222 column 4634 - Warning: missing </font> before <hr>
line 223 column 1 - Warning: inserting implicit <font>
line 205 column 138 - Warning: missing </div>
line 227 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 229 column 9 - Warning: missing <tr>
line 247 column 13 - Warning: missing <tr>
line 255 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 257 column 9 - Warning: missing <tr>
line 275 column 13 - Warning: missing <tr>
line 281 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 283 column 9 - Warning: missing <tr>
line 301 column 13 - Warning: missing <tr>
line 309 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 311 column 9 - Warning: missing <tr>
line 329 column 13 - Warning: missing <tr>
line 335 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 337 column 9 - Warning: missing <tr>
line 355 column 13 - Warning: missing <tr>
line 358 column 74 - Warning: <style> isn't allowed in <td> elements
line 358 column 9 - Info: <td> previously mentioned
line 358 column 961 - Error: <z> is not recognized!
line 358 column 961 - Warning: discarding unexpected <z>
line 358 column 983 - Warning: discarding unexpected </z>
line 358 column 1009 - Error: <z> is not recognized!
line 358 column 1009 - Warning: discarding unexpected <z>
line 358 column 1016 - Warning: discarding unexpected </z>
line 358 column 1046 - Error: <z> is not recognized!
line 358 column 1046 - Warning: discarding unexpected <z>
line 358 column 1052 - Warning: discarding unexpected </z>
line 358 column 1078 - Error: <z> is not recognized!
line 358 column 1078 - Warning: discarding unexpected <z>
line 358 column 1083 - Warning: discarding unexpected </z>
line 361 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 363 column 9 - Warning: missing <tr>
line 381 column 13 - Warning: missing <tr>
line 390 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 392 column 9 - Warning: missing <tr>
line 410 column 13 - Warning: missing <tr>
line 416 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 418 column 9 - Warning: missing <tr>
line 436 column 13 - Warning: missing <tr>
line 439 column 74 - Warning: <style> isn't allowed in <td> elements
line 439 column 9 - Info: <td> previously mentioned
line 439 column 1512 - Warning: missing </font> before <blockquote>
line 439 column 1591 - Warning: inserting implicit <font>
line 439 column 1591 - Warning: missing </font> before <hr>
line 439 column 1658 - Warning: inserting implicit <font>
line 439 column 1658 - Warning: missing </font> before <hr>
line 440 column 1 - Warning: inserting implicit <font>
line 440 column 1 - Warning: missing </font> before <blockquote>
line 465 column 4892 - Warning: inserting implicit <font>
line 465 column 4892 - Warning: missing </font> before <hr>
line 465 column 4960 - Warning: inserting implicit <font>
line 465 column 4960 - Warning: missing </font> before <hr>
line 466 column 1 - Warning: inserting implicit <font>
line 439 column 138 - Warning: missing </div>
line 470 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 472 column 9 - Warning: missing <tr>
line 490 column 13 - Warning: missing <tr>
line 498 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 500 column 9 - Warning: missing <tr>
line 518 column 13 - Warning: missing <tr>
line 521 column 130 - Warning: missing <tr>
line 521 column 317 - Warning: missing <tr>
line 535 column 1192 - Warning: missing <tr>
line 538 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 540 column 9 - Warning: missing <tr>
line 558 column 13 - Warning: missing <tr>
line 564 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 566 column 9 - Warning: missing <tr>
line 584 column 13 - Warning: missing <tr>
line 608 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 610 column 9 - Warning: missing <tr>
line 628 column 13 - Warning: missing <tr>
line 636 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 638 column 9 - Warning: missing <tr>
line 656 column 13 - Warning: missing <tr>
line 665 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 667 column 9 - Warning: missing <tr>
line 685 column 13 - Warning: missing <tr>
line 693 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 695 column 9 - Warning: missing <tr>
line 713 column 13 - Warning: missing <tr>
line 716 column 74 - Warning: <style> isn't allowed in <td> elements
line 716 column 9 - Info: <td> previously mentioned
line 716 column 1512 - Warning: missing </font> before <h2>
line 716 column 1583 - Warning: inserting implicit <font>
line 717 column 1 - Warning: inserting implicit <font>
line 717 column 1 - Warning: missing </font> before <blockquote>
line 718 column 1809 - Warning: inserting implicit <font>
line 718 column 1809 - Warning: missing </font> before <hr>
line 718 column 1874 - Warning: inserting implicit <font>
line 718 column 1874 - Warning: missing </font> before <hr>
line 721 column 1 - Warning: inserting implicit <font>
line 721 column 1 - Warning: missing </font> before <blockquote>
line 728 column 3589 - Warning: inserting implicit <font>
line 728 column 3589 - Warning: missing </font> before <hr>
line 728 column 3654 - Warning: inserting implicit <font>
line 728 column 3654 - Warning: missing </font> before <hr>
line 740 column 1 - Warning: inserting implicit <font>
line 740 column 1 - Warning: missing </font> before <blockquote>
line 747 column 6559 - Warning: inserting implicit <font>
line 747 column 6559 - Warning: missing </font> before <hr>
line 747 column 6621 - Warning: inserting implicit <font>
line 747 column 6621 - Warning: missing </font> before <hr>
line 750 column 1 - Warning: inserting implicit <font>
line 716 column 138 - Warning: missing </div>
line 755 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 757 column 9 - Warning: missing <tr>
line 775 column 13 - Warning: missing <tr>
line 778 column 74 - Warning: <style> isn't allowed in <td> elements
line 778 column 9 - Info: <td> previously mentioned
line 778 column 1512 - Warning: missing </font> before <blockquote>
line 778 column 1591 - Warning: inserting implicit <font>
line 778 column 1591 - Warning: missing </font> before <hr>
line 779 column 1 - Warning: inserting implicit <font>
line 779 column 1 - Warning: missing </font> before <blockquote>
line 780 column 1675 - Warning: inserting implicit <font>
line 780 column 1675 - Warning: missing </font> before <hr>
line 780 column 1740 - Warning: inserting implicit <font>
line 780 column 1740 - Warning: missing </font> before <hr>
line 783 column 1 - Warning: inserting implicit <font>
line 783 column 1 - Warning: missing </font> before <blockquote>
line 790 column 3455 - Warning: inserting implicit <font>
line 790 column 3455 - Warning: missing </font> before <hr>
line 790 column 3520 - Warning: inserting implicit <font>
line 790 column 3520 - Warning: missing </font> before <hr>
line 802 column 1 - Warning: inserting implicit <font>
line 802 column 1 - Warning: missing </font> before <blockquote>
line 809 column 6425 - Warning: inserting implicit <font>
line 809 column 6425 - Warning: missing </font> before <hr>
line 809 column 6487 - Warning: inserting implicit <font>
line 809 column 6487 - Warning: missing </font> before <hr>
line 812 column 1 - Warning: inserting implicit <font>
line 812 column 1 - Warning: missing </font> before <hr>
line 814 column 7028 - Warning: inserting implicit <font>
line 815 column 1 - Warning: inserting implicit <font>
line 778 column 138 - Warning: missing </div>
line 818 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 820 column 9 - Warning: missing <tr>
line 838 column 13 - Warning: missing <tr>
line 861 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 863 column 9 - Warning: missing <tr>
line 881 column 13 - Warning: missing <tr>
line 884 column 74 - Warning: <style> isn't allowed in <td> elements
line 884 column 9 - Info: <td> previously mentioned
line 884 column 1512 - Warning: missing </font> before <blockquote>
line 884 column 1591 - Warning: inserting implicit <font>
line 884 column 1591 - Warning: missing </font> before <hr>
line 884 column 1668 - Warning: inserting implicit <font>
line 884 column 1668 - Warning: missing </font> before <hr>
line 884 column 1732 - Warning: inserting implicit <font>
line 884 column 1732 - Warning: missing </font> before <hr>
line 884 column 2112 - Warning: inserting implicit <font>
line 885 column 1 - Warning: inserting implicit <font>
line 885 column 1 - Warning: missing </font> before <blockquote>
line 888 column 2226 - Warning: inserting implicit <font>
line 888 column 2226 - Warning: missing </font> before <hr>
line 888 column 2290 - Warning: inserting implicit <font>
line 888 column 2290 - Warning: missing </font> before <hr>
line 889 column 1 - Warning: inserting implicit <font>
line 889 column 1 - Warning: missing </font> before <hr>
line 902 column 1 - Warning: inserting implicit <font>
line 884 column 138 - Warning: missing </div>
line 911 column 17 - Warning: missing <tr>
line 911 column 17 - Warning: discarding unexpected <table>
line 914 column 35 - Warning: missing <tr>
line 914 column 94 - Warning: unescaped & or unknown entity "&page"
line 914 column 126 - Warning: unescaped & or unknown entity "&page"
line 914 column 158 - Warning: unescaped & or unknown entity "&page"
line 914 column 190 - Warning: unescaped & or unknown entity "&page"
line 914 column 222 - Warning: unescaped & or unknown entity "&page"
line 914 column 254 - Warning: unescaped & or unknown entity "&page"
line 914 column 288 - Warning: unescaped & or unknown entity "&page"
line 914 column 320 - Warning: unescaped & or unknown entity "&page"
line 914 column 352 - Warning: unescaped & or unknown entity "&page"
line 914 column 385 - Warning: unescaped & or unknown entity "&page"
line 914 column 423 - Warning: unescaped & or unknown entity "&page"
line 914 column 457 - Warning: unescaped & or unknown entity "&page"
line 914 column 491 - Warning: unescaped & or unknown entity "&page"
line 914 column 525 - Warning: unescaped & or unknown entity "&page"
line 914 column 559 - Warning: unescaped & or unknown entity "&page"
line 914 column 593 - Warning: unescaped & or unknown entity "&page"
line 914 column 627 - Warning: unescaped & or unknown entity "&page"
line 914 column 661 - Warning: unescaped & or unknown entity "&page"
line 914 column 695 - Warning: unescaped & or unknown entity "&page"
line 914 column 729 - Warning: unescaped & or unknown entity "&page"
line 914 column 50 - Warning: missing </font> before </td>
line 914 column 766 - Warning: missing </font> before </table>
line 916 column 35 - Warning: missing <tr>
line 916 column 50 - Warning: missing </font> before </td>
line 917 column 37 - Warning: unescaped & or unknown entity "&id"
line 916 column 233 - Warning: missing </font> before </table>
line 918 column 17 - Warning: discarding unexpected </textarea>
line 918 column 28 - Warning: discarding unexpected </form>
line 918 column 35 - Warning: discarding unexpected </embed>
line 918 column 43 - Warning: discarding unexpected </noembed>
line 918 column 53 - Warning: discarding unexpected </noscript>
line 918 column 64 - Warning: discarding unexpected </noembed>
line 918 column 74 - Warning: discarding unexpected </embed>
line 918 column 82 - Warning: discarding unexpected </table>
line 918 column 90 - Warning: discarding unexpected </table>
line 920 column 9 - Warning: missing </font> before <table>
line 932 column 25 - Warning: discarding unexpected </font>
line 941 column 57 - Warning: discarding unexpected </font>
line 919 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 148 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 216 - Warning: <img> proprietary attribute value "absmiddle"
line 155 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 155 column 70 - Warning: <img> lacks "alt" attribute
line 156 column 70 - Warning: <table> attribute "width" has invalid value "11.4%"
line 159 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 159 column 70 - Warning: <img> lacks "alt" attribute
line 160 column 70 - Warning: <table> attribute "width" has invalid value "22.8%"
line 163 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 163 column 70 - Warning: <img> lacks "alt" attribute
line 164 column 70 - Warning: <table> attribute "width" has invalid value "56.9%"
line 167 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 167 column 70 - Warning: <img> lacks "alt" attribute
line 168 column 70 - Warning: <table> attribute "width" has invalid value "4.1%"
line 171 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 171 column 70 - Warning: <img> lacks "alt" attribute
line 172 column 70 - Warning: <table> attribute "width" has invalid value "4.9%"
line 172 column 70 - Warning: <table> attribute "bgcolor" has invalid value "grey"
line 187 column 22 - Warning: <img> lacks "alt" attribute
line 187 column 63 - Warning: <img> lacks "alt" attribute
line 187 column 112 - Warning: <img> lacks "alt" attribute
line 187 column 162 - Warning: <img> lacks "alt" attribute
line 198 column 15 - Warning: <img> lacks "alt" attribute
line 205 column 694 - Warning: <img> lacks "alt" attribute
line 224 column 4877 - Warning: <img> lacks "alt" attribute
line 224 column 5036 - Warning: <img> lacks "alt" attribute
line 231 column 11 - Warning: <img> lacks "alt" attribute
line 232 column 23 - Warning: <img> lacks "alt" attribute
line 232 column 64 - Warning: <img> lacks "alt" attribute
line 232 column 113 - Warning: <img> lacks "alt" attribute
line 232 column 163 - Warning: <img> lacks "alt" attribute
line 233 column 11 - Warning: <img> lacks "alt" attribute
line 243 column 15 - Warning: <img> lacks "alt" attribute
line 250 column 221 - Warning: <img> proprietary attribute value "absmiddle"
line 250 column 221 - Warning: <img> lacks "alt" attribute
line 260 column 22 - Warning: <img> lacks "alt" attribute
line 260 column 63 - Warning: <img> lacks "alt" attribute
line 260 column 112 - Warning: <img> lacks "alt" attribute
line 260 column 162 - Warning: <img> lacks "alt" attribute
line 261 column 11 - Warning: <img> lacks "alt" attribute
line 271 column 15 - Warning: <img> lacks "alt" attribute
line 278 column 142 - Warning: <img> lacks "alt" attribute
line 286 column 22 - Warning: <img> lacks "alt" attribute
line 286 column 63 - Warning: <img> lacks "alt" attribute
line 286 column 112 - Warning: <img> lacks "alt" attribute
line 286 column 162 - Warning: <img> lacks "alt" attribute
line 297 column 15 - Warning: <img> lacks "alt" attribute
line 306 column 261 - Warning: <img> lacks "alt" attribute
line 314 column 21 - Warning: <img> lacks "alt" attribute
line 314 column 62 - Warning: <img> lacks "alt" attribute
line 314 column 112 - Warning: <img> lacks "alt" attribute
line 315 column 11 - Warning: <img> lacks "alt" attribute
line 325 column 15 - Warning: <img> lacks "alt" attribute
line 339 column 17 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 17 - Warning: <img> lacks "alt" attribute
line 339 column 60 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 60 - Warning: <img> lacks "alt" attribute
line 339 column 103 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 103 - Warning: <img> lacks "alt" attribute
line 339 column 146 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 146 - Warning: <img> lacks "alt" attribute
line 339 column 189 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 189 - Warning: <img> lacks "alt" attribute
line 339 column 232 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 232 - Warning: <img> lacks "alt" attribute
line 339 column 275 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 275 - Warning: <img> lacks "alt" attribute
line 339 column 318 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 318 - Warning: <img> lacks "alt" attribute
line 339 column 361 - Warning: <img> proprietary attribute value "absmiddle"
line 339 column 361 - Warning: <img> lacks "alt" attribute
line 340 column 23 - Warning: <img> lacks "alt" attribute
line 340 column 64 - Warning: <img> lacks "alt" attribute
line 340 column 113 - Warning: <img> lacks "alt" attribute
line 340 column 163 - Warning: <img> lacks "alt" attribute
line 341 column 11 - Warning: <img> lacks "alt" attribute
line 351 column 15 - Warning: <img> lacks "alt" attribute
line 358 column 1516 - Warning: <img> lacks "alt" attribute
line 358 column 1726 - Warning: <img> lacks "alt" attribute
line 358 column 1814 - Warning: <img> lacks "alt" attribute
line 358 column 2058 - Warning: <img> lacks "alt" attribute
line 358 column 2446 - Warning: <img> lacks "alt" attribute
line 358 column 2635 - Warning: <img> lacks "alt" attribute
line 366 column 22 - Warning: <img> lacks "alt" attribute
line 366 column 63 - Warning: <img> lacks "alt" attribute
line 366 column 112 - Warning: <img> lacks "alt" attribute
line 366 column 162 - Warning: <img> lacks "alt" attribute
line 377 column 15 - Warning: <img> lacks "alt" attribute
line 395 column 22 - Warning: <img> lacks "alt" attribute
line 395 column 63 - Warning: <img> lacks "alt" attribute
line 395 column 112 - Warning: <img> lacks "alt" attribute
line 395 column 162 - Warning: <img> lacks "alt" attribute
line 396 column 11 - Warning: <img> lacks "alt" attribute
line 406 column 15 - Warning: <img> lacks "alt" attribute
line 421 column 22 - Warning: <img> lacks "alt" attribute
line 421 column 63 - Warning: <img> lacks "alt" attribute
line 421 column 112 - Warning: <img> lacks "alt" attribute
line 421 column 162 - Warning: <img> lacks "alt" attribute
line 432 column 15 - Warning: <img> lacks "alt" attribute
line 439 column 694 - Warning: <img> lacks "alt" attribute
line 449 column 3227 - Warning: <img> proprietary attribute value "absmiddle"
line 449 column 3227 - Warning: <img> lacks "alt" attribute
line 457 column 3686 - Warning: <img> lacks "alt" attribute
line 467 column 5302 - Warning: <img> lacks "alt" attribute
line 467 column 5461 - Warning: <img> lacks "alt" attribute
line 474 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 474 column 15 - Warning: <img> lacks "alt" attribute
line 474 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 474 column 58 - Warning: <img> lacks "alt" attribute
line 474 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 474 column 101 - Warning: <img> lacks "alt" attribute
line 474 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 474 column 144 - Warning: <img> lacks "alt" attribute
line 474 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 474 column 187 - Warning: <img> lacks "alt" attribute
line 474 column 230 - Warning: <img> proprietary attribute value "absmiddle"
line 474 column 230 - Warning: <img> lacks "alt" attribute
line 475 column 22 - Warning: <img> lacks "alt" attribute
line 475 column 63 - Warning: <img> lacks "alt" attribute
line 475 column 112 - Warning: <img> lacks "alt" attribute
line 475 column 162 - Warning: <img> lacks "alt" attribute
line 476 column 11 - Warning: <img> lacks "alt" attribute
line 486 column 15 - Warning: <img> lacks "alt" attribute
line 503 column 22 - Warning: <img> lacks "alt" attribute
line 503 column 63 - Warning: <img> lacks "alt" attribute
line 503 column 112 - Warning: <img> lacks "alt" attribute
line 503 column 162 - Warning: <img> lacks "alt" attribute
line 514 column 15 - Warning: <img> lacks "alt" attribute
line 535 column 1192 - Warning: <td> attribute "width" has invalid value "94.9%"
line 535 column 1268 - Warning: <img> lacks "alt" attribute
line 535 column 1315 - Warning: <td> attribute "width" has invalid value "5.1"
line 535 column 1329 - Warning: <img> lacks "alt" attribute
line 543 column 22 - Warning: <img> lacks "alt" attribute
line 543 column 63 - Warning: <img> lacks "alt" attribute
line 543 column 112 - Warning: <img> lacks "alt" attribute
line 543 column 162 - Warning: <img> lacks "alt" attribute
line 544 column 11 - Warning: <img> lacks "alt" attribute
line 554 column 15 - Warning: <img> lacks "alt" attribute
line 569 column 22 - Warning: <img> lacks "alt" attribute
line 569 column 63 - Warning: <img> lacks "alt" attribute
line 569 column 111 - Warning: <img> lacks "alt" attribute
line 569 column 161 - Warning: <img> lacks "alt" attribute
line 580 column 15 - Warning: <img> lacks "alt" attribute
line 612 column 11 - Warning: <img> lacks "alt" attribute
line 613 column 22 - Warning: <img> lacks "alt" attribute
line 613 column 63 - Warning: <img> lacks "alt" attribute
line 613 column 112 - Warning: <img> lacks "alt" attribute
line 613 column 162 - Warning: <img> lacks "alt" attribute
line 614 column 11 - Warning: <img> lacks "alt" attribute
line 624 column 15 - Warning: <img> lacks "alt" attribute
line 633 column 330 - Warning: <img> proprietary attribute value "absmiddle"
line 633 column 330 - Warning: <img> lacks "alt" attribute
line 641 column 22 - Warning: <img> lacks "alt" attribute
line 641 column 63 - Warning: <img> lacks "alt" attribute
line 641 column 112 - Warning: <img> lacks "alt" attribute
line 641 column 162 - Warning: <img> lacks "alt" attribute
line 642 column 11 - Warning: <img> lacks "alt" attribute
line 652 column 15 - Warning: <img> lacks "alt" attribute
line 661 column 392 - Warning: <img> proprietary attribute value "absmiddle"
line 661 column 392 - Warning: <img> lacks "alt" attribute
line 662 column 658 - Warning: <img> lacks "alt" attribute
line 670 column 22 - Warning: <img> lacks "alt" attribute
line 670 column 63 - Warning: <img> lacks "alt" attribute
line 670 column 112 - Warning: <img> lacks "alt" attribute
line 670 column 162 - Warning: <img> lacks "alt" attribute
line 681 column 15 - Warning: <img> lacks "alt" attribute
line 690 column 246 - Warning: <img> lacks "alt" attribute
line 698 column 22 - Warning: <img> lacks "alt" attribute
line 698 column 63 - Warning: <img> lacks "alt" attribute
line 698 column 112 - Warning: <img> lacks "alt" attribute
line 698 column 162 - Warning: <img> lacks "alt" attribute
line 709 column 15 - Warning: <img> lacks "alt" attribute
line 716 column 694 - Warning: <img> lacks "alt" attribute
line 752 column 7240 - Warning: <img> lacks "alt" attribute
line 752 column 7399 - Warning: <img> lacks "alt" attribute
line 760 column 22 - Warning: <img> lacks "alt" attribute
line 760 column 63 - Warning: <img> lacks "alt" attribute
line 760 column 112 - Warning: <img> lacks "alt" attribute
line 760 column 162 - Warning: <img> lacks "alt" attribute
line 771 column 15 - Warning: <img> lacks "alt" attribute
line 778 column 694 - Warning: <img> lacks "alt" attribute
line 815 column 7127 - Warning: <img> lacks "alt" attribute
line 815 column 7286 - Warning: <img> lacks "alt" attribute
line 823 column 22 - Warning: <img> lacks "alt" attribute
line 823 column 63 - Warning: <img> lacks "alt" attribute
line 823 column 111 - Warning: <img> lacks "alt" attribute
line 823 column 161 - Warning: <img> lacks "alt" attribute
line 834 column 15 - Warning: <img> lacks "alt" attribute
line 843 column 572 - Warning: <img> proprietary attribute value "absmiddle"
line 843 column 572 - Warning: <img> lacks "alt" attribute
line 866 column 22 - Warning: <img> lacks "alt" attribute
line 866 column 63 - Warning: <img> lacks "alt" attribute
line 866 column 112 - Warning: <img> lacks "alt" attribute
line 866 column 162 - Warning: <img> lacks "alt" attribute
line 877 column 15 - Warning: <img> lacks "alt" attribute
line 884 column 694 - Warning: <img> lacks "alt" attribute
line 886 column 2154 - Warning: <img> proprietary attribute value "absmiddle"
line 886 column 2154 - Warning: <img> lacks "alt" attribute
line 908 column 5776 - Warning: <img> lacks "alt" attribute
line 908 column 5935 - Warning: <img> lacks "alt" attribute
line 917 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 917 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 917 column 216 - Warning: <img> proprietary attribute value "absmiddle"
line 926 column 25 - Warning: <img> lacks "alt" attribute
line 931 column 267 - Warning: <img> lacks "alt" attribute
line 205 column 1512 - Warning: trimming empty <font>
line 439 column 1512 - Warning: trimming empty <font>
line 631 column 74 - Warning: trimming empty <font>
line 716 column 1512 - Warning: trimming empty <font>
line 778 column 1512 - Warning: trimming empty <font>
line 814 column 7028 - Warning: trimming empty <font>
line 884 column 1512 - Warning: trimming empty <font>
line 884 column 2112 - Warning: trimming empty <font>
line 911 column 17 - Warning: trimming empty <tr>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 203 column 27 - Warning: <nobr> is not approved by W3C
line 205 column 158 - Warning: <table> proprietary attribute "height"
line 205 column 223 - Warning: <td> proprietary attribute "background"
line 205 column 319 - Warning: <td> proprietary attribute "background"
line 205 column 409 - Warning: <table> proprietary attribute "height"
line 205 column 489 - Warning: <td> proprietary attribute "background"
line 205 column 1444 - Warning: <td> proprietary attribute "background"
line 248 column 27 - Warning: <nobr> is not approved by W3C
line 276 column 27 - Warning: <nobr> is not approved by W3C
line 302 column 27 - Warning: <nobr> is not approved by W3C
line 330 column 27 - Warning: <nobr> is not approved by W3C
line 356 column 27 - Warning: <nobr> is not approved by W3C
line 358 column 1595 - Warning: <td> proprietary attribute "background"
line 358 column 1895 - Warning: <td> proprietary attribute "background"
line 358 column 2148 - Warning: <table> proprietary attribute "height"
line 358 column 2527 - Warning: <td> proprietary attribute "background"
line 382 column 27 - Warning: <nobr> is not approved by W3C
line 411 column 27 - Warning: <nobr> is not approved by W3C
line 437 column 27 - Warning: <nobr> is not approved by W3C
line 439 column 158 - Warning: <table> proprietary attribute "height"
line 439 column 223 - Warning: <td> proprietary attribute "background"
line 439 column 319 - Warning: <td> proprietary attribute "background"
line 439 column 409 - Warning: <table> proprietary attribute "height"
line 439 column 489 - Warning: <td> proprietary attribute "background"
line 439 column 1444 - Warning: <td> proprietary attribute "background"
line 491 column 27 - Warning: <nobr> is not approved by W3C
line 519 column 27 - Warning: <nobr> is not approved by W3C
line 521 column 317 - Warning: <td> proprietary attribute "background"
line 559 column 27 - Warning: <nobr> is not approved by W3C
line 585 column 27 - Warning: <nobr> is not approved by W3C
line 629 column 27 - Warning: <nobr> is not approved by W3C
line 657 column 27 - Warning: <nobr> is not approved by W3C
line 686 column 27 - Warning: <nobr> is not approved by W3C
line 714 column 27 - Warning: <nobr> is not approved by W3C
line 716 column 158 - Warning: <table> proprietary attribute "height"
line 716 column 223 - Warning: <td> proprietary attribute "background"
line 716 column 319 - Warning: <td> proprietary attribute "background"
line 716 column 409 - Warning: <table> proprietary attribute "height"
line 716 column 489 - Warning: <td> proprietary attribute "background"
line 716 column 1444 - Warning: <td> proprietary attribute "background"
line 776 column 27 - Warning: <nobr> is not approved by W3C
line 778 column 158 - Warning: <table> proprietary attribute "height"
line 778 column 223 - Warning: <td> proprietary attribute "background"
line 778 column 319 - Warning: <td> proprietary attribute "background"
line 778 column 409 - Warning: <table> proprietary attribute "height"
line 778 column 489 - Warning: <td> proprietary attribute "background"
line 778 column 1444 - Warning: <td> proprietary attribute "background"
line 839 column 27 - Warning: <nobr> is not approved by W3C
line 882 column 27 - Warning: <nobr> is not approved by W3C
line 884 column 158 - Warning: <table> proprietary attribute "height"
line 884 column 223 - Warning: <td> proprietary attribute "background"
line 884 column 319 - Warning: <td> proprietary attribute "background"
line 884 column 409 - Warning: <table> proprietary attribute "height"
line 884 column 489 - Warning: <td> proprietary attribute "background"
line 884 column 1444 - Warning: <td> proprietary attribute "background"
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 552 warnings and 4 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