Register - Login
Views: 99414638
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-25-22 12:52:21 AM
Jul - Posts by GuyPerfect
Pages: 1 2 3 4 5 6 7 8 9 10 ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
GuyPerfect
Catgirl
Level: 68


Posts: 883/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-16-13 07:38:36 PM, in Migrating Pokémon from Generation 2 to 3 Link
Oy caramba. Every time I try to post this thread I end up writing an article. Well, not this time! Instead, I have a proof-of-concept ready! It's not user-friendly enough to be ready for prime time, but it gets the job done and it's a great start for planning some better software.

Like I mentioned in another thread, I'm working on a technical experiment for migrating Pokémon from Generation 2 to Generation 3. There's some big philosophical discussion that can go on regarding this subject, but I'm gonna skip all of that. The whys aren't important. It's the whats I'm here to share with you today.

I've done extensive work reverse-engineering the save data for Pokémon games. You can see most of my findings here, here and here.
__________

Stat Growth

This is the big 600-pound Hippowdon in the room. Generation 2 uses the old stat exp. mechanic, while Generation 3 uses the new(er) effort point mechanic. Converting between them is not graceful: you can achieve maximum growth for all stats under the old system, but not the new system. Migration therefore may necessitate a reduction in stats, which I'm sure some people would get all frothy-mouthed over. Legend has it this is the reason Nintendo opted to remake the generation 1 and 2 games rather than provide an official migration solution.

Either way, it's a problem that needs to be solved. I'm working on the premise that stat exp./effort points are a reflection of... well, experience and effort. They are not a means to an end: that is, they're not a stepping stone to the final stat value. They indicate a Pokémon's growth in their stats, but not necessarily the final numerical stats themselves. To that end, I established a policy that makes migration easy: growth by stat should remain relative to all the other stats.

Due to how stat exp. works (the base stats of the defeated Pokémon are added to the stat exp. on defeat), it's impossible to train up just one stat like you can do with EVs. This affords a simple migration technique: simply scale down all of the stats until they fit in the required range. This is a four-step process:

Calculate the stats using the stat exp. formulas
Reverse-calculate the corresponding EVs using the EV formulas
If the maximum EV of all stats is greater than 252, scale them all down so that the max EV is 252
If the total EVs are greater than 510, scale them all down further so that the total is 510

I'm open to suggestions for this. One thing I don't want to do is allow the player to pick and choose which stats they want max'd and which ones they don't. That's what Super Training is for. This should be automated and treat all stats fairly.
__________

Randomness

Generation 2 has 16 bits of randomness per Pokémon (4 for each of 4 IVs), while Generation 3 has 62 (5 for each of 6 IVs, plus 32 "personality" bits). This means additional bits need to come from somewhere. The OT ID No. is also twice as large in Generation 3, which presents an interesting opportunity...

I'm constructing a 32-bit OT ID by using the old OT ID as the lower 16 bits (since that will display the same 5-digit number in the Summary screen in-game), and the old IVs as the upper 16 bits. The resulting 32-bit value I then use as the seed for a pseudorandom number generator that is used to generate other random things, the personality value among them. Doing it this way guarantees that the data from a Generation 2 Pokémon will always result in the same Generation 3 Pokémon.

The algorithm I decided to use, due to its appropriate context, is the one used to encrypt the Pokémon save data records in Generations 4 and 5. It looks something like this:

uint32_t regi;

uint16_t PokeDSrand() {
regi = regi * 0x41C64E6D + 0x6073;
return regi >> 16 & 0xFFFF;
}

Output from this algorithm, after seeding with the 32-bit OT ID, is used for the initial personality value as well as selection for appropriate values of auxiliary attributes.
__________

Gender

In Generation 2, the Pokémon's gender is determined by the Attack IV. In Generation 3, the lowest byte of the personality value is used. Both are checking against the same value for the Pokémon's species, which represents the ratio of males to females for the species.

For Generation 2, the check is whether the Attack IV is greater than the gender threshold. If it is, the Pokémon is male. For Generation 3, the check is whether the lowest personality byte is greater than or equal to the gender threshold instead. The thresholds are pretty much the same: the 4-bit value for Generation 2 is the upper 4 bits of the 8-bit Generation 3 value, and the lower 4 bits are all 1s.

Using the random bits generated for the initial personality value, the Pokémon's random gender can be checked. If it happens to be the wrong gender, that byte can be corrected by simply subtracting it from 255.
__________

Unown's Letter

In Generation 2, Unown's letter is determined by concatenating the center 2 bits of the IVs, in the order of (high) Attack, Defense, Speed, Special (low). That 8-bit value is divided by 10 to yield a result from 0 to 25, which corresponds with the letter.

In Generation 3, the lowest 2 bits of each of the 4 bytes of the personality value are used instead, retaining their order (the highest byte contains the highest 2 bits, etc.). This value is then divided by 28, and the remainder is the letter. 26 is ?, and 27 is !.

Randomness should come into play here. There are 9 values that can express any given letter, where A, B, C and D can be expressed with 10 values. Ideally, a random value across all valid values should be selected. That's the easy part.

The harder part is accounting for shininess. Shininess is explained below, but basically we need to account for this: bits 2-3 and 6-7 of the generated letter value, when XOR'd together, can produce any of the 4 combinations of 2 bits. This combination needs to be the same as the XOR result of bits 8-9 and 24-25 in the OT ID or the Pokémon will not be shiny.

As luck would have it, for all 28 permutations of Unown, there's at least one valid value for each of the 4 combinations of two bits. All Unown can be shiny no matter what the OT ID is. So when an Unown needs to be shiny, its letter value is simply selected from a list of all the valid values that match both the letter and are shiny. The algorithm I wrote for this suits all permutations of Unown, but in Generation 2, the only Unown that can be shiny are letters I and V (coincidentally enough, considering shininess comes from the IVs in Generation 2).
__________

Hidden Power

Hidden Power's type and power both come from the IVs in Generations 2 and 3. Type is a 4-bit value, and both generations use the same list. Power can range from 30 to 70.

In Generation 2, type is a 4-bit value using the lower 2 bits of the Attack IV as its upper 2 bits, and the lower 2 bits of the Defense IV as its lower 2 bits.

In Generation 3, type uses a 6-bit value using the least-significant bit of each IV, in the order of (high) Special Defense, Special Attack, Speed, Defense, Attack, HP (low). This value is then scaled to the range of 0...15 with the expression "value * 15 / 63". For this reason, the maximum value of 15 can only come from an initial value of 63, making Dark the rarest type for Hidden Power.

In Generation 2, power comes from the most significant bits of the IVs, in the order of (high) Attack, Defense, Speed, Special (low). This value is multiplied by 5, then added with 3 (if the Special IV is greater than 2), or the Special IV itself. The result is then divided by 2, which produces a number from 0 to 39. 31 is added to this to yield Hidden Power's power.

In Generation 3, the same algorithm used to determine Hidden Power's type is used, but it uses the second least-significant bit from the IVs (same order). It's scaled to 40 (value * 40 / 63), then has 30 added to it. Likewise with the type, only IV bits of all 1s can produce the maximum value of 70.

