Sprite Graphics Editing

Page 2 of 3 Previous  1, 2, 3  Next

Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Sun 20 Oct 2013 - 7:25

Moving amos pallete is at 02B759: 0b not headered. Normally 0b is green but the green gets rewritten to gold. I guess green sprites (green soldiers) won't work with Amos in screen. You can use the palette key, just substract 10 similar to the deku scrub (blue is 09 instead of 19, red is 07 instead 17).

blue amos 02B759: 0b -> 09:

Sprite Graphics Editing - Page 2 Legend13

Tektites are loaded twice:
06/B422 (that when calculating it with sprite index C9) but this doesn't count. You need to change:
blue tektite 03/0D8E: 09 (blue - here you need to change the palette as with the amos: blue is 09 instead of 19, red is 07 instead 17)
red tektite 03/0D8f: 07 (red - here you need to change the palette as with the amos: blue is 09 instead of 19, red is 07 instead 17)

Summary:
Code:
crab giving rupees when lifted bush:  03/2915: 09
amos when awoke: 02/B759: 0b
blue tektite 03/0D8E: 09
red tektite 03/0D8f: 07  

all without header. Use the palette key and substract 10 to give new palette (e.g. red 17=07, blue 19=09, etc.)
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Sun 20 Oct 2013 - 13:53

It seems like the screens are having their own palette; if I set a green soldier into a screen with the amos, he will change golden (did not change the green soldier palette):
Sprite Graphics Editing - Page 2 Legend14

Does anybody know more here? This may also be important to know for the deku platforms at which conditions the color changes, SePH, as mentioned in the pm... (I know e.g. that the glove make a palette replacement...)
Sprite Graphics Editing - Page 2 Image511
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Founder on Sun 20 Oct 2013 - 16:16

All the sprites in the game use different palette sets, you can read about it in my compendium faq (pages 230 to 238) and then this picture will make more sense to you!

Sprite Graphics Editing - Page 2 Image3_zps38bcb664

You can edit all those sets directly in the graphic schemes menu in HM (you can have up to 71 different palette sets which is more then enough Razz). Each palette number gives you the opportunity to change the dungeon palette that loads (in dungeons only) and three palettes related to sprites!

Founder

Sprite Graphics Editing - Page 2 Image212

Since : 2012-06-19

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Sun 20 Oct 2013 - 16:51

Ah I see, so this isn't a problem Smile That's good.
Then you just need to tell me which palette I should switch the superbomb (for bright green) and the deku platform into in the list you're going to make ^^
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Founder on Sun 20 Oct 2013 - 17:00

Yeah it's actually really easy to make new palette sets. Once my meal/supper has arrived and has been eat, I'll get working on all this Smile


Founder

Sprite Graphics Editing - Page 2 Image212

Since : 2012-06-19

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Mon 21 Oct 2013 - 17:43

Well, thanks to you guys, I was able to fix the Deku Scrub and the Tektites. Bit for the other monsters like the Tektites, where the same ID has 2 different forms based on what coordinate it's placed on, is there a method I can use to find that data? The Leevers in the Desert Palace spring to mind. Or is it just trial and error based on searching for a certain string? (I searched 03 0B because those would be the palette numbers from that table that the Leevers use, and came up with 90-some results.)

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Founder on Mon 21 Oct 2013 - 18:23

Well my guess is that since nobody documented this before, each sprite probably has to be documented one by one. Seing there's 255+ sprites in the game I wouldn't be surprised there's lots of digits!

Founder

Sprite Graphics Editing - Page 2 Image212

Since : 2012-06-19

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Mon 21 Oct 2013 - 21:14

Well then it looks like this thread now has a dual purpose, getting the palettes sorted out for Quest for Calatia, and documenting all these Hex locations for the entire Zelda 3 hacking community.

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Founder on Mon 21 Oct 2013 - 23:10

It would be amazing to create such a list and tie it to Erockbrox sprite encyclopedia from the compendium!

Founder

Sprite Graphics Editing - Page 2 Image212

Since : 2012-06-19

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Mon 21 Oct 2013 - 23:15

