Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,482,678
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-25-24 05:26 PM
Guest: Register | Login

0 users currently in ROM Hacking | 1 guest | 1 bot

Main - ROM Hacking - Things that make you think "WHY???" New thread | New reply

Pages: 1 2 3 4 5

Xkeeper
Posted on 03-10-07 11:48 PM Link | Quote | ID: 13556


Level: 105

Posts: 770/2846
EXP: 12027544
Next: 234716

Since: 02-19-07

Last post: 6059 days
Last view: 2796 days
Posted by Bio
Posted by Xkeeper
That's confusing. Why wouldn't they just set the sprite to self-destruct, then?

because it's also used to generate the smoke and the fireplace in Yoshi's house?
So if the X is n, don't self destruct and use the other one.

It just seems like more wasted processing power.

____________________
I dealt with it.

Kawa
Posted on 03-10-07 11:49 PM Link | Quote | ID: 13557


CHIKKN NI A BAAZZKIT!!!
80's Cheerilee is best pony
Level: 138

Posts: 89/5344
EXP: 30943074
Next: 719907

Since: 02-20-07
From: The Netherlands

Last post: 4497 days
Last view: 2632 days
Why not self-destruct - if not smoke?

____________________
Wife make lunch - Shampoo
Opera - give it a spin
Spare some of your free time?
<GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered
Kawa rocks — byuu

Techokami
Posted on 03-15-07 01:49 PM Link | Quote | ID: 15330


Red Paragoomba
Level: 18

Posts: 11/50
EXP: 28006
Next: 1891

Since: 02-19-07
From: HoleNet!

Last post: 6084 days
Last view: 5321 days
In Sonic 1, you can get bonus points at the end of the level by jumping into certain areas. Problem is, you only get 1/10th of the bonus value. Such a simple bug, but it was completely overlooked...

____________________
Click here to enter the SigChat

Xkeeper
Posted on 03-15-07 01:50 PM Link | Quote | ID: 15331


Level: 105

Posts: 847/2846
EXP: 12027544
Next: 234716

Since: 02-19-07

Last post: 6059 days
Last view: 2796 days
Are you sure? I've watched the S1 TAS(es), and the bonus values always seem to equal what they hit.

____________________
I dealt with it.

Techokami
Posted on 03-16-07 01:38 PM Link | Quote | ID: 15750


Red Paragoomba
Level: 18

Posts: 13/50
EXP: 28006
Next: 1891

Since: 02-19-07
From: HoleNet!

Last post: 6084 days
Last view: 5321 days
Yes, I'm quite sure. I'm not too sure if it was fixed in REV01, but it is present in REV00 (the version released in the US).

It was first pointed out on S2beta somewhere... can't seem to find the aniGIF example that was posted. =/

____________________
Click here to enter the SigChat

UnsurpassedDarkness
Posted on 03-18-07 04:37 AM (rev. 2 of 03-24-07 03:55 AM) Link | Quote | ID: 16409


Goomba
Level: 13

Posts: 1/25
EXP: 9884
Next: 383

Since: 03-14-07
From: Kentucky

Last post: 6050 days
Last view: 5857 days
It appears that my CSS broke...
Posted by BMF54123
- Switch Palace bottom right corner tile. It appears to have been hacked in (literally!) at the last minute, because it's crammed in with the pass-thru ledge tiles, and is the very last object on the Extended Objects list. Since it doesn't have the proper solidity settings, Nintendo cheated by placing an invisible, solid sprite on top of it in each level. Real professional, guys!
What’s even weirder is that the only other thing that tile is used for is a type of forest ledge that you can walk through, which, as far as I know, isn’t ever used, or even programmed in as an object. And then tile 0x131 right next to it is unused and solid….
Posted by BMF54123
However, there are no levels in the game that take advantage of this, due to a programming error: the coin is replaced with a solid block (either 0x1D or 0x1E), instead of the correct pass-thru block (tile 0x25)! This is probably easily fixed, though I haven't looked into it yet.
Are you sure it isn’t tile 0x152? ¬_¬ (so what is the code to this smiley now?)
Posted by setz
I found that very interesting. I never actually thought about why yoshi wasn't allowed in castles, I just figured because it would make some obstacles too easy or too hard/impossible.
Let’s not forget that Yoshi can’t fit through doors ether.
Posted by Raccoon Sam
Try Funky. It has note blocks with Coins on top of them.
No it doesn’t, but it does have that note block that spits an unlimited number of coins out, which would be another bug….
Posted by Raccoon Sam
Posted by Drag
Also the S in "Mario Start!" is the wrong palette. That always bugged the crap out of me.