Retaining Hidden Power's attributes in Generation 3 necessitates modification of the IVs; there's no way around that. Since stat growth consistency between generations is all mangled up to begin with, IV accuracy isn't of utmost importance. What I ended up doing was building a list of valid matching values and selecting one at random, just like I did for Unown's letter.
__________

Shininess

One in every 8,192 Pokémon is shiny. It means nothing, but people still bend over backwards for it.

In Generation 2, the 16-bit IVs value is AND'd with 0x2FFF, and if the result is 0x2AAA, the Pokémon is shiny.

In Generation 3, the personality value is XOR'd with the OT ID value, and both halves of the result are XOR'd with each other. If the 16-bit result is less than 8 (meaning, bits 4-15 are all zeroes), the Pokémon is shiny.

Checking whether a Generation 3 Pokémon is shiny is easy: just XOR down to that 16-bit mask value and see if it's less than 8. If it's not, you can easily use that mask value to "correct" the personality value and make it shiny. Here's what you do:

AND the mask with 0xFFF8, since the lowest 3 bits don't matter
XOR the upper half of the personality value with the new mask value: personality ^ mask << 16
Grab a cup of hot chocolate and pat yourself on the back

The only bits in the upper half of the personality value that shouldn't be corrupted are bits 24 and 25, which are used for the letter if the Pokémon is Unown. However, since those bits were selected such that the result after the XOR would be zeroes, using this "correction" can't possibly modify those bits because the corresponding bits in the mask have to be zeroes by this point.

In the event the personality value just so happened to be shiny when it wasn't supposed to be, you can "correct" that was well, resulting in "de-shinification", by XORing the upper half of the personality value with 0xFCF8. This time, it's a mask value that won't touch the Unown letter bits.
__________

Ability, Egg

The Ability bit (in the IVs field) is initialized as the least-significant bit of the final Personality value. If the species can only have one Ability (like our friend Unown), the bit must be cleared in the IVs field.

If the Pokémon is in an egg (denoted by a "sprite ID" of 0xFD in Generation 2), the Egg bit in the IVs field should be set, and the nickname should be changed to 0x60 0x6F 0x8B (タマゴ).
__________

Held Item

If the Pokémon is holding an item, it may be able to be migrated as well. Most items in Generation 2 also exist in Generation 3. Some items don't exist per sé, but do have a functional equivalent. Other items have no equivalent at all.

Incidentally, all TMs that teach a move in Generation 2 that can be taught by TM in Generation 3 share the same numbers as the Generation 3 TMs. Handy!

The following items translate into the same item:

Amulet Coin, Antidote, Awakening, Berry Juice, Big Mushroom, Big Pearl, Black Belt, Black Glasses, Bright Powder, Burn Heal, Calcium, Carbos, Charcoal, Cleanse Tag, Dire Hit, Dragon Fang, Dragon Scale, Elixir, Energy Powder, Energy Root, Escape Rope, Ether, Everstone, Exp. Share, Fire Stone, Focus Band, Fresh Water, Full Heal, Full Restore, Great Ball, Guard Spec., Hard Stone, Heal Powder, HP Up, Hyper Potion, Ice Heal, Iron, King's Rock, Leaf Stone, Leftovers, Lemonade, Light Ball, Lucky Egg, Lucky Punch, Magnet, Master Ball, Max Elixir, Max Ether, Max Potion, Max Repel, Max Revive, Metal Coat, Metal Powder, Miracle Seed, Moomoo Milk, Moon Stone, Mystic Water, Never-Melt Ice, Nugget, Paralyze Heal, Pearl, Poison Barb, Poké Ball, Poké Doll, Potion, PP Up, Protein, Quick Claw, Rare Candy, Repel, Revival Herb, Revive, Sacred Ash, Scope Lens, Sharp Beak, Silver Powder, Smoke Ball, Soda Pop, Soft Sand, Spell Tag, Star Piece, Stardust, Stick, Sun Stone, Super Potion, Super Repel, Thick Club, Thunder Stone, Tiny Mushroom, TM05 Roar, TM06 Toxic, TM10 Hidden Power, TM11 Sunny Day, TM14 Blizzard, TM15 Hyper Beam, TM17 Protect, TM18 Rain Dance, TM19 Giga Drain, TM21 Frustration, TM22 Solar Beam, TM23 Iron Tail, TM25 Thunder, TM26 Earthquake, TM27 Return, TM28 Dig, TM29 Psychic, TM20 Shadow Ball, TM32 Double Team, TM36 Sludge Bomb, TM37 Sandstorm, TM38 Fire Blast, TM44 Rest, TM45 Attract, TM46 Thief, TM47 Steel Wing, Twisted Spoon, Ultra Ball, Up-Grade, Water Stone, X Accuracy, X Attack, X Defend, X Special, X Speed

The following items translate into identical items with different names:

Berry → Oran Berry
Bitter Berry → Persim Berry
Burnt Berry → Aspear Berry
Gold Berry → Sitrus Berry
Ice Berry → Rawst Berry
Mint Berry → Chesto Berry
Miracle Berry → Lum Berry
Pink Bow → Silk Scarf
PRZ Cure Berry → Cheri Berry
PSN Cure Berry → Pecha Berry

The following items translate into different items with similar effects:

Mystery Berry (+5 PP) → Leppa Berry (+10 PP)
Polkadot Bow (+12.5% Normal Damage) → Silk Scarf (+10% Normal Damage)

The following items have no analog in Generation 3 and must be returned to the bag or PC (or deleted):

Berserk Gene, Black Apricorn, Blue Apricorn, Blue Sky Mail, Brick Piece, Eon Mail, Fast Ball, Flower Mail, Friend Ball, Gold Leaf, Gorgeous Box, Green Apricorn, Heavy Ball, Level Ball, Light Blue Mail, Love Ball, Lovely Mail, Lure Ball, Mirage Mail, Moon Ball, Morph Mail, Music Mail, Normal Box, Park Ball, Pink Apricorn, Portrait Mail, Rage Candy Bar, Red Apricorn, Silver Leaf, Slowpoke Tail, Surf Mail, TM01 Dynamic Punch, TM02 Headbutt, TM03 Curse, TM04 Rollout, TM07 Zap Cannon, TM08 Rock Smash, TM09 Psych Up, TM12 Sweet Scent, TM13 Snore, TM16 Icy Wind, TM20 Endure, TM24 Dragon Breath, TM31 Mud Slap, TM33 Ice Punch, TM34 Swagger, TM35 Sleep Talk, TM39 Swift, TM40 Defense Curl, TM41 Thunder Punch, TM42 Dream Eater, TM43 Detect, TM48 Fire Punch, TM49 Fury Cutter, TM50 Nightmare, White Apricorn, Yellow Apricorn

The following items cannot be held by a Pokémon:

Basement Key, Bicycle, Blue Card, Card Key, Clear Bell, Coin Case, Egg Ticket, Good Rod, GS Ball, HM01 Cut, HM02 Fly, HM03 Surf, HM04 Strength, HM05 Flash, HM06 Whirlpool, HM07 Waterfall, Item Finder, Lost Item, Machine Part, Mystery Egg, Old Rod, Pass, Rainbow Wing, Red Scale, S.S. Ticket, Secret Potion, Silver Wing, Squirt Bottle, Super Rod

A handy conversion chart is as follows:
    -0   -1   -2   -3   -4   -5   -6   -7   -8   -9   -A   -B   -C   -D   -E   -F