Well Zack, Josh, and I are building a master spreadsheet of all the new enemies (don't ask about them, our lips are sealed aside from what we willingly reveal Razz ) and the palette Hex location is one of the values we're recording on there (both in the palette table and elsewhere in the rom, like the bushcrab and Tektites). There's some we won't be able to find without help, because Josh and I don't really know our way around the rom, and Zack is busy with other things related to the hack, but we're putting it all in a centralized place. When we have it all, I'm sure we could pass it on to you guys.

What I really need to know, though, is what area of the rom the rest of the 2-version-1-ID enemies' palettes are, and most of the rest of the table should come together pretty easily.

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Tue 22 Oct 2013 - 6:03

Check with geiger (show ram) 7e/0f50, x region. Mostly sprite palettes are stored at the end: 7e/0f5e, 7e/0f5f (depends on the number of sprites on screen, each has his own ram).
you can directly change the value. So e.g, in this pic, the red soldier's palette was at 7e/0f5d: 07. I changed it to 05 and got it:
Sprite Graphics Editing - Page 2 Image216

In a second step you need to find from which rom address it is loaded and stored to 7e/0f50,x /in this case 7e/0f5d, this is done with breakpoints and logs.
Normal sprites are loaded by screen change, L2 sprites are loaded by the action (e.g., removing the bush). So you just need to check from where the palette value is stored to 7e/0f50,x.
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Tue 22 Oct 2013 - 9:00

I think I understand the first part fine (I'll test that part out later today when I have time) but the second part is French to me. Where do I find these breakpoints and logs, and how do I use them? (I apologize for being kinda clueless about this.)

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Tue 22 Oct 2013 - 10:33

You need to get familiar with Geiger. Here are my tutorials that may help you:

http://zeldix.forumotion.com/t134-coding-for-absolute-beginners

If you still have problems come back at me, I'm sorry that I'm not able to give more information right now, SePH gave me a bunch of homework.
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Tue 22 Oct 2013 - 12:38

After reading those tutorials, I think I understand how to do most of it. I would make a breakpoint (this is what I'm not sure how to do) somehow immediately after the sprites on the screen loaded, have it trace and write the log, search for the offset the palette was stored at (7e/0f50 area), and there should be the address of the code that wrote that value there. Then I load the Rom in a hex editor, go to that address, and change the byte?

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Tue 22 Oct 2013 - 16:33

Look at this image. I know that the palette is loaded when I get into that screen, so I set the stuff before.
Click "breakpoints" -> type 7e0f5d (we found out above), make hook at write and log with cpu.
Explanation: execute, geiger stops if an address is executed. Read/write geiger is executed when value gets written to ram or is read from ram or rom.
trace once: repeated addresses aren't logged - here you may have to switch it off ( and get 100 of MBs of log waste, since the address is repeated each time a sprite loads its palette

Sprite Graphics Editing - Page 2 Image311

Go into the screen with the sprite, Geiger will stop twice when the value is written to ram(forget the stz, only the sta is important):
Sprite Graphics Editing - Page 2 Image512

Then open your log and search for the address at which geiger stopped. Be careful, the address is executed multiple times, but we need where the value is written to 7e/0f5d (0d:0f5d in below code):

$0D/B863 B9 59 B3    LDA $B359,y[$0D:B39A]   A:861B X:000D Y:0041 P:envMXdizc
$0D/B866 9D 60 0E    STA $0E60,x[$0D:0E6D]   A:8619 X:000D Y:0041 P:envMXdizc
$0D/B869 29 0F       AND #$0F                A:8619 X:000D Y:0041 P:envMXdizc
$0D/B86B 9D 50 0F    STA $0F50,x[$0D:0F5D]   A:8609 X:000D Y:0041 P:envMXdizc
$0D/B869 29 0F       AND #$0F                A:8619 X:000D Y:0041 P:envMXdizc
$0D/B86B 9D 50 0F    STA $0F50,x[$0D:0F5D]   A:8609 X:000D Y:0041 P:envMXdizc

You now see where the value comes from, 0d/b39a, what is rom 06/b39a - 19.

It sounds complicated but you need to practice.
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Thu 24 Oct 2013 - 0:03

Okay, I think I have a basic grasp on how to do this now. I was able to replicate what you did with the Red Soldier. But after trying this with the Leevers in the Dungeon Palace, it leads me to $0D:B3CA - 03, but when I change it, it doesn't do anything.

Sprite Graphics Editing - Page 2 Ivegot10
(the 02 02 02 02 in the line are the leevers on screen in the first room. I changed the value in the RAM and they change like the soldier. The other form of leever uses 0A in the RAM here, and I was able to change him in the RAM too.)

And I don't see what my next step is. I'm happy this method definitely works for enemies that don't share their ID with anything else, but I don't need those. The ones I don't have are the enemies that share their ID with either another monster (eg. Rocklops and Mimic, or Light and Dark World counterparts) or another version of themselves (eg. Leevers, Octo-Orbs, and Tektites). Did you find the addresses for the Tektites using this method?

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Thu 24 Oct 2013 - 6:27

You need of course watch where the 02 is coming from, not the 03:

$0D/B8D1 9E 50 0F STZ $0F50,x[$06:0F53] A:864D
$0D/B86B 9D 50 0F STA $0F50,x[$0D:0F53] A:8603
$06/8DF9 9D 50 0F STA $0F50,x[$06:0F53] A:8D02

So, not the middle but the last in the tracing is giving the palette.

And here it comes from in the log:
$06/8DF6 B9 E7 8D LDA $8DE7,y[$06:8DE8] A:8D01
$06/8DF9 9D 50 0F STA $0F50,x[$06:0F53] A:8D02

06/8de8 is pc 03/0dea:02 -> new palette
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Thu 24 Oct 2013 - 10:04

So it's always the last row of text to show up in Geiger before the ROM starts running again that I need to look for? I think this just finally clicked for me 😂 . I can't try it with any other sprites right now, because I'm on a school computer and Geiger won't open, but I checked in the log from last night, and I found that code. In this case I would ctrl+f for $06:0F53, find an entry with a matching accumulator value to what was in Geiger, and find the closest LDA above it, and what's in the brackets is the address they're loaded from, and is what I need to change?

Wait... how do I get from the $06:8DE8 to $03:0DE8? I think that's the only thing I don't understand yet (provided the paragraph above is accurate...)

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Puzzledude on Thu 24 Oct 2013 - 13:06

$06:8DE8 or 68DE8 is a SNES address, since you are running a SNES game with the emulator. So you need to convert it to PC or Hex address, to look for it in the Rom. What you need is the address calculator, like Snestuff.
Download snestuff
http://www.romhacking.net/utilities/841/
 
Then you select a Lorom, (include or exclude header), type the snes address and the program will auto calculate the Hex address. 068DE8 Snes is 030DE8 pc (hex).

Entire process: tracing, find the LDA or STA in Ram, both will tell you what Snes address to load or store the value to. Then convert Snes to PC address (which is the actual location in Rom, editable in the hex editor).

Puzzledude

Sprite Graphics Editing - Page 2 Image213

Since : 2012-06-20

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Thu 24 Oct 2013 - 13:09

Take
$0D/B8D1 9E 50 0F STZ $0F50,x[$06:0F53] A:864D X:0003
it says $0f50,x
where the sprite number is in the x register. Inthis example x=03 so it loads the address 06/0f53

Ah Puzz and I made the reply at the same time. I use Lunar address to convert snes to pc. I explained that already here:
http://zeldix.forumotion.com/t255-i-need-someone-to-convert-some-cpu-addresses-for-me-p

Use of the program is self-explaining... just be careful of the hook at the header set.
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Thu 24 Oct 2013 - 13:21

Awesome! Thanks for bearing with me and helping me understand what's going on with this. I'll put this information to good use, and I'll try to compile a document with every address for each sprite, so all the information is in one, easy, quick location. Sorry you had to explain it to me 50 times for me to pick up on it Embarassed 

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Thu 24 Oct 2013 - 16:34

I'm happy to help other people so that they can help themselves and won't have to request me all the time Wink

One note, you can only trace when the sprites change to L2 (e.g., at the ruby crab you must pull off the plant while tracing to get the second address). Other sprites as the leevers and tektites use a second load of the palette during the screen transition.
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Darkprince909 on Fri 25 Oct 2013 - 13:54

I was able to find the Rocklops palettes pretty easily last night, using your method. So it looks like I finally did pick up on it. I have a semi-related question, though. Do you know how the game decides whether to load the Rocklops or the Mimic? Is it room-dependent?

Darkprince909

Sprite Graphics Editing - Page 2 Image214

Since : 2013-10-17

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Conn on Fri 25 Oct 2013 - 14:08

I do not know what mimics are and which difference in load you mean...
Conn
Conn

Sprite Graphics Editing - Page 2 Image212

Since : 2013-06-30

Back to top Go down

Sprite Graphics Editing - Page 2 Empty Re: Sprite Graphics Editing

Post by Puzzledude on Fri 25 Oct 2013 - 14:18

I think he means the Green and the Red rocklops, or the different sprite of Rocklops (named the same way), which mimics you backward (mirror like) when you walk. I haven't yet figuered out how the game does that, but it seems to be room related. So the game knows what to load, depending on the room number.

Puzzledude

Sprite Graphics Editing - Page 2 Image213

Since : 2012-06-20

Back to top Go down

Page 2 of 3 Previous  1, 2, 3  Next

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum