| |||
Views: 88,314,569 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 03-28-24 11:53 PM |
|
Guest: Register | Login |
0 users currently in ROM Hacking | 4 guests |
Main - ROM Hacking - A quick question for my more experienced colleagues... | New thread | New reply |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 1/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
I started a Castlevania 1 hack long ago, and I was wondering if anyone ever figured out how to edit the level structure and path? Ideally I'd like to even add rooms if at all possible. |
Dr. Hell |
| ||
Lakitu Level: 52 Posts: 71/552 EXP: 1024149 Next: 59691 Since: 03-02-07 From: Pittsburgh, PA Last post: 5005 days Last view: 4962 days |
Haha... well optomon and I looked into this for Chorus of Mysteries, and we KIND of have a handle on it, but it is still probably the most frustrating thing ever. Even with the data to do it, it's still pretty damn difficult. I'll try to dig up what info I have, and if I can't find it I'll talk to optomon about it. I know he's got some notes somewhere. |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 2/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
Cool! I'd really appreciate that. CoM looks really good so far. I give you props.
|
Dr. Hell |
| ||
Lakitu Level: 52 Posts: 73/552 EXP: 1024149 Next: 59691 Since: 03-02-07 From: Pittsburgh, PA Last post: 5005 days Last view: 4962 days |
Thanks, it's all optomon though. All I can do is make it look pretty. He's the one doing all the real work. I'll talk to him next time he's online, and get pumped because CoM is going to be done really soon haha. You should put up some screens of anything you have done so far. I'd love to see what other people are doing with CV. |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 3/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
I'll see if I can find the files. Pretty much everything is gone now. However I did release an early version of my hack on Zophar under the name Inccubus way back in the day. |
Dr. Hell |
| ||
Lakitu Level: 52 Posts: 75/552 EXP: 1024149 Next: 59691 Since: 03-02-07 From: Pittsburgh, PA Last post: 5005 days Last view: 4962 days |
Oh! You're the one that hacked the Japanese version. Yeah, that hack was actually pretty decent, which is rare in CV hacking. There's only like a few good CV hacks in existance. Reguardless if you can or can't change the structure and path, you should finish this up, because it's pretty good. |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 4/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
Actually, I used to have a later version with way better graphics and level design based partially on Vampire Killer for the MSX, but I lost it in a harddrive crash. |
optomon |
| ||
Leever Level: 33 Posts: 28/198 EXP: 219973 Next: 9206 Since: 03-05-07 From: Vancouver, WA Last post: 2428 days Last view: 2017 days |
I've only been able to reorder the structure of the level layouts rather than create new rooms. And I haven't done this as dramatically as I wanted to because I failed to figure out how to move the interstage doors around much without deforming the game somehow.
0x 1FB33 : Pointer Table for room order for every stage. The first one is "00 80" pointing to 0x 10010. It is the room order for "stage 0" (when youre outside the castle at level 1). The first two bytes is a pointer that defines the bottom floor (F2 7F in this case, though I haven't looked into what it exactly defines). The next two bytes, regardless what they are will define the top floor. 0x 1FBC0 : Table of bytes that indicate how many rooms will be in each stage from left to right.. The left byte is the bottom floor, the right is the top floor. 19 of these for the game's 19 stages. The first one is "20" meaning 2 rooms, and the 0 means 1 room on the top floor, but the game designers obviously didn't need to do anything with that top floor nybble anyway. "23" for example would mean 3 rooms on the bottom floor, 4 rooms on the top floor. It will look like this: XXXX XXX 0x 1FBD3 : Another table that does a similar thing. Its another 19 byte table, and it defines how many rooms will be cut off starting from left to right for each stage. "FF" means it will be normal. "F1" means that the top floor will lose two rooms. Let's say you put "F1" ifor the same stage as you have a "23". It would look like this: XX XXX Something like that. That's about as far as I bothered to get. Just play with these for a while I guess. Hope it helps. As for making new rooms, I have a very vague idea how that could be done, but it would probably require some massive hexwork. Basically, wherever the room order pointers are pointing to (e.g. whatever F2 7F at 10010 points to) is where you have to make them. |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 5/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
Thanks alot! =)
That is sure to help alot. If I can figure this out I'll let you know what I found. BTW has anyone ever disassembled the code for Mario's actions in SMB/SMB3? |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 6/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
Ok guys this is what I found so far... and it ain't much.
0x 1FB33 : when I screw with this pointer table I can change where the background data is read from. Take those first two bytes, 00 08. If I change the first byte to say 02 ( the value of the second pair ), when I start the first stage it reads in the background data from the second stage's rooms. If I change it to 01 or 03 it takes me to weird places. 0x 10010 : when i messed with the values over here ( starting with F2 7F ) I was able to shift the the background tiles up or down. When I tried F1 the tiles shifted down on the screen, and F3 had the opposite effect. I think I'm gonna need more data, I think. If I had Dan's notes from when he made Stake, I think I could figure this out. ~wishful thinking... |
optomon |
| ||
Leever Level: 33 Posts: 29/198 EXP: 219973 Next: 9206 Since: 03-05-07 From: Vancouver, WA Last post: 2428 days Last view: 2017 days |
In the F2 7F, if you add 30 to the pointer, the stage will will shift one room over. For example, change it to 22 80 and the stage will shift one room. Sorry for not bringing that up.
0x 1FB33, note at 1FB35 is the pointer 02 80 which is in fact the pointer for the second stages rooms. This points to 0x 10012, which is the pointer 82 80. note that 82 80 is 90 more than F2 7F, thrre rooms back. Remember, that each room is 30. Do you see the pattern? |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 7/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
I see. Do you know where exactly the background tile data is? For that matter, where the enemy/candle, etc. are? |
optomon |
| ||
Leever Level: 33 Posts: 30/198 EXP: 219973 Next: 9206 Since: 03-05-07 From: Vancouver, WA Last post: 2428 days Last view: 2017 days |
Yes and yes. Have you been using stake at all?
The background tile data should follow right after the pointers that define the room order. (eg, for level 1, after the 72 7F and subsequent pointers). But use stake to edit that. Pointers for candles and enemies at 12DA0, one for each floor in a stage. The candle and enemy data begins after them, at the location the first pointer is pointing at. It will start with the first stage going left to right, going enemy-candle-enemy-candle pattern. Further ahead, there is information for what is actually stored in the candles and what enemies can be where, (eg more information). Sorry if that sounds vague, it's just that you are asking for a lot. If you want me to tell you some more just IM me. |
Dr. Hell |
| ||
Lakitu Level: 52 Posts: 87/552 EXP: 1024149 Next: 59691 Since: 03-02-07 From: Pittsburgh, PA Last post: 5005 days Last view: 4962 days |
Stake is for chumps. I'll start liking stake again once there's a map screen editor, so I can stop doing it by hand, but seriously though, use it to edit the backgrounds, it makes it insanely easy, along with the candle/enemy placement. Make sure you have the newest version though. |
optomon |
| ||
Leever Level: 33 Posts: 32/198 EXP: 219973 Next: 9206 Since: 03-05-07 From: Vancouver, WA Last post: 2428 days Last view: 2017 days |
Posted by Dr. Mario Now now... no need to be bitter |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 8/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
Hmmm... interesting. I'll keep sniffing around.
Optomon! Do you know of any hex editors that can compare two files and display the differences in each? Dr.Mario! Is there anything I should know about editing the map? Actually I've never thought to try it before. |
Dr. Hell |
| ||
Lakitu Level: 52 Posts: 90/552 EXP: 1024149 Next: 59691 Since: 03-02-07 From: Pittsburgh, PA Last post: 5005 days Last view: 4962 days |
The map works like a level. You edit the 16x16 blocks of tiles and then arrange them the way you want. Here's the notes optomon drummed up for the TSA editing portion of it:
0x12D6A : Graphic layout begin for castle map. The first byte should be a 55. It occurs every 16 bytes or so. The 16 bytes between each "55" make a 4x4 16 tile square. The first of these 16 bytes are: 00 00 00 00 00 00 00 00 30 31 32 33 3B 34 34 34 aand then the second 55. The 55 chooses what palette is used for that 16x16 block. Anyway, on the screen, the tiles will be arranged like this according to the bytes: 00 00 00 00 00 00 00 00 30 31 32 33 3B 34 34 34 This is the upper left corner of the map. 00 I believe is solid black, and 34 is solid yellow. The other numbers are map creases and folds. The next 16 bytes are for the 4x4 just below it. Now, the positioning for the dot and the bat for each level. This is really easy. 0x1C7D7 : The positiong for the "dot" on the map for each level. The first byte is for the "Y" position, the second is for the "X" position. The first two bytes are 00 00 for level 1. This means of course, that it is in the top left corner, but there is no map screen for level 1, so it doesn't really matter. Level 1 : 00 00 Level 2 : 94 94 Level 3 : 76 4C Level 4 : 70 2A Level 5 : 7B 98 Level 6 : 4E 7C 0x1C7E3 : The position for the bat, it works the same way. Level 1 : 00 00 Level 2 : 72 54 Level 3 : 62 A4 Level 4 : 82 9D Level 5 : 52 84 Level 6 : 38 29 Next time he's on, him and I are going to look into arranging the 16x16 blocks correctly. Once we figure that out, one of us will put up some notes on doing that. I just know that the data is directly above the data I just gave you, I don't really know where it starts though. |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 9/384 EXP: 589876 Next: 21409 Since: 06-01-07 From: Miami Last post: 4097 days Last view: 4085 days |
Interesting!
I'll work on that in the future. Thanks. I'm still messing with the data optomon provided. Hopefully I can figure something out. =) |
optomon |
| ||
Leever Level: 33 Posts: 33/198 EXP: 219973 Next: 9206 Since: 03-05-07 From: Vancouver, WA Last post: 2428 days Last view: 2017 days |
Posted by koala_knight I've only used one hex editor since I started hacking, and that would be translhextion. It in fact has a "compare from current offset" option under the "offset" dropdown list. Make sure you have clicked the first nybble of the first byte when comparing it to another file. Very useful feature. When doing it, it will inform you which bytes are different. |
NetSplit |
| ||
Level: 32 Posts: 15/178 EXP: 187605 Next: 18837 Since: 02-26-07 Last post: 2189 days Last view: 2114 days |
Hex Workshop has a pretty decent compare feature. I'm a fan of that hex editor, though I don't believe it has table support, and it's also prone to becoming unstable and eventually crashing while saving on my computer for some reason. Probably fixed in a newer version... Anyway, definitely a good hex editor. |
Main - ROM Hacking - A quick question for my more experienced colleagues... | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 127, rows: 166/167, time: 0.018 seconds. |