Damn Straight!
It's really annoying. Very, very annoying.
Is it a technical restriction or can it be fixed by a few value changes?
Fortunately, I keep a record of all the hex addresses that I find useful (especially in this case, since I asked him for it):
Posted by BMF54123
Yeah, the "S" uses Mario's palette, rather than the yellow palette all the others use. Change the following bytes to fix it:
$133F: 30 -> 34
$1370: F0 -> F4
Posted by RT-55J
I'd be willing to bet that the platforms are what Yoshi is trying to eat.
They are.
Posted by Xkeeper
Why wouldn't they just set the sprite to self-destruct, then?
Probably because it would have been a waste of time, since it’s only in two levels that are one screen big, so there could never be enough sprites on-screen at once to cause slowdown.

____________________
SMW Central
YGO:TAS
Text-Image
Hex Conv.
I4 Posts
I3 Profile
I2 Profile
Send a PM

Raccoon Sam
Posted on 03-18-07 03:47 PM Link | Quote | ID: 16516


Cobrat
Level: 56

Posts: 102/672
EXP: 1379946
Next: 18230

Since: 02-19-07
From: Hi

Last post: 3467 days
Last view: 2698 days

No it doesn’t, but it does have that note block that spits an unlimited number of coins out, which would be another bug….

Yyeaahh... But what I meant is that the glitch effect is still the same:


____________________


The Kins
Posted on 03-23-07 12:02 PM Link | Quote | ID: 18381


Paratroopa
Level: 28

Posts: 46/140
EXP: 131223
Next: 115

Since: 02-19-07
From: AUSSIELAND

Last post: 5912 days
Last view: 5912 days
Not exactly emulation-related, but WTF enough to fit in-topic.

In the unpatched version of Sims 2 Nightlife, if a certain NPC, either through coincidence or fun with debug mode is embraced by a vampire, the game will get confused... and overwrite vital parts of the data file that contains all the game's objects.

I have no idea why the game even has such capability, let alone why letting a certain character get bitten causes it to happen.

HyperHacker
Posted on 03-25-07 03:22 AM Link | Quote | ID: 18899

...
Level: 73

Posts: 8/1220
EXP: 3366589
Next: 119279

Since: 03-25-07
From: no

Last post: 6090 days
Last view: 6074 days
-Just about everything in Pokémon R/B. What the fuck is with the internal orders of things? The Pokémon list is ordered seemingly at random with garbage scattered all through it! Why are some numbers hex and others (your money) binary-coded Decimal (eg 123456 = 0x123456)?

-Mario Kart 64's wastefulness. Sky colours are a pair of 16-bit (why?) RGB values. Every frame, the game reads them from memory and draws the sky. But to do this: It takes the location the sky colour table is at, does a bit of multiplying to find the first red value, and reads it. It then does the same math AGAIN to read the green and blue values, as opposed to adding 2 to the address. Finally, after reading all 12 bytes... it repeats the procedure for no reason at all!

-More wastefulness: A few polygons in the game use alpha translucency. The polygon data structure has a 4-byte colour block (red, green, blue, alpha). But the alpha byte is always zero, and some completely different method is used to set the alpha. Also, there are 20 tracks in total, but track IDs are 16-bit!

-Space Station: Silicon Valley. Was this game tested at all? Did they even run it once before compiling it and sending it off for manufacturing? So many bugs... There's tiny fragments of source code and developer comments in RAM too.

Posted by Tweaker
Posted by The Kins
I would kill to get my hands on the SMW source code, and do a word search for comments with "HACK" or the Japanese equivalent in it.

I'd be more inclined to think it'd be called "hotfix" or something similar...
No, Nintendo uses the word "hack" often in their source code. Don't ask how I know this.

Posted by UnsurpassedDarkness
Let’s not forget that Yoshi can’t fit through doors ether.
He can, but only if Mario is small. What's up with that?

Higsby
Posted on 03-25-07 03:29 AM Link | Quote | ID: 18907


Pokey
Level: 57

Posts: 230/681
EXP: 1407735
Next: 78193

Since: 02-19-07
From: Canada

Last post: 6118 days
Last view: 5913 days
Posted by HyperHacker

Posted by UnsurpassedDarkness
Let’s not forget that Yoshi can’t fit through doors ether.
He can, but only if Mario is small. What's up with that?


I'm guessing because in the origional SMW doors were never placed in outdoor levels so they found no need to fix it.

BMF54123
Posted on 03-25-07 07:51 AM Link | Quote | ID: 19013


Buzzy Beetle
Level: 44

Posts: 139/375
EXP: 575268
Next: 36017

Since: 02-19-07
From: [citation needed]

Last post: 6085 days
Last view: 6085 days
Posted by HyperHacker
Posted by UnsurpassedDarkness
Let’s not forget that Yoshi can’t fit through doors ether.
He can, but only if Mario is small. What's up with that?

I'm guessing the game checks the position of Mario's head when determining whether or not he can enter a door, and it's simply too high up when he's powered-up and riding Yoshi. The same thing happens with the small door when he's not riding Yoshi (only small Mario can enter).

____________________
[citation needed]

Shiryu
Posted on 03-25-07 01:24 PM Link | Quote | ID: 19058


Bloober
Level: 47

Posts: 112/437
EXP: 723646
Next: 42557

Since: 02-19-07

Last post: 6119 days
Last view: 5991 days
Posted by BMF54123
Posted by HyperHacker
Posted by UnsurpassedDarkness
Let’s not forget that Yoshi can’t fit through doors ether.
He can, but only if Mario is small. What's up with that?

I'm guessing the game checks the position of Mario's head when determining whether or not he can enter a door, and it's simply too high up when he's powered-up and riding Yoshi. The same thing happens with the small door when he's not riding Yoshi (only small Mario can enter).

this would make sense, becouse if you put 2 doors together you can also enter while riding yoshi.



____________________
Generated a 991044 foot, 10.4-inch twiggy catgirl with orange hair, who weighs 315,239,939,065.9 pounds and has soft A-cup breasts, and it only took 0.00031 seconds.

Kawa
Posted on 03-25-07 01:38 PM Link | Quote | ID: 19060


CHIKKN NI A BAAZZKIT!!!
80's Cheerilee is best pony
Level: 138

Posts: 137/5344
EXP: 30943074
Next: 719907

Since: 02-20-07
From: The Netherlands

Last post: 4497 days
Last view: 2632 days
Posted by HyperHacker
-Space Station: Silicon Valley. Was this game tested at all? Did they even run it once before compiling it and sending it off for manufacturing? So many bugs... There's tiny fragments of source code and developer comments in RAM too.
...
No, Nintendo uses the word "hack" often in their source code. Don't ask how I know this.
Was SSSV made by Nintendo? Do I win a cookie?

____________________
Wife make lunch - Shampoo
Opera - give it a spin
Spare some of your free time?
<GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered
Kawa rocks — byuu

Xkeeper
Posted on 03-25-07 05:43 PM Link | Quote | ID: 19096


Level: 105

Posts: 1029/2846
EXP: 12027544
Next: 234716

Since: 02-19-07

Last post: 6059 days
Last view: 2796 days
Link's Awakening's map is auto-generated based on doors in rooms (well, sort of). Rooms are marked off on a mmap first, and the connections are drawn based on "doors" (the half-tile ones that appear between two 16x16 blocks)

