Register - Login
Views: 99393120
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 10:20:30 AM
Jul - Projects and Creations - DS emulator project: melonDS New poll - New thread - New reply
Pages: 1 2 3 Next newer thread | Next older thread
Arisotura
Member
Level: 49


Posts: 251/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 05-07-16 10:24:21 PM Link | Quote
it's still in the brainstorming stage, but I feel like making it and will likely start writing code soon-ish


the idea is to do things right and fast, akin to blargSNES, and make that emulator actually somewhat accurate (did you know that desmume maps the ARM9 BIOS to 0x0FF00000 instead of 0xFFFF0000? now you know)

I also hope to emulate some things like memory protection, which would be convenient for development, but not sure how that will go

I just want to inject some novelty in an increasing stale scene -- NO$GBA is putting all effort into DSi support, desmume is pretty much dead (and I'm not a fan of their crap) and all the others are long dead



one of the things I want to implement is auto-compensation between ARM9 and ARM7, like in blargSNES (but hopefully working better), to try simulating the ARM9 and ARM7 running concurrently without completely killing performance

ie. ARM9 runs for a maximum amount of cycles (that will be determined via testing), but stops before that if it starts waiting for an IRQ or if uses IPC to talk to the ARM7

then the ARM7 catches up to the ARM9, and so on

with the DS, a convenient thing is that both CPUs run off the same base clock (33/66), unlike the CPU/SPC in the SNES



who knows, maybe I'll get far enough to get into the wifi crap again



if you have any ideas or remarks, feel free to go on

____________________
Kuribo64 -- NSMB2 hacking and other crap
Cuber456

Fuzzy
Don't mind me. Just passing through.
Level: 56


Posts: 660/776
EXP: 1317936
For next: 80240

Since: 02-19-12

From: Everywhere at once.

Since last post: 4.2 years
Last activity: 122 days

Posted on 05-07-16 11:13:25 PM Link | Quote
Any particular reason why you chose the name melonDS?

I guess the only other remark is that I have always wondered how one just starts coding up an emulator. I mean, where does one even start?

____________________
Zero Escape 3 is becoming a reality!!!

>>Official Reveal<<
>>Another Confirmation<<
>>Operation Bluebird Facebook Page<<
Arisotura
Member
Level: 49


Posts: 252/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 05-07-16 11:16:33 PM Link | Quote
why not?

time has shown that I suck at names, anyway, so enjoy that amazing name that for once isn't blarg-based


as for how to code an emulator, well

I'd say you have to figure out the machine's memory layout and where your game/program/whatever will go

once you have loaded it, you start executing it, which implies emulating whatever processors the machine has

then you emulate the hardware that is connected to these processors, and keep going until things work

____________________
Kuribo64 -- NSMB2 hacking and other crap
MooMilk
Member
Level: 11


Posts: 5/25
EXP: 5721
For next: 264

Since: 07-29-16


Since last post: 4.1 years
Last activity: 2.6 years

Posted on 08-02-16 08:21:22 AM Link | Quote
It's either accuracy or a emulator that can be included in those emulator compilations. I don't know if there's a DS emulator for those emulator compilation but I don't think accuracy is taken yet. Sad that DS never runs good on any of my pc's. The castlevania games always run ok cause they're 2d, and those are the ones most important to me I think. Still, would be nice to play 3d games cause you never know when a interesting proto could pop up. I remember being disapointed cause I couldn't run Gauntlet.
Arisotura
Member
Level: 49


Posts: 319/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 08-10-16 11:38:40 PM (last edited by StapleButter at 08-10-16 11:44:44 PM) Link | Quote
the melonDS project went on a major halt, changes and shitsplosions in my life and something else (can't tell more).


anyway, might get this somewhere. dunno.


also re: ARM9/ARM7 sync

there are two ways the two can communicate: using the IPC registers (preferred) and accessing specific memory addresses (crapo. generally used to transfer a data structure while IPC is used to signal the other CPU that new data is ready).

for a game that does IPC sync properly (and most commercial games will, due to using the same SDK), it's easy, we just have to detect accesses to the IPC regs.

for memory-based access, on the ARM9 side, we can hook the CP15 cache control commands. ARM9 code has to invalidate the cache before reading an IPC structure, and flush the cache after writing to it. Or alternately, access the memory from an uncached mirror. Both can be detectd.

on the ARM7 side, there's... nothing. ARM7 side doesn't really matter though-- the design would basically make the ARM9 the master processor, and have the ARM7 catch up when needed. The ARM7 can't run ahead of the ARM9 in that setup.

____________________
Kuribo64 -- NSMB2 hacking and other crap
Arisotura
Member
Level: 49


Posts: 390/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 12-23-16 06:16:19 PM Link | Quote
seems it's bump season, so...


melonDS is finally getting somewhere.

current status:

runs a good part of the ARMWrestler tests, all those that are implemented are okay
runs the BIOS/firmware, up to a point
gets stuck somewhere in said BIOS/firmware boot process

the issue is... really weird. the firmware sets up a timer with IRQ, but the interval is so tiny that it doesn't have time to do anything other than repeatedly processing timer IRQs, effectively getting stuck.

____________________
Kuribo64 -- NSMB2 hacking and other crap
Joe
Common spammer
🍬
Level: 111


Posts: 3267/3392
EXP: 14489228
For next: 379132

Since: 08-02-07

From: Pororoca

Since last post: 3 days
Last activity: 7 hours

Posted on 12-24-16 09:58:53 PM Link | Quote
I don't know if this is applicable to ARM, but I know on x86 most things that enable interrupts (e.g. returning from an interrupt) actually delay enabling interrupts for one instruction, so the main thread can make progress even if it's flooded with interrupts.

____________________
ふにゃあ。
Arisotura
Member
Level: 49


Posts: 397/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 12-30-16 02:03:02 AM Link | Quote
I thought about that too. I ran a quick test on my DS, but the results say otherwise-- constant IRQ flood really does halt the main code flow. Unless I did the test wrong.

____________________
Kuribo64 -- NSMB2 hacking and other crap
Arisotura
Member
Level: 49


Posts: 403/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 01-17-17 02:24:39 PM Link | Quote
So I recently found out why the firmware was doing that weird shit.

There's a function that configures timer 1, it first disables the timer, then calculates the delay in some way, writes it and reenables the timer.

I logged writes to the timer 1 control register and where they happened. That showed that it repeatedly enabled the timer, but without disabling it prior, which wasn't possible if the aforementioned function was called normally. Which meant that it was entering the function accidentally.

It came from the firmware's IRQ handler. Said handler does weird magic, switching between CPU modes, saving and restoring shit manually... At some point, it pulls a SPSR and return address from somewhere and uses the normal 'return from interrupt' instruction to jump there. The SPSR is written to the CPSR, and thus determines, among other things, whether the code it jumps to will be ARM or THUMB.

GBAtek says about the MSR/MRS opcodes that the THUMB bit can't be changed, but that only applies to the CPSR. Infact, the firmware relies on that bit being changed properly when writing to the SPSR.

So in the end, I would set the THUMB bit wrong, causing code to be run in the wrong mode.

Positive side is that now the firmware seems to be running okay, and even getting far enough to set up graphics.


____________________
Kuribo64 -- NSMB2 hacking and other crap
brian151
Banned
The administration (as well as a few users) have decided that you're creepy/weird enough that it's time to activate the sploded clause.
Laters.


Level: NaN


Posts: 76/-249
EXP: NaN
For next: 0

Since: 08-09-16

From: USA

Since last post: 4.7 years
Last activity: 4.7 years

Posted on 01-25-17 03:38:18 AM Link | Quote

WIP



There any plans for debugging / hacking / ripping&dumping types of features?

Just curious, obviously getting the thing to WORK is more of a priority right now.
Arisotura
Member
Level: 49


Posts: 407/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 02-02-17 10:54:24 PM Link | Quote
Who knows!


For now, well, I'm at a point where I need to decide what to do next. Save support would be nice to have, right now it's hardcoded for 64k EEPROM and requires an existing savefile.

____________________
Kuribo64 -- NSMB2 hacking and other crap
brian151
Banned
The administration (as well as a few users) have decided that you're creepy/weird enough that it's time to activate the sploded clause.
Laters.


Level: NaN


Posts: 88/-249
EXP: NaN
For next: 0

Since: 08-09-16

From: USA

Since last post: 4.7 years
Last activity: 4.7 years

Posted on 02-02-17 11:31:31 PM Link | Quote

WIP



Saving is definitely a good idea.
Will that include save states? (or have them added sometime in the future?)

Anyways, good luck.
I'll definitely be watching this closely.
I personally don't have *too* many issues with Desmume, but I agree it's overdue for an update.
I'm also very much not impressed with that thread you linked, I'm sorry you had to go through that.
If there were a reliable alternative, it might make me drop Desmume cold-turkey.
Arisotura
Member
Level: 49


Posts: 408/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 02-07-17 06:30:30 PM Link | Quote
savestates may come, but later. wouldn't be a good idea right now as I'd keep making older savestates incompatible by adding new shit


anyway, thanks!

melonDS can run some games, somewhat. I post progress here as well as occasional tech notes.

____________________
Kuribo64 -- NSMB2 hacking and other crap
brian151
Banned
The administration (as well as a few users) have decided that you're creepy/weird enough that it's time to activate the sploded clause.
Laters.


Level: NaN


Posts: 91/-249
EXP: NaN
For next: 0

Since: 08-09-16

From: USA

Since last post: 4.7 years
Last activity: 4.7 years

Posted on 02-08-17 04:47:31 AM Link | Quote

WIP



I know that feeling. "I won't add/consider this yet cuz it'll break everything that came before it"

np!

For my tastes, it'd have to support everything I've actually bothered to get a ROM for, although the ideal emulator would support every game...XD (gl with that, I hear that manages to be difficult)

Some specifics:
Bionicle Heroes
Solatorobo: Red the Hunter (IDK if you've dealt with this topic yet, but I'm pretty sure this has vertex lighting/shading, or whatever it's called... I noticed certain colors were applied when previewing the NDS-formatted model that the exported .obj doesn't seem to have)
Lego Battles
Lego Battles: Ninjago

There are others, but these are the only ones I could see myself actually trying to finish for now.

Honestly, you lost me on on that technical talk. I just don't understand low-level computing nearly well enough yet.

Well, like I said, I wish you luck, and I'll keep an eye on everything. I don't really have much else to say right now.
RanAS
Member
Level: 55


Posts: 237/844
EXP: 1286471
For next: 27718

Since: 10-10-14

From: São Paulo, Brazil

Since last post: 1 day
Last activity: 1 day

Posted on 02-09-17 10:37:35 AM Link | Quote
I saw you wanted to use Qt for the UI and I just wanted to share a recent experience.

A while ago my father wanted to mess with the Qt interface for his mini-program and said if I could mess with the code a bit with him, with a bit of trial and error we got the UI working fine so that's not an issue, but I must say the most difficult part of Qt for both of us was trying to get it to communicate with the C++ code (which worked well by itself using just the console) and getting the C++ to receive values from the Qt interface, it seems like to call a C++ function you'd need to program a CONNECT signal to a Qt OBJECT, and you need to define the function in which you want to call in that object in ways we didn't really bother to do. Plus, trying to make the C++ code access the interface back was also a pain because we couldn't make it access MainWindow->(gridLayout?)->QLabel->value without it answering "x doesn't exist" (what?).

So that could be an issue. Then again, it could be just us being total derps, that too. Either way, maybe it's not a good idea to use Qt, just sayin'.

That said, I'm incredibly impressed by the progress melonDS is having and I hope the best for this emulator, my father has always complained about using the "computer frying emulator" (DeSmuME) when I tried to play SM64DS on his laptop.

____________________
"I cannot remember the books I've read
any more than the meals I have eaten;
even so, they have made me." --Ralph Waldo Emerson
You have just entered the realm of awesome music.
brian151
Banned
The administration (as well as a few users) have decided that you're creepy/weird enough that it's time to activate the sploded clause.
Laters.


Level: NaN


Posts: 107/-249
EXP: NaN
For next: 0

Since: 08-09-16

From: USA

Since last post: 4.7 years
Last activity: 4.7 years

Posted on 02-20-17 08:11:39 PM Link | Quote

WIP



Originally posted by ihadtnowegtum
...Solatorobo: Red the Hunter (IDK if you've dealt with this topic yet, but I'm pretty sure this has vertex lighting/shading, or whatever it's called... I noticed certain colors were applied when previewing the NDS-formatted model that the exported .obj doesn't seem to have)...



Alright, I think a more standard term is "vertex colors"
Anyways, games like Solatorobo won't look nearly as good without them, because they're used fairly extensively, from what I can tell.
Arisotura
Member
Level: 49


Posts: 411/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 03-04-17 04:35:12 PM Link | Quote
oh hey hey hey





the road painting employees in Mushroom Kingdom are drunk


more seriously, I think this is caused by not properly perspective-correcting the texcoords along Y. I calculate the left/right side W by simply interpolating, but maybe I should do perspective-correct interpolation there.


anyway, current status of melonDS:

* runs games with a nice compatibility rate
* slower than desmume, but hasn't been optimized yet
* 3D renderer is slow. ideas include: putting it on a separate thread, providing a hardware renderer
* vertex colors aren't properly blended in. I need to add support for lighting before that's possible.

____________________
Kuribo64 -- NSMB2 hacking and other crap
Arisotura
Member
Level: 49


Posts: 412/614
EXP: 880011
For next: 3872

Since: 02-24-13

From: your dreams

Since last post: 93 days
Last activity: 51 days

Posted on 03-30-17 01:53:39 AM Link | Quote
hey hey hey


It's out!

____________________
Kuribo64 -- NSMB2 hacking and other crap
Sanqui
2060
💛🤍💜🖤🦉
Level: 87


Posts: 1497/2066
EXP: 6305067
For next: 87707

Since: 12-20-09

Pronouns: any ✨
From: Czechia | Estonia

Since last post: 6 days
Last activity: 1 day

Posted on 03-30-17 06:17:42 AM (last edited by Sanqui at 03-30-17 06:21:38 AM) Link | Quote


*Sanqui flops.

level 70

exp 2985510

exppct 79.3%

numposts 1497

 
Looks amazing!

Do you plan on putting the source out?

EDIT: Lookie I found it myself! https://github.com/StapleButter/melonDS

____________________
In our brief lives,  •  we've managed to meet.  •  Treasure this gift,  •  this precious time that we have.        
brian151
Banned
The administration (as well as a few users) have decided that you're creepy/weird enough that it's time to activate the sploded clause.
Laters.


Level: NaN


Posts: 135/-249
EXP: NaN
For next: 0

Since: 08-09-16

From: USA

Since last post: 4.7 years
Last activity: 4.7 years

Posted on 03-30-17 09:50:52 PM Link | Quote

WIP



Originally posted by Sanqui
Looks amazing!
EDIT: Lookie I found it myself! https://github.com/StapleButter/melonDS


That reminds me, I should star and watch this!
Going to go do that now
Pages: 1 2 3 Next newer thread | Next older thread
Jul - Projects and Creations - DS emulator project: melonDS New poll - New thread - New reply


Rusted Logic

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

30 database queries, 9 query cache hits.
Query execution time:  0.088628 seconds
Script execution time:  0.035917 seconds
Total render time:  0.124545 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 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 199 - 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 50 - Warning: missing </font> before </td>
line 149 column 165 - Warning: missing </font> before </table>
line 156 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 158 column 9 - Warning: missing <tr>
line 176 column 13 - Warning: missing <tr>
line 177 column 102 - Warning: unescaped & or unknown entity "&postid"
line 179 column 74 - Warning: <style> isn't allowed in <td> elements
line 179 column 9 - Info: <td> previously mentioned
line 207 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 209 column 9 - Warning: missing <tr>
line 227 column 13 - Warning: missing <tr>
line 228 column 102 - Warning: unescaped & or unknown entity "&postid"
line 239 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 241 column 9 - Warning: missing <tr>
line 259 column 13 - Warning: missing <tr>
line 260 column 102 - Warning: unescaped & or unknown entity "&postid"
line 262 column 74 - Warning: <style> isn't allowed in <td> elements
line 262 column 9 - Info: <td> previously mentioned
line 276 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 278 column 9 - Warning: missing <tr>
line 296 column 13 - Warning: missing <tr>
line 297 column 102 - Warning: unescaped & or unknown entity "&postid"
line 302 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 304 column 9 - Warning: missing <tr>
line 322 column 13 - Warning: missing <tr>
line 323 column 102 - Warning: unescaped & or unknown entity "&postid"
line 325 column 74 - Warning: <style> isn't allowed in <td> elements
line 325 column 9 - Info: <td> previously mentioned
line 342 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 344 column 9 - Warning: missing <tr>
line 362 column 13 - Warning: missing <tr>
line 363 column 102 - Warning: unescaped & or unknown entity "&postid"
line 365 column 74 - Warning: <style> isn't allowed in <td> elements
line 365 column 9 - Info: <td> previously mentioned
line 379 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 381 column 9 - Warning: missing <tr>
line 399 column 13 - Warning: missing <tr>
line 400 column 102 - Warning: unescaped & or unknown entity "&postid"
line 402 column 74 - Warning: <style> isn't allowed in <td> elements
line 402 column 9 - Info: <td> previously mentioned
line 405 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 407 column 9 - Warning: missing <tr>
line 425 column 13 - Warning: missing <tr>
line 426 column 102 - Warning: unescaped & or unknown entity "&postid"
line 428 column 74 - Warning: <style> isn't allowed in <td> elements
line 428 column 9 - Info: <td> previously mentioned
line 431 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 433 column 9 - Warning: missing <tr>
line 451 column 13 - Warning: missing <tr>
line 452 column 102 - Warning: unescaped & or unknown entity "&postid"
line 454 column 74 - Warning: <style> isn't allowed in <td> elements
line 454 column 9 - Info: <td> previously mentioned
line 470 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 472 column 9 - Warning: missing <tr>
line 490 column 13 - Warning: missing <tr>
line 491 column 102 - Warning: unescaped & or unknown entity "&postid"
line 493 column 74 - Warning: <style> isn't allowed in <td> elements
line 493 column 9 - Info: <td> previously mentioned
line 496 column 204 - Warning: unescaped & or unknown entity "&dumping"
line 501 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 503 column 9 - Warning: missing <tr>
line 521 column 13 - Warning: missing <tr>
line 522 column 102 - Warning: unescaped & or unknown entity "&postid"
line 524 column 74 - Warning: <style> isn't allowed in <td> elements
line 524 column 9 - Info: <td> previously mentioned
line 530 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 532 column 9 - Warning: missing <tr>
line 550 column 13 - Warning: missing <tr>
line 551 column 102 - Warning: unescaped & or unknown entity "&postid"
line 553 column 74 - Warning: <style> isn't allowed in <td> elements
line 553 column 9 - Info: <td> previously mentioned
line 566 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 568 column 9 - Warning: missing <tr>
line 586 column 13 - Warning: missing <tr>
line 587 column 102 - Warning: unescaped & or unknown entity "&postid"
line 589 column 74 - Warning: <style> isn't allowed in <td> elements
line 589 column 9 - Info: <td> previously mentioned
line 597 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 599 column 9 - Warning: missing <tr>
line 617 column 13 - Warning: missing <tr>
line 618 column 102 - Warning: unescaped & or unknown entity "&postid"
line 620 column 74 - Warning: <style> isn't allowed in <td> elements
line 620 column 9 - Info: <td> previously mentioned
line 642 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 644 column 9 - Warning: missing <tr>
line 662 column 13 - Warning: missing <tr>
line 663 column 102 - Warning: unescaped & or unknown entity "&postid"
line 665 column 74 - Warning: <style> isn't allowed in <td> elements
line 665 column 9 - Info: <td> previously mentioned
line 677 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 679 column 9 - Warning: missing <tr>
line 697 column 13 - Warning: missing <tr>
line 698 column 102 - Warning: unescaped & or unknown entity "&postid"
line 700 column 74 - Warning: <style> isn't allowed in <td> elements
line 700 column 9 - Info: <td> previously mentioned
line 711 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 713 column 9 - Warning: missing <tr>
line 731 column 13 - Warning: missing <tr>
line 732 column 102 - Warning: unescaped & or unknown entity "&postid"
line 734 column 74 - Warning: <style> isn't allowed in <td> elements
line 734 column 9 - Info: <td> previously mentioned
line 754 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 756 column 9 - Warning: missing <tr>
line 774 column 13 - Warning: missing <tr>
line 775 column 102 - Warning: unescaped & or unknown entity "&postid"
line 777 column 74 - Warning: <style> isn't allowed in <td> elements
line 777 column 9 - Info: <td> previously mentioned
line 783 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 785 column 9 - Warning: missing <tr>
line 803 column 13 - Warning: missing <tr>
line 804 column 102 - Warning: unescaped & or unknown entity "&postid"
line 806 column 74 - Warning: <style> isn't allowed in <td> elements
line 806 column 9 - Info: <td> previously mentioned
line 806 column 613 - Warning: <style> isn't allowed in <td> elements
line 806 column 9 - Info: <td> previously mentioned
line 806 column 3831 - Warning: '<' + '/' + letter not allowed here
line 811 column 20 - Warning: '<' + '/' + letter not allowed here
line 811 column 34 - Warning: '<' + '/' + letter not allowed here
line 815 column 21 - Warning: '<' + '/' + letter not allowed here
line 832 column 901 - Warning: discarding unexpected </div>
line 832 column 907 - Warning: discarding unexpected </div>
line 832 column 913 - Warning: discarding unexpected </td>
line 835 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 837 column 9 - Warning: missing <tr>
line 855 column 13 - Warning: missing <tr>
line 856 column 102 - Warning: unescaped & or unknown entity "&postid"
line 858 column 74 - Warning: <style> isn't allowed in <td> elements
line 858 column 9 - Info: <td> previously mentioned
line 869 column 17 - Warning: missing <tr>
line 869 column 17 - Warning: discarding unexpected <table>
line 872 column 35 - Warning: missing <tr>
line 872 column 97 - Warning: unescaped & or unknown entity "&page"
line 872 column 130 - Warning: unescaped & or unknown entity "&page"
line 872 column 50 - Warning: missing </font> before </td>
line 872 column 165 - Warning: missing </font> before </table>
line 874 column 35 - Warning: missing <tr>
line 874 column 50 - Warning: missing </font> before </td>
line 875 column 37 - Warning: unescaped & or unknown entity "&id"
line 874 column 199 - Warning: missing </font> before </table>
line 876 column 17 - Warning: discarding unexpected </textarea>
line 876 column 28 - Warning: discarding unexpected </form>
line 876 column 35 - Warning: discarding unexpected </embed>
line 876 column 43 - Warning: discarding unexpected </noembed>
line 876 column 53 - Warning: discarding unexpected </noscript>
line 876 column 64 - Warning: discarding unexpected </noembed>
line 876 column 74 - Warning: discarding unexpected </embed>
line 876 column 82 - Warning: discarding unexpected </table>
line 876 column 90 - Warning: discarding unexpected </table>
line 878 column 9 - Warning: missing </font> before <table>
line 890 column 25 - Warning: discarding unexpected </font>
line 899 column 57 - Warning: discarding unexpected </font>
line 877 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 246 - Warning: <img> proprietary attribute value "absmiddle"
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 161 - Warning: <img> lacks "alt" attribute
line 162 column 11 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 200 column 1872 - Warning: <img> proprietary attribute value "absmiddle"
line 200 column 1872 - Warning: <img> lacks "alt" attribute
line 211 column 11 - Warning: <img> lacks "alt" attribute
line 212 column 22 - Warning: <img> lacks "alt" attribute
line 212 column 63 - Warning: <img> lacks "alt" attribute
line 212 column 111 - Warning: <img> lacks "alt" attribute
line 212 column 161 - Warning: <img> lacks "alt" attribute
line 213 column 11 - Warning: <img> lacks "alt" attribute
line 223 column 15 - Warning: <img> lacks "alt" attribute
line 235 column 553 - Warning: <font> attribute "color" had invalid value "ffff00" and has been replaced
line 236 column 665 - Warning: <font> attribute "color" had invalid value "00ffff" and has been replaced
line 244 column 22 - Warning: <img> lacks "alt" attribute
line 244 column 63 - Warning: <img> lacks "alt" attribute
line 244 column 112 - Warning: <img> lacks "alt" attribute
line 244 column 161 - Warning: <img> lacks "alt" attribute
line 245 column 11 - Warning: <img> lacks "alt" attribute
line 255 column 15 - Warning: <img> lacks "alt" attribute
line 262 column 449 - Warning: <img> proprietary attribute value "absmiddle"
line 262 column 449 - Warning: <img> lacks "alt" attribute
line 281 column 22 - Warning: <img> lacks "alt" attribute
line 281 column 63 - Warning: <img> lacks "alt" attribute
line 281 column 112 - Warning: <img> lacks "alt" attribute
line 281 column 162 - Warning: <img> lacks "alt" attribute
line 292 column 15 - Warning: <img> lacks "alt" attribute
line 307 column 22 - Warning: <img> lacks "alt" attribute
line 307 column 63 - Warning: <img> lacks "alt" attribute
line 307 column 112 - Warning: <img> lacks "alt" attribute
line 307 column 161 - Warning: <img> lacks "alt" attribute
line 308 column 11 - Warning: <img> lacks "alt" attribute
line 318 column 15 - Warning: <img> lacks "alt" attribute
line 347 column 22 - Warning: <img> lacks "alt" attribute
line 347 column 63 - Warning: <img> lacks "alt" attribute
line 347 column 112 - Warning: <img> lacks "alt" attribute
line 347 column 161 - Warning: <img> lacks "alt" attribute
line 348 column 11 - Warning: <img> lacks "alt" attribute
line 358 column 15 - Warning: <img> lacks "alt" attribute
line 372 column 549 - Warning: <img> proprietary attribute value "absmiddle"
line 372 column 549 - Warning: <img> lacks "alt" attribute
line 373 column 689 - Warning: <img> proprietary attribute value "absmiddle"
line 373 column 689 - Warning: <img> lacks "alt" attribute
line 374 column 784 - Warning: <img> proprietary attribute value "absmiddle"
line 374 column 784 - Warning: <img> lacks "alt" attribute
line 384 column 23 - Warning: <img> lacks "alt" attribute
line 384 column 64 - Warning: <img> lacks "alt" attribute
line 384 column 113 - Warning: <img> lacks "alt" attribute
line 384 column 163 - Warning: <img> lacks "alt" attribute
line 385 column 11 - Warning: <img> lacks "alt" attribute
line 395 column 15 - Warning: <img> lacks "alt" attribute
line 410 column 22 - Warning: <img> lacks "alt" attribute
line 410 column 63 - Warning: <img> lacks "alt" attribute
line 410 column 112 - Warning: <img> lacks "alt" attribute
line 410 column 161 - Warning: <img> lacks "alt" attribute
line 411 column 11 - Warning: <img> lacks "alt" attribute
line 421 column 15 - Warning: <img> lacks "alt" attribute
line 436 column 22 - Warning: <img> lacks "alt" attribute
line 436 column 63 - Warning: <img> lacks "alt" attribute
line 436 column 112 - Warning: <img> lacks "alt" attribute
line 436 column 161 - Warning: <img> lacks "alt" attribute
line 437 column 11 - Warning: <img> lacks "alt" attribute
line 447 column 15 - Warning: <img> lacks "alt" attribute
line 475 column 23 - Warning: <img> lacks "alt" attribute
line 475 column 64 - Warning: <img> lacks "alt" attribute
line 486 column 15 - Warning: <img> lacks "alt" attribute
line 506 column 22 - Warning: <img> lacks "alt" attribute
line 506 column 63 - Warning: <img> lacks "alt" attribute
line 506 column 112 - Warning: <img> lacks "alt" attribute
line 506 column 161 - Warning: <img> lacks "alt" attribute
line 507 column 11 - Warning: <img> lacks "alt" attribute
line 517 column 15 - Warning: <img> lacks "alt" attribute
line 535 column 23 - Warning: <img> lacks "alt" attribute
line 535 column 64 - Warning: <img> lacks "alt" attribute
line 546 column 15 - Warning: <img> lacks "alt" attribute
line 571 column 22 - Warning: <img> lacks "alt" attribute
line 571 column 63 - Warning: <img> lacks "alt" attribute
line 571 column 112 - Warning: <img> lacks "alt" attribute
line 571 column 161 - Warning: <img> lacks "alt" attribute
line 572 column 11 - Warning: <img> lacks "alt" attribute
line 582 column 15 - Warning: <img> lacks "alt" attribute
line 589 column 574 - Warning: <img> proprietary attribute value "absmiddle"
line 589 column 574 - Warning: <img> lacks "alt" attribute
line 602 column 23 - Warning: <img> lacks "alt" attribute
line 602 column 64 - Warning: <img> lacks "alt" attribute
line 613 column 15 - Warning: <img> lacks "alt" attribute
line 647 column 22 - Warning: <img> lacks "alt" attribute
line 647 column 63 - Warning: <img> lacks "alt" attribute
line 647 column 112 - Warning: <img> lacks "alt" attribute
line 647 column 162 - Warning: <img> lacks "alt" attribute
line 648 column 11 - Warning: <img> lacks "alt" attribute
line 658 column 15 - Warning: <img> lacks "alt" attribute
line 671 column 2379 - Warning: <img> proprietary attribute value "absmiddle"
line 671 column 2379 - Warning: <img> lacks "alt" attribute
line 682 column 23 - Warning: <img> lacks "alt" attribute
line 682 column 64 - Warning: <img> lacks "alt" attribute
line 693 column 15 - Warning: <img> lacks "alt" attribute
line 716 column 22 - Warning: <img> lacks "alt" attribute
line 716 column 63 - Warning: <img> lacks "alt" attribute
line 716 column 112 - Warning: <img> lacks "alt" attribute
line 716 column 161 - Warning: <img> lacks "alt" attribute
line 717 column 11 - Warning: <img> lacks "alt" attribute
line 727 column 15 - Warning: <img> lacks "alt" attribute
line 737 column 466 - Warning: <img> lacks "alt" attribute
line 759 column 22 - Warning: <img> lacks "alt" attribute
line 759 column 63 - Warning: <img> lacks "alt" attribute
line 759 column 112 - Warning: <img> lacks "alt" attribute
line 759 column 161 - Warning: <img> lacks "alt" attribute
line 760 column 11 - Warning: <img> lacks "alt" attribute
line 770 column 15 - Warning: <img> lacks "alt" attribute
line 787 column 16 - Warning: <img> proprietary attribute value "absmiddle"
line 787 column 16 - Warning: <img> lacks "alt" attribute
line 787 column 59 - Warning: <img> proprietary attribute value "absmiddle"
line 787 column 59 - Warning: <img> lacks "alt" attribute
line 787 column 102 - Warning: <img> proprietary attribute value "absmiddle"
line 787 column 102 - Warning: <img> lacks "alt" attribute
line 787 column 145 - Warning: <img> proprietary attribute value "absmiddle"
line 787 column 145 - Warning: <img> lacks "alt" attribute
line 788 column 22 - Warning: <img> lacks "alt" attribute
line 788 column 63 - Warning: <img> lacks "alt" attribute
line 788 column 112 - Warning: <img> lacks "alt" attribute
line 788 column 162 - Warning: <img> lacks "alt" attribute
line 789 column 11 - Warning: <img> lacks "alt" attribute
line 799 column 15 - Warning: <img> lacks "alt" attribute
line 828 column 432 - Warning: <img> proprietary attribute value "absmiddle"
line 828 column 432 - Warning: <img> lacks "alt" attribute
line 840 column 23 - Warning: <img> lacks "alt" attribute
line 840 column 64 - Warning: <img> lacks "alt" attribute
line 851 column 15 - Warning: <img> lacks "alt" attribute
line 861 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 861 column 246 - Warning: <img> lacks "alt" attribute
line 875 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 875 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 875 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 884 column 25 - Warning: <img> lacks "alt" attribute
line 889 column 267 - Warning: <img> lacks "alt" attribute
line 869 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 177 column 27 - Warning: <nobr> is not approved by W3C
line 228 column 27 - Warning: <nobr> is not approved by W3C
line 260 column 27 - Warning: <nobr> is not approved by W3C
line 297 column 27 - Warning: <nobr> is not approved by W3C
line 323 column 27 - Warning: <nobr> is not approved by W3C
line 363 column 27 - Warning: <nobr> is not approved by W3C
line 400 column 27 - Warning: <nobr> is not approved by W3C
line 426 column 27 - Warning: <nobr> is not approved by W3C
line 452 column 27 - Warning: <nobr> is not approved by W3C
line 491 column 27 - Warning: <nobr> is not approved by W3C
line 522 column 27 - Warning: <nobr> is not approved by W3C
line 551 column 27 - Warning: <nobr> is not approved by W3C
line 587 column 27 - Warning: <nobr> is not approved by W3C
line 618 column 27 - Warning: <nobr> is not approved by W3C
line 663 column 27 - Warning: <nobr> is not approved by W3C
line 698 column 27 - Warning: <nobr> is not approved by W3C
line 732 column 27 - Warning: <nobr> is not approved by W3C
line 775 column 27 - Warning: <nobr> is not approved by W3C
line 804 column 27 - Warning: <nobr> is not approved by W3C
line 856 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 317 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