(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-19-24 12:10 AM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - Bosses Drop Heart Pieces -- Zelda 3 ASM Hack
  
User name:
Password:
Reply:
 
Options: - -
Quik-Attach:
Preview for more options

Max size 1.00 MB, types: png, gif, jpg, txt, zip, rar, tar, gz, 7z, ace, mp3, ogg, mid, ips, bz2, lzh, psd

UserPost
Euclid
Posts: 41/83
Originally posted by Reshaper256
The "kill boss again" tag isn't why hearts don't drop in those miniboss rooms - the game won't allow heart containers *anywhere* in Ganon's Tower, even in rooms without the "kill boss again" tag. The heart container code always checks what dungeon you're in, and makes the heart container instantly "go away" when you're in any room of Ganon's Tower.

This will occur with or without the "kill boss again" tag being set in the room.

Strange o strange why it works in my rom, mid boss = no hearts, level boss = heart container + crystal/pendant, I've even tried it in a cave without any level and it works, ah well, maybe I did do something else to my code, because that is so few years ago, anyway you're dealing with heart pieces, so it could be different there.

Originally posted by Reshaper256
Also, the code you gave me only affects bosses dropping heart *containers* - if the boss is dropping a heart *piece*, the code has no effect whatsoever.

so do you want to stop the drop all together, I have that in .asm, kill boss = drop crystal/pendant, no heart containers (5 rupees if the code fails, yes i've put a check), this doesn't take in account any headers or so, just that if the room is flagged with clear level then the crystal/pendant will drop.

Note that if it's a mid boss etc you will want to tag it along with "kill boss again" header, otherwise you can't even open up the subscreen because it think you've killed a boss, oh yeah i just remembered what that header is used for

.ORG $9EE4F
LDA #$DA ; give out 5 rupees just in case this patch fails
.end

.code
somewhere:
LDA $0403 ; teh code, I'm sure you know it.
ORA #$80
STA $0403
JSL $1DF65F ; replacement code
RTL
.end

.ORG $9EE53
JSL somewhere ; overwrote a JSL
.end

.ORG $5EF4C
NOP ; NOPing the kill boss again header.
NOP
.end
Reshaper256
Posts: 76/196
Originally posted by Euclid
Didn't i like told you what that tag does already?
I was basically asking both of you for a better explanation of what you thought the tag did, since MON had just said that it didn't do anything. I could have either asked you to explain your thinking a little better - or I could have just decided that you were totally wrong and that MON was right about it, without even asking you again why you thought the tag was so important.

Originally posted by Euclid
Kill boss again with agahnim 2 as dungeon with a boss in the room = no heart drop.
Okay, now I clearly see why you wanted me to do this to start with:

1. You believed that the "kill boss again" tag is needed for bosses to not drop hearts.

2. You believed that the code you gave me will stop *any* item from being dropped from a boss, including heart *pieces*.

The "kill boss again" tag isn't why hearts don't drop in those miniboss rooms - the game won't allow heart containers *anywhere* in Ganon's Tower, even in rooms without the "kill boss again" tag. The heart container code always checks what dungeon you're in, and makes the heart container instantly "go away" when you're in any room of Ganon's Tower.

This will occur with or without the "kill boss again" tag being set in the room.

Also, the code you gave me only affects bosses dropping heart *containers* - if the boss is dropping a heart *piece*, the code has no effect whatsoever.

Originally posted by Euclid
With that code you can eliminate the agahnim 2 bit and apply it to every dungeon/caves/house/whatever room.
Since the "kill boss again" tag doesn't control whether heart containers drop from bosses or not, and the game genie code you gave me causes the heart container code to always think you're in Ganon's Tower, heart containers will *always* instantly disappear, everywhere - in every room of the game - regardless of whether the "kill boss again" tag is set in that room. This means that even normal bosses won't drop heart containers, so you can't receive any pendants or crystals - clearly a problem.
MathOnNapkins
Posts: 532/1106
Originally posted by Euclid
Didn't i like told you what that tag does already?


In clear English, no. I looked at the code for "Kill Boss Again," it does not appear to do anything useful.
Euclid
Posts: 40/83
Didn't i like told you what that tag does already?

Kill boss again with agahnim 2 as dungeon with a boss in the room = no heart drop.

With that code you can eliminate the agahnim 2 bit and apply it to every dungeon/caves/house/whatever room.
MathOnNapkins
Posts: 531/1106
well... I tested it out in the lanmolas' room in Ganon's Tower while disabling the SW Kill enemy to open door. While the 'kill boss again' tag seems to do some of the same work that the 'sw kill enemy to open door' tag might do, it wasn't enough to open the doors. It just checks to see if all sprites in the room are dead and returns a value based on that. It then zeroes out its tag value, and zeroes out $7E0FFC. I don't know what $0FFC is used for at this point.

So yeah, I'm having a hard time seeing how this tag is useful.
Reshaper256
Posts: 75/196
What do you and Euclid think this tag does? MON just said that it "does pretty much nothing", so are you two saying that the tag has some sort of effect he doesn't know about? If MON's right, I see no reason to even worry about the tag.
Dude Man
Posts: 48/96
Like what Euclid said, The kill boss again tag is enabled only in Agahim 2 (or any entrance that uses it)
Other dungeons/houses/caves can not use that tag.
MathOnNapkins
Posts: 529/1106
As I recall, the "Kill Boss Again" tag does pretty much nothing. Might just be a placeholder.
Reshaper256
Posts: 74/196
That is a game genie code, right?

Could you explain how it affects the kill boss again tag? From what I can see, it edits a value in the middle of the heart container's 'self destruct' routine, making all heart containers in the game instantly disappear when they try to spawn onto the screen. I enabled the code and beat Trinexx in an unaltered ROM, and it didn't drop a heart container, leaving me stranded in the bossroom when I couldn't make the crystal fall down. In my hack it wouldn't even affect heart *pieces* because it doesn't edit anything in the heart piece code; the edit is in the heart container code.

By the way, I've completed a new version of the hack - now minibosses don't drop heart pieces, and I'm sure that heart pieces won't start reappearing after you collect them.

You can download the most recent version here: bossheartsv11.zip
Euclid
Posts: 39/83
That gets the "Kill boss again" header working, so in a room where that room header does not exist and instead have say the normal "Clear room to end level" or something, the game acts normally when you kill the boss and drops the heart container (or whatever you set them to), just look in Hyrule Magic if you don't get what i mean, it works, you don't need any other asm code to make it work.

As for the Agahnim 1 dungeon, that's normal when it drops a ether medallion, that's why that door is locked after you beat him.
Reshaper256
Posts: 73/196
Originally posted by Euclid
I got a codes for you.

05EF4CC9 and it's done, the kill boss again will work in all dungeons (that is including caves)
Oh, this is a game genie code, lol, it took me a while to figure that out. I've never actually messed with them in hacking before. So what this code does is changes $05:EF4C from a BNE (branch if we're not in Ganon's tower) to a CMP, which basically causes it to do nothing, so the game will always assume you are in Ganon's tower when it drops the heart container, thus causing the container to *self destruct*.

The problem with this code is that it won't allow even regular bosses to drop heart containers, therefore you wouldn't be able to collect the pendants/crystals either.

You probably already know that, though. I've already made a work-around for this hack that JSLs to a new routine before it does the heart *piece* code, which checks whether you are in one of the three rooms which contain minibosses, and if so, it kills the heart piece before it even appears. And since this new check is room-based instead of dungeon-based, it'll enable you to put minibosses in any dungeon, and just add their rooms to the list of miniboss rooms to check. (Of course, assuming you're also using this hack to make all bosses drop heart pieces.)

Originally posted by Dude Man
I have an interesting story...
I've actually encountered a similar situation, easy to replicate - just walk into the room with the Agahnim battle (I did it in the first one, but both may work) with the value at $0403 in RAM frozen as #$80: Agahnim won't be there, and the ether medallian will drop.

Here, I'll even attach an SNES9x savestate, right at Agahnim:
Dude Man
Posts: 45/96
I have an interesting story.
I was play testing Agahims dungeon for Zelda DP. I set a hole and forgot to change it's pointer and when going down landed in the boss room of Dungeon two. Which at the time was the same room Arghus was in in the original. And Arghus was the boss. I killed him just for kicks and a medallion dropped instead of the pendant. Not just graphically either. and as a side note. I was using the mountain tower boss room so the pendant fell in the middle of the room.

-Fell into boss room of another dungeon
-Was using the Mountain tower boss room which made the pendant fall in the middle
-was fighting Arghus in his room from the original
-pendant was replaced with a medallion.

This was a while ago... maybe a year. I haven't replecated the glitch yet.
Euclid
Posts: 38/83
I got a codes for you.

05EF4CC9 and it's done, the kill boss again will work in all dungeons (that is including caves)
Reshaper256
Posts: 72/196
It wouldn't have been easier, but yeah, I also had that idea when starting the hack. The problem I had with doing it that way is that it keeps you from using heart containers elsewhere in the game (unless you went in and changed the heart *piece* code into a heart container as well...) but like a said, this was pretty easy to do.

All this hack does is change the items dropped by the bosses to heart pieces, and makes it so the heart pieces still cause the treasure to drop - and actually I've went back in and fixed what I *thought* could cause heart pieces to reappear, so that now I'm sure they won't. It was actually a simple oversight - when I first changed the values that are written to $0403, I didn't really know why it worked, just that it did. I changed them from #$40 (setting bit 6) and #$20 (setting bit 5), both to #$80 so they would always set bit 7 and the treasure would drop. Now that I understand that that's why it worked, I went in and changed it so that they set the "old" bits they were supposed to, along with bit 7 - so I don't think the whole 'heart pieces reappearing' thing will be a problem anymore.

Before I post an updated version of the hack, however, I also want to take care of the biggest problem concerning this hack, which is that it allows the "mini-bosses" in Ganon's Tower to drop heart pieces, meaning you could go back in and fight them repeatedly, and they'd just keep dropping more heart pieces. It shouldn't be too hard to fix - all I have to do is move the code that Euclid mentioned above from the heart container's routine to the heart piece's routine, so that the heart piece checks the dungeon it's in, and if it's Ganon's Tower, it self-terminates before it appears.
Ninetales
Posts: 158/894
Would it have been easier to simply change the code for the heart container to make it act like a heart piece, but with the added code needed to drop the crystal? It would (I think) alleviate the problem of other heart pieces reappearing if they were different sprites altogether.

--Kamek77
Euclid
Posts: 37/83
Regarding making sure the mid bosses dont' drop hearts, make the kill boss again header work for all dungeons, currently it's hardcoded to the last dungeon, and it only requires the nop of a branch to make it work for all.
Reshaper256
Posts: 70/196
Originally posted by Phinsfan
How long did this take?
About a day, mostly because I didn't have any savestates and had to actually play through the game to get to all the bosses. Of course, this isn't a very complicated hack. It was pretty easy to locate the values that control what item is dropped by each boss - actually most of them are the *same* value, and is tied into the 'exploding' boss death routine. The only hard part was really determining what actually causes the pendant/crystal to drop, which turned out to be in the code for the heart container. The code for the heart container sets bit 7 of $0403 in RAM - and when this bit is set, the game knows that the boss has been defeated, the heart container has been picked up, and it needs to drop the pendant/crystal. I altered some of the code for the heart *piece* so that it also sets that bit when it is collected, causing the treasure to fall.

Originally posted by spel werdz rite +
If you could find a way so that the bosses don't drop heart containers after you beat them once, that would be nice!
Do you mean making it so bosses reappear in the boss-rooms even after you beat them, so you can fight them again - but also so that you would only receive a heart and pendant/crystal the first time you won the fight? That's an interesting thought... I'll store that one away.

Originally posted by noha420
Always cool, thanks for sharing. Are you going to do more work on this?
Yes, I actually want to try to make a hack that would allow *any* boss to drop *any* item you wanted it to. That would be many times more complicated, however - this was a very simple hack, as you can tell if you go in and look at the ASM file.
noha420
Posts: 12/78
Always cool, thanks for sharing. Are you going to do more work on this?
spel werdz rite
Posts: 1023/1796
If you could find a way so that the bosses don't drop heart containers after you beat them once, that would be nice!
Deleted User
Posts: 130/-7750
How long did this take?
This is a long thread. Click here to view it.
Acmlm's Board - I3 Archive - ROM Hacking - Bosses Drop Heart Pieces -- Zelda 3 ASM Hack


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.004 seconds; used 381.05 kB (max 443.22 kB)