0- 0000 0001 0002 00B3 0003 0004 -- -- 005E 000E 000F 0010 0011 0012 0013 0014
1- 0015 0016 000D 0055 0056 0025 005F 0060 0061 -- 003F 0040 0041 0042 00DE 0043
2- 0044 004E 0062 00DF 006E 0050 0017 0018 0019 0049 0053 0054 004A -- 001A 001B
3- 001C 004B -- 004C 004D 004F -- -- -- 00B6 -- -- ++ -- 0045 0022
4- 0023 0024 -- -- -- -- -- -- 001D 00B7 0087 ++ 00CB 00D2 0085 0089
5- 0088 00D3 00BB 008C 0086 ++ 0067 0068 00BC ++ -- 00BD ++ ++ 00BE 00D1
6- 00D6 ++ 00CF ++ -- ++ 00CE ++ 00D9 00E1 00C2 00D4 00D0 008D 006A 006B
7- 00C3 00D5 ++ -- -- 00CD 00E0 00C4 -- 001E 001F 0020 0021 00CC 00C5 --
8- -- -- -- 006C 006D -- -- -- -- -- 00D7 002C 00C6 -- -- 00C7
9- 00D8 -- 00C8 -- -- -- 008A 00C9 ++ -- -- -- 002D ++ ++ ++
A- ++ ++ -- 00CA ++ ++ ++ ++ ++ 005D 00D9 -- 00DA 008B 008E --
B- -- ++ -- -- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ -- ++
C- ++ ++ ++ -- 0125 0126 ++ ++ ++ 012A 012B ++ ++ 012E 012F ++
D- 0131 0132 0133 ++ 0135 0136 0137 ++ 0139 013A 013B 013C -- 013D 013E ++
E- 0140 ++ ++ ++ 0144 0145 0146 ++ ++ ++ ++ ++ 014C 014D 014E 014F
F- ++ ++ ++ -- -- -- -- -- -- -- -- -- -- -- -- --
Value 0 represents no held item in both generations
Values marked "++" are items that can be held, but not migrated to Generation 3
Values marked "--" either cannot be held or are not valid items
__________

Other

Some other fields of interest:

Friendship, Pokérus and Move IDs are exactly the same in both generations (even for eggs)
Contest stats and ribbons should be initialized to all zeroes
The original location field should be set to 0xFE: Met in a trade
The original Poké Ball field should be set to 4: Poké Ball
The original game field should be set to 15: Not a main-series game

__________

Practical Example

After it was all said and done, I successfully migrated my original Ariados from Gold to FireRed using a custom utility. This was the play-through from when I first picked Ariados as my favorite.

The original:


The migrated:


During the testing phase, I did alter some attributes like gender, shininess and Unown's letter to make sure everything was working right. And it is. I haven't verified the Hidden Power stuff yet, but egads this is satisfying!

Take note of how the stats wound up. Skitters's total Stat Exp. exceeded 510 effort points' worth of growth, so things had to be scaled back a bit. The reason Special Attack and Special Defense are different is because of its Impish nature, which boosts Defense and nerfs Special Attack.

Now I'm really itching for an 8-bit cartridge interface on GBA so I can make this happen on the hardware.
GuyPerfect
Catgirl
Level: 68


Posts: 884/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-16-13 08:48:31 PM, in Migrating Pokémon from Generation 2 to 3 Link
Originally posted by Sanky
The full OT should be consistent between all of the trainers' Pokémon.

In one sense, it already is. The number displayed on the Summary screen remains the same.

As for the full 32 bits, I don't see a compelling reason for that. I can't think of any context where it's ever been the case that the original trainer of a traded Pokémon mattered, since it's an outsider no matter what. For two outsiders to have the same original trainer, unless there's something I'm not thinking of, is entirely meaningless. Unless you already happened to know that the upper 16 bits differed, there'd be no way you'd ever find out.

Originally posted by Sanky
This is slightly confusing. I'd prefer IV accuracy over Hidden Power accuracy (I'd perhaps make an exception if the Pokémon knows HP already).

Even under ideal circumstances, IV compatibility between generations is impossible. The mechanics are different, and the IVs themselves can't even match up (a maximum value of 15 in Generation 2 yields different stats than a maximum value of 31 in Generation 3). Growth rates also differ: exp.-based stat formulas are exponential, while EV-based formulas are multiplicative.

It's a case of trying to fit a square peg into a round hole. Accurate IV conversion simply can't be done, so I don't consider it a problem to use the least significant bit towards Hidden Power compatibility.

Originally posted by Sanky
Lastly, natures should be neutral, I guess.

I thought about that. A case can definitely be made that all Generation 2 Pokémon had neutral natures, but there's already a precedent for new mechanics changing old stats: the incorporation of Special → Special Attack/Special Defense changed performance of many Generation 1 Pokémon traded into Generation 2. It's natural progression for something similar to happen when incorporating Nature.

This also brings us back to the IV thing. You can't have the same stats in Generation 3 as you can in Generation 2. Even if you discount the variance in the formulas, there's still the matter of 65,536 stat exp. values yielding more distinct stat numbers than the 252 effort points can. Trying to shoehorn stats from Generation 2 into the Generation 3 engine isn't just a square peg, it's a fool's errand.
GuyPerfect
Catgirl
Level: 68


Posts: 885/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-18-13 05:26:10 PM, in Let's talk pokémon! Link
Proteanized Greninja has picked up in popularity on Battle Spot in the past couple of weeks. I mean, it was always popular, but now I'm seeing them 80% of the time and it's officially old (there's a certificate for it and everything). Let's add "It is not Greninja" to the list of reasons you never see Pikachu online.

Ever since I established a policy regarding my opponents, I've only had one battle. I'm gonna have to give up on Battle Spot for good. )-: The policy forbids participation with any opponent who has two or more Pokémon that satisfy the following attributes:

It can Mega Evolve (accounts for some entries in following items)
It is legendary (currently a pool of Xerneas, Yveltal, Zygarde, Articuno, Zapdos, Moltres)
It is "pseudo-legendary" (a pool of Dragonite, Salamence, Metagross, Zweilous, Goodra)
It is Greninja or Aegislash

Curiously, I haven't seen any legendaries lately, not even Mewtwo. Just a bunch of Greninja, Garchomp and Aegislash. Or perhaps some Aegislash, Greninja and Gengar. Or in some cases, a Mawile, Greninja and Aegislash.

If I wanted to play the same opponent every time, I'd add him to my friends list and challenge him to battles.
GuyPerfect
Catgirl
Level: 68


Posts: 886/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-19-13 01:19:41 PM, in Let's talk pokémon! Link
Originally posted by Pandaren
Why is Aegislash so common, by the way?

At 520, its base stat total is close to the top.
Steel resists a bunch of stuff, Ghost shores up its weakness to Fighting and doesn't cancel out any resistances.
Stance Change gives it superior Attack or Defense (both Physical and Special), depending on context.
Shadow Sneak is a great way to utilize that Attack before the opponent can do anything about it.
Sacred Sword, a high-power Fighting attack, works wonders on Dark types (which is both common and a weakness of Ghost).
King's Shield prevents damage, plus harshly lowers the opponent's Attack if a direct move is used.
It has an intrinsic advantage over Fairy types.