This makes sense, except that if you want to have an open, non-door screen boundary, you have to cover up the door by another tile. Oops.

(Usually, it's what removes the "room template" wall anyway, so it works out in the end)

____________________
I dealt with it.

Koitenshin -∞
Posted on 03-25-07 06:35 PM (rev. 3 of 03-25-07 06:36 PM) Link | Quote | ID: 19110

Happy Hour!
Level: 81

Posts: 7/1556
EXP: 4849028
Next: 143821

Since: 03-25-07

Last post: 2675 days
Last view: 2673 days


Here you go.

On WTF game topics, here's Secret of Mana. One thing that made me wtf is how they linked certain treasure chests to events and didn't disable it in the final game. The only thing it would be useful for IMO is breaking the game heavily. (otherwise known as debugging)

But you can sequence break the game so bad you can jump right to the ending. XD

____________________
Quiz Result Provided By: theOtaku.com.
What FF7: Advent Children Character Are You?

HyperHacker
Posted on 03-26-07 04:48 AM Link | Quote | ID: 19322

...
Level: 73

Posts: 48/1220
EXP: 3366589
Next: 119279

Since: 03-25-07
From: no

Last post: 6090 days
Last view: 6074 days
Posted by Kyoufu Kawa
Posted by HyperHacker
-Space Station: Silicon Valley. Was this game tested at all? Did they even run it once before compiling it and sending it off for manufacturing? So many bugs... There's tiny fragments of source code and developer comments in RAM too.
...
No, Nintendo uses the word "hack" often in their source code. Don't ask how I know this.
Was SSSV made by Nintendo? Do I win a cookie?
It was made by DMA, which from what I hear, renamed to Rockstar. Surprise? It was for the N64 though.

Dwedit
Posted on 03-26-07 10:45 AM Link | Quote | ID: 19418


Red Paratroopa
Level: 30

Posts: 20/162
EXP: 163131
Next: 2738

Since: 03-07-07
From: Chicago

Last post: 3518 days
Last view: 1612 days
Going back to the spirit of the original thread...
A while ago I disassembled a chunk of code from Dragon Warrior 3. The code is responsible for checking which tiles are underneath the four allies, testing if the tile number is flagged as a swamp or barrier tile, and calling the routine to deal damage to the player. Normally it works fine, but it is possible to get this code to fail in a spectacular way. This happens to be a huge memory corruption bug targeted at the area around your stats.

The way it works is that it iterates over each party member, looks at the tile under the player (which happens to be nicely stored somewhere), and tests if that tile number has the relevant tile-flags set. Because there may be a dead party member, and dead party members go to the back of the walking formation, it keeps a small table to see who's still alive. For example, if the second party member was dead, and the other 3 were alive, the table would contain [0,2,3]. The game also keeps track of the number of living party members, and uses that number to terminate the loop, so it wouldn't check a fourth member if there were only 3 living members.

The code is structured pretty much like this:

i=0;
do
{
t = tile_under_player[ i ]
p = living_player[ i ]
if t is a swamp tile, do 2 damage to player #p
if t is a barrier tile, do 15 damage to player #p
i++
} while (i != living_members)


There's an item in DW3 called the Dream Ruby. Normally you just collect it, then take it to the elf queen, and get the Wake-up Powder. But if you use the Dream Ruby as an item, it paralyzes the character who uses it. This paralysis is slightly bugged: It doesn't check if the entire party is paralyzed or dead after you use it. Then there are situations in the game where a member of your party must split from the rest, especially the "fortune telling" house in Assaram. Usually the lead character of the party splits from the group, leaving the allies behind. But if the lead party member is paralyzed or dead, the next character splits ahead instead. Now the kicker: if the lead party member is dead, and the rest of the party is either dead or paralyzed, you will control the leading dead party separate from the other allies.

So now we have a party of one dead member. Here's the swamp-tile-checking routine's fatal flaw: It increments the character number, then tests if it EQUALS the number of living party members or not. So we have character #1, and there are 0 living party members. Now we have a loop overflowing past the limit, until it repeats 256 times. Suddenly, it's reading way out of bounds for the tile_under_player table and living_party table. Now it reads some random bytes from the zero page and interprets them as tiles underneath the player, then picks another random value from the zero page as the player to deal damage to.

So what happens when it deals 2 damage to a player number out of bounds? The players stats are stored in an interleaved-like format. Player 1's HP is followed by Player 2's HP, then Player 3's HP and so-on. When it deals 2 damage to a player number greater than 3, it will modify some other stat. For example it will decrease a player's MAX HP by 2, or maybe their strength, or even their Name or Inventory contents. If the 16-bit value at the random address goes down to zero, it is set to a minimum of zero, and a message is displayed indicating that the player has died.

Now, it will do this many many times each step you take. It's looking through the entire zero page for any numbers which happen to be a swamp tile number after ANDing with $1F. Then it's taking a corresponding byte as a character number, and decreasing some random stat by 2. Then it's going to display that a character has died about 10 times each step you take.

All because the programmer never bothered to properly use a less than operator instead of a not equals operator (BVC vs BNE instruction).

I made a video demonstrating the bug on Youtube. http://www.youtube.com/watch?v=38bEtt6Bxv8
The video shows some item being replaced with the Final Key. Also the max HP of some character goes down to zero.

____________________

theclaw
Posted on 03-26-07 12:20 PM Link | Quote | ID: 19427


Panser
Level: 42

Posts: 1/348
EXP: 512825
Next: 8537

Since: 03-26-07

Last post: 4160 days
Last view: 2111 days
Hello everyone. I was just lurking around. Decided I may as well register having been on these boards a long time anyway.

One 'WTF' thing I saw is how Pokemon Red/Blue/Gold/Silver/Ruby/Sapphire were all exactly doubled in ROM size in every non-Japanese cartridge. Notice that only these specific versions were doubled during translation, none of the 'extra' ones like Yellow for example.

Another discovery I'd made is that the original Japanese release of Pokemon Green has no wild encounters whatsoever on the Cinnabar or Seafoam coasts. A miniscule difference in technical terms, but very significant to players.

Oh, and here is something few people know the full story about. Controller rumble was entirely removed from all games in Mega Man Anniversary Collection and Mega Man X Collection which had it on the PSone. Including all in-game references to said feature. Several, if not every, game in the Complete Works series had it. As well as Mega Man X5 and Mega Man X6 on PSone. Also, the incredible PC conversion of Mega Man X8 is the only Mega Man game on that platform to feature rumble.

____________________

Kles
Posted on 03-26-07 01:35 PM Link | Quote | ID: 19441


Level: 75

Posts: 768/1301
EXP: 3717217
Next: 109687

Since: 02-19-07
From: Canada

Last post: 5481 days
Last view: 5476 days
Why is IIDX so hard? Argh!

HyperHacker
Posted on 03-26-07 11:51 PM Link | Quote | ID: 19597

...
Level: 73

Posts: 66/1220
EXP: 3366589
Next: 119279

Since: 03-25-07
From: no

Last post: 6090 days
Last view: 6074 days
theclaw, that reminds me of the PSX port of Chrono Trigger.

1) It high-level emulates a SNES ROM. (I suppose this was easier than porting a game that was probably written entirely in Assembly.) But rather than use the English ROM for the English version, they use the Japanese ROM and hack all text code to load English strings and fonts from external files.

2) The manual indicates that the programmers were too lazy to change any dialogue. There is a table that says like "If the game tells you to press Y, press Square". But they eventually did change it, because in the game, it actually shows the PSX buttons instead of the SNES ones.
Pages: 1 2 3 4 5


Main - ROM Hacking - Things that make you think "WHY???" New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.031 seconds. (348KB of memory used)
MySQL - queries: 82, rows: 122/122, time: 0.020 seconds.