As with most Battle Spot opponents I've encountered, a good counter for Aegislash is to pack heat. King's Shield also cannot block Status moves, so if you want to put it to sleep or something, you're in control. It's difficult to counter Aegislash with brute force alone, but if you can pin it down in Blade Forme, it's pretty easy to dispatch.
GuyPerfect
Catgirl
Level: 68


Posts: 887/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-19-13 08:57:56 PM, in Let's talk pokémon! (last edited by GuyPerfect at 12-20-13 02:21:45 AM) Link
I decided to go with another experiment. I figure if people are going to be cheap online, then I'll be cheap online too! See, in Single Battles, you use three Pokémon. You can carry six in your party, which is what you have to choose from (Battle Box is not available in Battle Spot as far as I can tell). So I keep two teams with me: the fun team, and the cheap team. If my opponent's team fails the filter policy I outlined a couple posts ago, I use the cheap team. It's really quite straightforward.

Drawing from my experiences with Battle Spot trends, I put together a legendary-only team. The exact specs, minus stats, are as follows:

Xerneas (Heat Rock) - Psychic, Sunny Day, Moonblast, Horn Leech
Moltres (Power Herb) - Hurricane, Sky Attack, Solar Beam, Heat Wave
Mewtwo (Mewtwonite X) - Earthquake, Psychic, Ice Beam, Aura Sphere

In practice, this has been very successful. At least, it has against your typical Battle Spot opponent. I've been handily winning matches, and although it's not as entertaining as my usual teams, it is satisfying to know that a smart team beats high base stats any day. And this is a smart team with high base stats.

The Xerneas works as more of a tank than I expected, although I did pick it in particular to counter Dark, Dragon and Fighting attacks. If I put its IVs through my algorithm, I should be able to make it quite a bit more survivable, as the previous owner only played with it for around 150 effort points or so. Still, it's quite sturdy, and Moonblast does more damage than it has any right to be doing, so I won't complain. I had one person use Thief on Xerneas and steal the Heat Rock. I wish I could have seen the look on their face. It's a sort of a non-sequitur item for Xerneas, but it nonetheless does know Sunny Day. Horn Leech and Psychic were selected for some type diversity; I already had a Fairy attack, after all!

Moltres has a Power Herb, which allows multi-turn moves to execute in one turn. This is good, because Sky Attack and Solar Beam are both multi-turn moves. Though Solar Beam can already be cast in one turn during sunlight, hence Sunny Day over there on Xerneas. Sky Attack has been extraordinarily useful. Heat Wave is the token Fire attack, which beats up Bug and Steel types something handy. Hurricane is a bit of an odd ball, but it came to the rescue a time or two.

Mega Mewtwo X does most of the heavy lifting. Against Dark types, there's Aura Sphere. Against Steel (namely Mega Mawile and Aegislash) and Electric, there's Earthquake. Against Ground, Flying and Dragon (I'm looking at you, pseudo-legendaries), there's Ice Beam. And against Poison and Fighting, there's Psychic. The darn thing's base stats are so high that I tend to one-shot things that for all intents and purposes should be able to survive. This mega-legendary is, as far as I'm concerned, beyond broken.

Still, it's good to have a backup so I don't have to walk away from participants who couldn't put together a real team. I'm still hoping to be able to use the other guys a bit more often, though.
__________

EDIT:
Aw yeah. Using my cheap-ass team, I managed to land on the best of both worlds. Not only did I whoop a guy who was using an Aegislash, a Greninja with Protean and a Mega Charizard X, but he ragequit'd on the final turn before he could lose. (-:<

Not sure why all he decided to ragequit. What I can say is that when Mega Mewtwo X came out, his Aegislash used Shadow Sneak on it yet left it with 4 HP. The ensuing Earthquake did it in, and a Psychic took out his weakened Mega Charizard X after its encounter with Moltres. Mewtwo fell to a Dark Pulse, so I brought out Xerneas and used the one attack that made the most sense... Horn Leech. I was correct in my prediction that he'd use a Water type move, although Waterfall missed. He had just a few HP left after Horn Leech hit, and it refilled me to max. That's when the ragequit occurred.

So maybe he didn't want to lose to my cheap-ass team. Or maybe he didn't want to lose with his cheap-ass team. Or maybe he was doing a double-take for having gotten nailed by Horn Leech like that. Whatever the reason may be, it's looking like all of them are worth an ornery grin. (-:<
GuyPerfect
Catgirl
Level: 68


Posts: 888/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-22-13 07:02:43 PM, in Let's talk pokémon! Link
You forgot to add Golurk to FieryIce's list.
GuyPerfect
Catgirl
Level: 68


Posts: 889/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-24-13 01:14:38 AM, in GBA cartridge bus question... Link
Originally posted by stag019
Did you try slowing down the bus speed by unsetting bit 11 and setting bit 12 of the GBA register at 0x4000204?

I did, and no dice. Since ROM bank 0 is being read correctly, I don't think the bus speed is the issue. Since it's being read in the 0x4000-0x7FFF range, I think the MBC isn't being initialized properly. I'm more inclined to think that the voltage is the issue.
GuyPerfect
Catgirl
Level: 68


Posts: 890/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-24-13 06:12:32 AM, in Let's talk pokémon! Link
It's December 24, the last few hours of having a chance--miniscule though it may be--of finding a casual random matchup online. As you may know, the Japanese and Korean markets will be subjected to all the show-stopping bugs in Pokémon Bank tomorrow. With this comes a brand new influx of legendaries, forever hurling Battle Spot into the abyss with no chance for parole.

We'll be seeing legendaries of all colors for sure, and not much of anything else (at least for the next month or so). Some will be more common than others. These are my predictions:

Reshiram and Dialga will show up a lot because they're Dragon types that aren't weak to Fairy.
Rayquaza, Darkrai and Giratina (Origin Forme) will be overabused because they're popular.
Deoxys has historically been the base stat trump card, though it only excels in the stats appropriate to its forme.
Regigigas will continue to sit in the corner. No one's ever used it before, so why start now?
Genesect and Arceus will remain for the novelty, particularly Arceus with the Pixie Plate.

Aside from that, Pokémon bank brings with it a number of benefits. In particular, a large number of foolish trades will be fulfilled on the GTS, where people are offering legendaries for Feebas or whatever. We'll also see the remaining Pokédex introduced, including the many starters, things like Porygon and Unown, and the random things that have been unavailable like Rattata and Cottonee.

It'll also give me a chance to play through X again, provided you can store held items in the bank. Not only do I get to enjoy the game more that way, but I can churn out legendaries and rare items.
GuyPerfect
Catgirl
Level: 68


Posts: 891/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-24-13 07:26:04 PM, in What will you be doing on Christmas? Link
Rather than get my usual pepperoni frozen pizza, I decided to mark the occasion with a supreme frozen pizza. That way I'll have both red and green.
GuyPerfect
Catgirl
Level: 68


Posts: 892/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-26-13 01:34:13 PM, in Let's talk pokémon! Link
Originally posted by GuyPerfect
As you may know, the Japanese and Korean markets will be subjected to all the show-stopping bugs in Pokémon Bank tomorrow.

Called it. Here's the terrible Google Translate version:

Originally posted by Terrible Google Translate
December 26, 2013

Dear Customer

Nintendo Co., Ltd.
Associated with a connection failure of the Nintendo e-shop
Notice of delivery pause of " Pokemon bank "

After December 25 , failure of network services Wii U and Nintendo 3DS may become difficult to lead , an error occurs or is continuing , software " Pokemon bank " and " Tri- Force 2 The Legend of Zelda: Gods " we apologize that we have to apologize for any inconvenience to the customer , including the customer not to be able to download a , not available in all network services of 3DS · Wii U.

This failure , because the process of taking over is carried out when you start the nintendo e shop for the first time after creating the Nintendo Network ID ( "ID" below ) in the 3DS to " use record" have been carried out at the same time on a scale of more than expected it is a thing that you are experiencing to .

At our company , including a review of the system and deal with that this procedure to be successful , but we're working to reduce the load , but the access concentrator has continued , the situation is not improved . Therefore , Omotte 21:30 December 26 , we have to be allowed to suspend the delivery of " Pokemon bank " in order to achieve the relaxation of access concentration .

The resumption time of " Pokemon bank " delivery , so we will guide you again in conjunction with the period in which you can try for free , I am very sorry , that you please wait until delivery resumes , thank you.

In addition, the discount campaign of Nintendo e shop which is being performed on December 26 and December 25 , will do that in response to a connection failure of Nintendo e shop this is carried out again period . With regard to timing of implementation , as soon as it is decided , we will guide you .

So if I gather this correctly, they distributed enough Blazikenites to know just how many people were playing their game online, but failed to accommodate the number of users... ?
GuyPerfect
Catgirl
Level: 68


Posts: 893/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-27-13 03:55:20 PM, in How many VMs you have? Link
I have two VMs set up in VirtualBox, though I rarely use them. One's a Windows XP installation for when I need to install stuff that I don't want bogging down my main machine, and the other one's running a Linux web server for when I need to host files.
GuyPerfect
Catgirl
Level: 68


Posts: 894/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-28-13 12:41:17 PM, in Let's talk pokémon! (last edited by GuyPerfect at 12-28-13 12:47:14 PM) Link
Not sure who I was playing last night, but the level 3 Prize Money and Exp. Point O-Powers were quite useful in Restaurant LeWow. Thanks!

Certain Pokémon represent certain things to me, psychologically. For example, take Pikachu. Does anyone really care about Pikachu? I know I sure don't, but it continues to get all the special treatment what with its cartoon voice and surfboard and Light Ball and what-all. The only reason it keeps showing up is because Nintendo's marketing guys keep trying to shove it down our throats. Heads up, Nintendo: there are better Pokémon out there than Pikachu. Pikachu represents the feeble gesticulations of a marketing department that all these years later still can't get with the picture.

Garchomp represents one part Mary Sue and two parts Don't Give A Crap. In the past, I've expressed my displeasure for Diamond and Pearl, where everything from the story to the artificial road blocks to the relative levels of wild Pokémon and the Pokémon League were very poorly designed. Garchomp is the crescendo of this terrible workmanship, as it's the Champion's strongest Pokémon, it's a good 20 levels higher than any wild Pokémon you can encounter up to that point, and its base stats are higher than they really have any right to be. And it knows Earthquake. Even its face has a look of "Just try to beat our game, will you!?" and I'm none too thrilled that it can Mega Evolve. Out of context Garchomp is just fine, but put it at the end of Diamond and Pearl and now I hate the stupid thing every time I see it.

This brings me to Greninja. Of all the non-legendary, non-pseudo-legendary, non-Mega-Evolvers, it and Aegislash are the only two that made my list of opponents to not want to play against. And it's not Greninja's fault, really. Its moves are fitting for the concept, and are fine in most situations. But it's that Protean ability they gave it, which coupled with its moveset effectively means "All attacks are super-effective and receive a same-type bonus." I mean, even Aegislash is balanced by the fact that it's extremely easy to defeat while in Blade Forme. But Greninja with Protean? After I saw people using that, and considering Greninja's base speed, I figured that Greninja is about the most broken possible Pokémon mechanics-wise, with no balance mechanics to keep it in check. With Protean, Greninja is just barely tolerable and I typically disconnect if I see someone about to use one. So sue me.

And then someone with epic O-Powers challenged me to a Double Battle last night.

As it turns out, Mat Block is a thing that exists and is the name of a move that only Greninja knows. What does it do, you ask? Let's say it's like Protect for you and up to two of your closest friends, but it won't prevent those friends from attacking. Sure, it can only be used on the first turn after switching in, which would be fine if not for Protean. In a Double or Triple Battle, it has an effect of saying to your opponent, "You just sit there while I hammer on you for a bit," followed up by the usual Protean shenanigans. "Barely" is no longer the adverb I will use when considering whether Greninja is tolerable.

I'm not in the business of building all my teams to be able to counter a Greninja, just in case. My policy generally doesn't apply to personal battles: if you've got a team of legendaries or whatever I'll still go through with it. But call it a tantrum if you will, I'm just making it known that until further notice, I will not be battling against Greninja without appointment, no exceptions. If you challenge me, or I challenge you, and there's a Greninja in your team, there will be communications issues. It's nothing personal; just blame it on Game Freak.
GuyPerfect
Catgirl
Level: 68


Posts: 895/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-29-13 09:19:58 PM, in Let's talk pokémon! Link
For the brief time Pokémon Bank was available in eastern Asia, players were able to flesh out their Pokédexes, and now the GTS is full of everything that was missing. I gots me a Whimsicott yesterday for the same reason.
GuyPerfect
Catgirl
Level: 68


Posts: 896/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 12-30-13 08:21:29 PM, in Easiest games you've played Link
Hrm, I remember Mega Man 6 as being ludicrously easy. Part of it was experience from the previous games, but honestly, they turned the difficulty way down for that one.
GuyPerfect
Catgirl
Level: 68


Posts: 897/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 01-06-14 12:37:59 PM, in Easiest games you've played Link
Well, there was also this one game with the Grinning Colossus and the fire on the wall...
GuyPerfect
Catgirl
Level: 68


Posts: 898/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 01-08-14 02:00:32 PM, in GPL vs. permissive licenses WRT games (last edited by GuyPerfect at 01-08-14 02:00:40 PM) Link
Sort of a change of topic, but has GNU ever legally prosecuted anyone for violating the terms of the GNUter Agreement? Given the nature of source code, one would think you'd hear about it all the time, but I'm honestly not sure whether it's ever even happened or not.
GuyPerfect
Catgirl
Level: 68


Posts: 899/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 01-09-14 06:02:24 PM, in 3D Glasses Link
Originally posted by Kak64
The yellow ones are sort of leftovers from the SpongeBob 3D Movie (I don't remember which one). I've brought these glasses home and they are awesome as I can't find a way to make them work. Even the instructions say they won't work for anything else but I keep trying like an idiot. :/

My guess is polarized filters. Try this: go into the bathroom and look into the mirror. Put on the glasses. Look at the reflection of the glasses using only one eye at a time.
GuyPerfect
Catgirl
Level: 68


Posts: 900/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 01-09-14 06:37:54 PM, in 3D Glasses Link
Yup, that's the effect of polarized filters. They only let light through at a given angle, and when rotated 90 degrees, they block perpendicular light. This makes it impossible to see light through *both* lenses in sequence, which makes them ideal for stereoscopic video. Unlike the red/cyan solution, polarized glasses don't degrade color.
GuyPerfect
Catgirl
Level: 68


Posts: 901/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 01-22-14 01:20:28 PM, in Her Interactive .AVF Video Files (last edited by GuyPerfect at 01-22-14 01:23:00 PM) Link
Originally posted by lue
Remember that this is Windows thus Intel processors thus little-endian .

Little-endian makes more sense, honestly. The only case I've seen for big-endian is humans reading data in a hex editor, and if that's the issue, why not list bytes right-to-left instead?

Think about it. For any bus address X, you can store data Y as an 8-bit, 16-bit, 32-bit, etc. value without moving the starting location around. If the least-significant bytes are always first, it won't matter what size the data type is. With big-endian, a field occupied by both 8-bit and 32-bit data will need to do something like "X + 3" to read the 8-bit field.

Originally posted by Joe
Or the bottom-left. Windows is funny like that.

Once again, bottom-left makes more sense. The old top-left paradigm probably started from textmode console output, where lines of text were read left-to-right, top-to-bottom. But geometrically, positive Y is typically "up". You'll see this even in things like GPU textures like those used in OpenGL and DirectX: the first row of texels in the data is (nearly?) always the bottom one.

Some image file formats like those intended for use on the internet (GIF, PNG, JPEG) list the top scanline first so that while they're being downloaded (over dial-up), the image gradually appears on the page in the same direction the rest of the content does. But other formats, like Windows Bitmap or the aforementioned GPU textures, begin with the bottom scanline.
GuyPerfect
Catgirl
Level: 68


Posts: 902/1096
EXP: 2663632
For next: 65168

Since: 07-23-07


Since last post: 1.6 years
Last activity: 211 days

Posted on 01-22-14 01:27:07 PM, in Let's talk pokémon! Link
Pokémon Bank has re-appeared in the Japanese and Korean Nintendo eShops. Looks like they finally sorted out the whole "we might need more than one server to accommodate every user in the world" problem.
Pages: 1 2 3 4 5 6 7 8 9 10 ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
Jul - Posts by GuyPerfect


Rusted Logic

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

32 database queries, 45 query cache hits.
Query execution time:  0.096857 seconds
Script execution time:  0.044900 seconds
Total render time:  0.141757 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 147 column 137 - 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 286 - Warning: unescaped & or unknown entity "&page"
line 149 column 318 - Warning: unescaped & or unknown entity "&page"
line 149 column 350 - Warning: unescaped & or unknown entity "&page"
line 149 column 382 - Warning: unescaped & or unknown entity "&page"
line 149 column 419 - Warning: unescaped & or unknown entity "&page"
line 149 column 453 - Warning: unescaped & or unknown entity "&page"
line 149 column 487 - Warning: unescaped & or unknown entity "&page"
line 149 column 521 - Warning: unescaped & or unknown entity "&page"
line 149 column 558 - Warning: unescaped & or unknown entity "&page"
line 149 column 592 - Warning: unescaped & or unknown entity "&page"
line 149 column 626 - Warning: unescaped & or unknown entity "&page"
line 149 column 660 - Warning: unescaped & or unknown entity "&page"
line 149 column 694 - Warning: unescaped & or unknown entity "&page"
line 149 column 728 - Warning: unescaped & or unknown entity "&page"
line 149 column 762 - Warning: unescaped & or unknown entity "&page"
line 149 column 796 - Warning: unescaped & or unknown entity "&page"
line 149 column 830 - Warning: unescaped & or unknown entity "&page"
line 149 column 864 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 901 - 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 362 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 364 column 9 - Warning: missing <tr>
line 382 column 13 - Warning: missing <tr>
line 401 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 403 column 9 - Warning: missing <tr>
line 421 column 13 - Warning: missing <tr>
line 437 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 439 column 9 - Warning: missing <tr>
line 457 column 13 - Warning: missing <tr>
line 471 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 473 column 9 - Warning: missing <tr>
line 491 column 13 - Warning: missing <tr>
line 520 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 522 column 9 - Warning: missing <tr>
line 540 column 13 - Warning: missing <tr>
line 546 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 548 column 9 - Warning: missing <tr>
line 566 column 13 - Warning: missing <tr>
line 573 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 575 column 9 - Warning: missing <tr>
line 593 column 13 - Warning: missing <tr>
line 610 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 612 column 9 - Warning: missing <tr>
line 630 column 13 - Warning: missing <tr>
line 636 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 638 column 9 - Warning: missing <tr>
line 656 column 13 - Warning: missing <tr>
line 682 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 684 column 9 - Warning: missing <tr>
line 702 column 13 - Warning: missing <tr>
line 708 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 710 column 9 - Warning: missing <tr>
line 728 column 13 - Warning: missing <tr>
line 746 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 748 column 9 - Warning: missing <tr>
line 766 column 13 - Warning: missing <tr>
line 772 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 774 column 9 - Warning: missing <tr>
line 792 column 13 - Warning: missing <tr>
line 798 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 800 column 9 - Warning: missing <tr>
line 818 column 13 - Warning: missing <tr>
line 824 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 826 column 9 - Warning: missing <tr>
line 844 column 13 - Warning: missing <tr>
line 850 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 852 column 9 - Warning: missing <tr>
line 870 column 13 - Warning: missing <tr>
line 877 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 879 column 9 - Warning: missing <tr>
line 897 column 13 - Warning: missing <tr>
line 903 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 905 column 9 - Warning: missing <tr>
line 923 column 13 - Warning: missing <tr>
line 937 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 939 column 9 - Warning: missing <tr>
line 957 column 13 - Warning: missing <tr>
line 963 column 17 - Warning: missing <tr>
line 963 column 17 - Warning: discarding unexpected <table>
line 966 column 35 - Warning: missing <tr>
line 966 column 94 - Warning: unescaped & or unknown entity "&page"
line 966 column 126 - Warning: unescaped & or unknown entity "&page"
line 966 column 158 - Warning: unescaped & or unknown entity "&page"
line 966 column 190 - Warning: unescaped & or unknown entity "&page"
line 966 column 222 - Warning: unescaped & or unknown entity "&page"
line 966 column 254 - Warning: unescaped & or unknown entity "&page"
line 966 column 286 - Warning: unescaped & or unknown entity "&page"
line 966 column 318 - Warning: unescaped & or unknown entity "&page"
line 966 column 350 - Warning: unescaped & or unknown entity "&page"
line 966 column 382 - Warning: unescaped & or unknown entity "&page"
line 966 column 419 - Warning: unescaped & or unknown entity "&page"
line 966 column 453 - Warning: unescaped & or unknown entity "&page"
line 966 column 487 - Warning: unescaped & or unknown entity "&page"
line 966 column 521 - Warning: unescaped & or unknown entity "&page"
line 966 column 558 - Warning: unescaped & or unknown entity "&page"
line 966 column 592 - Warning: unescaped & or unknown entity "&page"
line 966 column 626 - Warning: unescaped & or unknown entity "&page"
line 966 column 660 - Warning: unescaped & or unknown entity "&page"
line 966 column 694 - Warning: unescaped & or unknown entity "&page"
line 966 column 728 - Warning: unescaped & or unknown entity "&page"
line 966 column 762 - Warning: unescaped & or unknown entity "&page"
line 966 column 796 - Warning: unescaped & or unknown entity "&page"
line 966 column 830 - Warning: unescaped & or unknown entity "&page"
line 966 column 864 - Warning: unescaped & or unknown entity "&page"
line 966 column 50 - Warning: missing </font> before </td>
line 966 column 901 - Warning: missing </font> before </table>
line 968 column 35 - Warning: missing <tr>
line 968 column 50 - Warning: missing </font> before </td>
line 968 column 137 - Warning: missing </font> before </table>
line 970 column 17 - Warning: discarding unexpected </textarea>
line 970 column 28 - Warning: discarding unexpected </form>
line 970 column 35 - Warning: discarding unexpected </embed>
line 970 column 43 - Warning: discarding unexpected </noembed>
line 970 column 53 - Warning: discarding unexpected </noscript>
line 970 column 64 - Warning: discarding unexpected </noembed>
line 970 column 74 - Warning: discarding unexpected </embed>
line 970 column 82 - Warning: discarding unexpected </table>
line 970 column 90 - Warning: discarding unexpected </table>
line 972 column 9 - Warning: missing </font> before <table>
line 984 column 25 - Warning: discarding unexpected </font>
line 993 column 58 - Warning: discarding unexpected </font>
line 971 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 161 column 22 - Warning: <img> lacks "alt" attribute
line 161 column 63 - Warning: <img> lacks "alt" attribute
line 161 column 112 - Warning: <img> lacks "alt" attribute
line 161 column 162 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 181 column 690 - Warning: <img> proprietary attribute value "absmiddle"
line 181 column 690 - Warning: <img> lacks "alt" attribute
line 194 column 2671 - Warning: <img> lacks "alt" attribute
line 195 column 2856 - Warning: <img> lacks "alt" attribute
line 196 column 3054 - Warning: <img> lacks "alt" attribute
line 197 column 3288 - Warning: <img> lacks "alt" attribute
line 266 column 10741 - Warning: <img> lacks "alt" attribute
line 267 column 10940 - Warning: <img> lacks "alt" attribute
line 268 column 11170 - Warning: <img> lacks "alt" attribute
line 338 column 18535 - Warning: <img> lacks "alt" attribute
line 339 column 18761 - Warning: <img> lacks "alt" attribute
line 340 column 18959 - Warning: <img> lacks "alt" attribute
line 341 column 19161 - Warning: <img> lacks "alt" attribute
line 342 column 19356 - Warning: <img> lacks "alt" attribute
line 347 column 19812 - Warning: <img> proprietary attribute value "absmiddle"
line 347 column 19812 - Warning: <img> lacks "alt" attribute
line 351 column 19924 - Warning: <img> lacks "alt" attribute
line 351 column 20100 - Warning: <img> lacks "alt" attribute
line 351 column 20330 - Warning: <img> lacks "alt" attribute
line 354 column 20544 - Warning: <img> lacks "alt" attribute
line 354 column 20702 - Warning: <img> lacks "alt" attribute
line 354 column 20884 - Warning: <img> lacks "alt" attribute
line 359 column 21686 - Warning: <img> proprietary attribute value "absmiddle"
line 359 column 21686 - Warning: <img> lacks "alt" attribute
line 367 column 22 - Warning: <img> lacks "alt" attribute
line 367 column 63 - Warning: <img> lacks "alt" attribute
line 367 column 112 - Warning: <img> lacks "alt" attribute
line 367 column 162 - Warning: <img> lacks "alt" attribute
line 378 column 15 - Warning: <img> lacks "alt" attribute
line 406 column 22 - Warning: <img> lacks "alt" attribute
line 406 column 63 - Warning: <img> lacks "alt" attribute
line 406 column 112 - Warning: <img> lacks "alt" attribute
line 406 column 162 - Warning: <img> lacks "alt" attribute
line 417 column 15 - Warning: <img> lacks "alt" attribute
line 428 column 696 - Warning: <img> lacks "alt" attribute
line 429 column 898 - Warning: <img> lacks "alt" attribute
line 430 column 1125 - Warning: <img> lacks "alt" attribute
line 431 column 1348 - Warning: <img> lacks "alt" attribute
line 442 column 22 - Warning: <img> lacks "alt" attribute
line 442 column 63 - Warning: <img> lacks "alt" attribute
line 442 column 112 - Warning: <img> lacks "alt" attribute
line 442 column 162 - Warning: <img> lacks "alt" attribute
line 453 column 15 - Warning: <img> lacks "alt" attribute
line 460 column 191 - Warning: <img> proprietary attribute value "absmiddle"
line 460 column 191 - Warning: <img> lacks "alt" attribute
line 461 column 299 - Warning: <img> lacks "alt" attribute
line 462 column 484 - Warning: <img> lacks "alt" attribute
line 463 column 733 - Warning: <img> lacks "alt" attribute
line 464 column 970 - Warning: <img> lacks "alt" attribute
line 465 column 1203 - Warning: <img> lacks "alt" attribute
line 466 column 1459 - Warning: <img> lacks "alt" attribute
line 467 column 1694 - Warning: <img> lacks "alt" attribute
line 476 column 22 - Warning: <img> lacks "alt" attribute
line 476 column 63 - Warning: <img> lacks "alt" attribute
line 476 column 112 - Warning: <img> lacks "alt" attribute
line 476 column 162 - Warning: <img> lacks "alt" attribute
line 487 column 15 - Warning: <img> lacks "alt" attribute
line 491 column 146 - Warning: <font> attribute "color" had invalid value "7C60B0" and has been replaced
line 494 column 577 - Warning: <img> proprietary attribute value "absmiddle"
line 494 column 577 - Warning: <img> lacks "alt" attribute
line 498 column 812 - Warning: <img> lacks "alt" attribute
line 499 column 987 - Warning: <img> lacks "alt" attribute
line 500 column 1166 - Warning: <img> lacks "alt" attribute
line 501 column 1674 - Warning: <img> proprietary attribute value "absmiddle"
line 501 column 1674 - Warning: <img> lacks "alt" attribute
line 509 column 3600 - Warning: <img> proprietary attribute value "absmiddle"
line 509 column 3600 - Warning: <img> lacks "alt" attribute
line 525 column 22 - Warning: <img> lacks "alt" attribute
line 525 column 63 - Warning: <img> lacks "alt" attribute
line 525 column 112 - Warning: <img> lacks "alt" attribute
line 525 column 162 - Warning: <img> lacks "alt" attribute
line 536 column 15 - Warning: <img> lacks "alt" attribute
line 551 column 22 - Warning: <img> lacks "alt" attribute
line 551 column 63 - Warning: <img> lacks "alt" attribute
line 551 column 112 - Warning: <img> lacks "alt" attribute
line 551 column 162 - Warning: <img> lacks "alt" attribute
line 562 column 15 - Warning: <img> lacks "alt" attribute
line 578 column 22 - Warning: <img> lacks "alt" attribute
line 578 column 63 - Warning: <img> lacks "alt" attribute
line 578 column 112 - Warning: <img> lacks "alt" attribute
line 578 column 162 - Warning: <img> lacks "alt" attribute
line 589 column 15 - Warning: <img> lacks "alt" attribute
line 600 column 675 - Warning: <img> lacks "alt" attribute
line 601 column 906 - Warning: <img> lacks "alt" attribute
line 602 column 1132 - Warning: <img> lacks "alt" attribute
line 603 column 1384 - Warning: <img> lacks "alt" attribute
line 604 column 1614 - Warning: <img> lacks "alt" attribute
line 607 column 2445 - Warning: <img> proprietary attribute value "absmiddle"
line 607 column 2445 - Warning: <img> lacks "alt" attribute
line 615 column 22 - Warning: <img> lacks "alt" attribute
line 615 column 63 - Warning: <img> lacks "alt" attribute
line 615 column 112 - Warning: <img> lacks "alt" attribute
line 615 column 162 - Warning: <img> lacks "alt" attribute
line 626 column 15 - 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 652 column 15 - Warning: <img> lacks "alt" attribute
line 687 column 22 - Warning: <img> lacks "alt" attribute
line 687 column 63 - Warning: <img> lacks "alt" attribute
line 687 column 112 - Warning: <img> lacks "alt" attribute
line 687 column 162 - Warning: <img> lacks "alt" attribute
line 698 column 15 - Warning: <img> lacks "alt" attribute
line 713 column 22 - Warning: <img> lacks "alt" attribute
line 713 column 63 - Warning: <img> lacks "alt" attribute
line 713 column 112 - Warning: <img> lacks "alt" attribute
line 713 column 162 - Warning: <img> lacks "alt" attribute
line 724 column 15 - Warning: <img> lacks "alt" attribute
line 728 column 146 - Warning: <font> attribute "color" had invalid value "7C60B0" and has been replaced
line 731 column 212 - Warning: <img> proprietary attribute value "absmiddle"
line 731 column 212 - Warning: <img> lacks "alt" attribute
line 741 column 3351 - Warning: <img> proprietary attribute value "absmiddle"
line 741 column 3351 - Warning: <img> lacks "alt" attribute
line 743 column 3926 - Warning: <img> proprietary attribute value "absmiddle"
line 743 column 3926 - Warning: <img> lacks "alt" attribute
line 751 column 22 - Warning: <img> lacks "alt" attribute
line 751 column 63 - Warning: <img> lacks "alt" attribute
line 751 column 112 - Warning: <img> lacks "alt" attribute
line 751 column 162 - Warning: <img> lacks "alt" attribute
line 762 column 15 - Warning: <img> lacks "alt" attribute
line 777 column 22 - Warning: <img> lacks "alt" attribute
line 777 column 63 - Warning: <img> lacks "alt" attribute
line 777 column 112 - Warning: <img> lacks "alt" attribute
line 777 column 162 - Warning: <img> lacks "alt" attribute
line 788 column 15 - Warning: <img> lacks "alt" attribute
line 803 column 22 - Warning: <img> lacks "alt" attribute
line 803 column 63 - Warning: <img> lacks "alt" attribute
line 803 column 112 - Warning: <img> lacks "alt" attribute
line 803 column 162 - Warning: <img> lacks "alt" attribute
line 814 column 15 - Warning: <img> lacks "alt" attribute
line 829 column 22 - Warning: <img> lacks "alt" attribute
line 829 column 63 - Warning: <img> lacks "alt" attribute
line 829 column 112 - Warning: <img> lacks "alt" attribute
line 829 column 162 - Warning: <img> lacks "alt" attribute
line 840 column 15 - Warning: <img> lacks "alt" attribute
line 844 column 164 - Warning: <font> attribute "color" had invalid value "7C60B0" and has been replaced
line 855 column 22 - Warning: <img> lacks "alt" attribute
line 855 column 63 - Warning: <img> lacks "alt" attribute
line 855 column 112 - Warning: <img> lacks "alt" attribute
line 855 column 162 - Warning: <img> lacks "alt" attribute
line 866 column 15 - Warning: <img> lacks "alt" attribute
line 882 column 22 - Warning: <img> lacks "alt" attribute
line 882 column 63 - Warning: <img> lacks "alt" attribute
line 882 column 112 - Warning: <img> lacks "alt" attribute
line 882 column 162 - Warning: <img> lacks "alt" attribute
line 893 column 15 - Warning: <img> lacks "alt" attribute
line 908 column 22 - Warning: <img> lacks "alt" attribute
line 908 column 63 - Warning: <img> lacks "alt" attribute
line 908 column 112 - Warning: <img> lacks "alt" attribute
line 908 column 162 - Warning: <img> lacks "alt" attribute
line 919 column 15 - Warning: <img> lacks "alt" attribute
line 923 column 159 - Warning: <font> attribute "color" had invalid value "7C60B0" and has been replaced
line 926 column 217 - Warning: <img> proprietary attribute value "absmiddle"
line 926 column 217 - Warning: <img> lacks "alt" attribute
line 932 column 1042 - Warning: <img> proprietary attribute value "absmiddle"
line 932 column 1042 - Warning: <img> lacks "alt" attribute
line 942 column 22 - Warning: <img> lacks "alt" attribute
line 942 column 63 - Warning: <img> lacks "alt" attribute
line 942 column 112 - Warning: <img> lacks "alt" attribute
line 942 column 162 - Warning: <img> lacks "alt" attribute
line 953 column 15 - Warning: <img> lacks "alt" attribute
line 978 column 25 - Warning: <img> lacks "alt" attribute
line 983 column 267 - Warning: <img> lacks "alt" attribute
line 147 column 137 - Warning: trimming empty <font>
line 149 column 901 - Warning: trimming empty <font>
line 278 column 12516 - Warning: trimming empty <i>
line 513 column 4008 - Warning: trimming empty <i>
line 517 column 4919 - Warning: trimming empty <i>
line 963 column 17 - Warning: trimming empty <tr>
line 966 column 901 - Warning: trimming empty <font>
line 968 column 137 - Warning: trimming empty <font>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 177 column 27 - Warning: <nobr> is not approved by W3C
line 383 column 27 - Warning: <nobr> is not approved by W3C
line 422 column 27 - Warning: <nobr> is not approved by W3C
line 458 column 27 - Warning: <nobr> is not approved by W3C
line 492 column 27 - Warning: <nobr> is not approved by W3C
line 541 column 27 - Warning: <nobr> is not approved by W3C
line 567 column 27 - Warning: <nobr> is not approved by W3C
line 594 column 27 - Warning: <nobr> is not approved by W3C
line 631 column 27 - Warning: <nobr> is not approved by W3C
line 657 column 27 - Warning: <nobr> is not approved by W3C
line 703 column 27 - Warning: <nobr> is not approved by W3C
line 729 column 27 - Warning: <nobr> is not approved by W3C
line 767 column 27 - Warning: <nobr> is not approved by W3C
line 793 column 27 - Warning: <nobr> is not approved by W3C
line 819 column 27 - Warning: <nobr> is not approved by W3C
line 845 column 27 - Warning: <nobr> is not approved by W3C
line 871 column 27 - Warning: <nobr> is not approved by W3C
line 898 column 27 - Warning: <nobr> is not approved by W3C
line 924 column 27 - Warning: <nobr> is not approved by W3C
line 958 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 346 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