News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - pianohombre

Pages: 1 ... 9 10 11 12 13 [14]
Alright so right now when I need to do ASM edits I basically convert 65816 to hex and then edit the hex data through a hex editor. I've seen a couple programs, notably Asar and Xkas, that are asm utilities. I use currently asmdev to view translated opcodes, but for example I can't really do very much with the program like if I wanted to do BNE jumploc, I wouldn't know how to do that since it's ASCII characters not hex values like I typically use.

For some reason also it uses "projects". Like if I edit a few lines then save it saves the files as *.bin rather than the rom directly so I'm not exactly sure how to use them, or get an emulator to run any changes I've made.

It looks like some people are able to save .asm files then patch the games this way. I really like just using IPS/BPS files to patch a rom for rom hacks rather than using a program I haven't heard of. Also, those programs look like DOS based. Are there any asm programs such as xkas/asar that have a GUI?

One more thing on memory management. So I was working on editing a rom recently where I needed to add several instructions. Before I was lucky I found several NOP instructions in the rom bank and just overwrote those with a subroutine. Unfortunately now for this new bug fix I need some more space and searching through the rom I found a couple NOP instructions but they were very far spread out so I couldn't really work with them. I tried expanding the rom. I was just hoping that adding an extra 500kb would have hundreds of NOPs somewhere, but I think the bank I was using was completely untouched. How do people manage space limitation? I just need to include an if/else statement. It's so difficult working with assembly where you get 3 variables max. So ridiculous. Could you imagine trying to write a C++ program, or a webpage where your boss or teacher was like, "ok need you to create the next Amazon, or program Skyrim but it's going to be hard because you can only use 4 registers. Now begin!"

ROM Hacking Discussion / Re: Megaman X Buster Upgrade
« on: April 13, 2017, 04:04:23 am »
I was actually just working on fixing a bug in a MMX game that deals with the leg capsules (or dash boots as you described). So I got the game to start with leg capsules at the introduction stage and they show up all throughout the entire game, but I had some difficulty getting them to display if the player selects PASS WORD instead of START GAME. So for example, if they type in a password that skips the intro stage it returns to original megaman no dash, or at least in the game I was working on broken dash. I could force leg capsules, but then if someone used a password that for example gave them all armor/weapon upgrades it would override those. I was brainstorming a lot, but I was working with limited memory so couldn't find a location to store the asm instructions.

Gaming Discussion / Re: Zelda BotW is consuming all my spare time
« on: April 11, 2017, 05:58:10 pm »
I'm at the last boss on Skyward Sword so it's good to know I'll have something to play after I beat this game, other than LttP hacks. Looks like some people even got BotW to work on CEMU. Not sure if it's the wii u, or switch version but that was quick.

Can you explain what the different colored boxes mean? I think you covered it in a previous thread, but it's not included anywhere in the program explanation (and there's no help file). I may edit this post to change after searching through this long forum thread.

Well it turns out that most of my work contributing to this project was nearly wasted. I added an 'End Emulation' to the menu options, but it looks like if you just press the Escape key it does the same thing. I didn't see the command in the text file for the program when working on it myself. I'm working on adding an Undo button, so you can't fix any mistakes you might have accidentally done instead of having to reload the entire program. I've noticed that's very tedious. Unfortunately, I thought the SMILE program was open-source also, but searching around online I only found dead links to the source code. I think Lunar Magic is also closed-source. Each rom handles things differently, but seeing how they do things may always help. I also would like to output a separate window to display the title screen and a window solely for editing the megaman x sprite (one which can be zoomed in).

Editing text is easiest using a hex editor. It's pretty hard to rewrite an entire program for something that's already done pretty well to begin with using a program less than 1mb and it only takes about 15 minutes to learn how to do. So I probably won't attempt to do anything with text via MegaEd X.

ROM Hacking Discussion / Re: How to edit WRAM data in the rom?
« on: April 06, 2017, 05:42:54 am »
Boy all this rom-editing is very tedious. I feel like there's 10 steps for every one task someone wants to do. It feels like the stone-age of programming. When I searched on google, reading different forum posts about editing ram/rom/wram I didn't hear anything about tracing/breakpoints. I'll look into it. Thanks.

April 11, 2017, 03:34:38 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Hi thanks for the above response. I watched how to debug in bsnes, although most people prefer snes9x debugger it seems, and was able to get the rom working. It was pretty straight-forward much easier than trying to debug a large program in c++ with 100 breakpoints. Just changed one value. I just had to switch a value. I spent many hours over the course of 3 or 4 days searching through hexadecimal and thousands of lines of assembly trying to find a needle in a haystack before learning to use this breakpoint thing properly.

Next, I'd like to add some 65816 asm instructions in there to change a few instructions. I'll have to rewatch an example I saw on youtube about pointers. Again I'd like to edit the ROM, not just edit the save state file or apply an asm patch.

ROM Hacking Discussion / How to edit WRAM data in the rom?
« on: April 05, 2017, 12:57:49 am »
I've found a couple RAM Maps detailing certain video game properties at start-up. For instance: number of lives to start, character upgrades, etc.

I can edit this data at run-time using BSNES. For example, say I want the character to start with 5 lives instead of 2. At location $7E:1F80 I can easily pause/break the rom change 02 to 05 then run the rom again. And after refreshing the screen it will show 5 lives. However, $7E:1F80 is not viewable in the hex editor since it doesn't understand SNES addresses. So I use Lunar Address to find mirror address $00:2B93 (dma location not exactly 100% sure how this works as of yet). Ok so I load that new address in an assembly editor or hex editor and it reads as follows:

Code: [Select]
80A993: A9 2C LDA #$2C ;load accumulator address location 2c
80A995: AA TAX ;transfer accumulator to x
80A996: 98 TYA ;transfer y to accumulator

So when viewing RAM in bsnes it was easy to temporarily change values, but if I want to permanently have the character start with 5 lives I need to edit the ROM, yet the value reads as A9 instead of the 02 in the video game. Am I doing a mistake switching between SNES and PC addresses, or did I make a mistake somewhere else? I've read a lot of documentation apparently $7E is the WRAM location, but it's supposed to be mirrored in $00.

Just had a question about rom hacking in general, this looks like a good topic to ask, rather than start a new thread.

Basically, I'm just getting started in rom hacking, understanding all the general terms, and fiddling around with some values in hex, trying to understand asm instructions. I just started in SNES, and have done very light edits, like changing sprite color and text in-game. What I want to know is how different is rom hacking across different systems? Is hacking roms in SNES very different from playstation, or N64, or is it pretty similar?


Hey I've been talking with falchion22, about trying to edit his MMX1-Zero rom to include Zero's hair. (basically I'm trying to get my feet wet in hacking, figured this would be an easy start). He mentioned that I should edit the disassembled ASM to allow more tiles for Zero, because the sprite uses 64x32 instead of the regular 16x16 for MMX1. I noticed you did a Zero Project for MMX2 and MMX3. Did you have to get in there and edit any hex, or asm for the file? Or did you just basically overwrite the original MMX sprites using a program like Tile Layer Pro and then just change the palettes to reflect the color?


Gaming Discussion / Re: Zelda BotW is consuming all my spare time
« on: March 28, 2017, 02:04:42 am »
Looks like they have a lot of content too I was surprised. Most Zelda games are short- you can complete them in 10-20 hours, but I was playing Skyrim upwards of 40+ hours and I know that BotW will probably be even longer.

There's only 1 version of Megaman X2 as far as I know. MMX1 is the one with 2 different versions. I ran the rom in ZSNES (which most people don't recommend using), but it also worked fine in bsnes. So I removed the header from the original rom before expanding, but the game title still shows up in emulation so I don't think it did it correctly. Anyways, here's checksum info it might help out:
Original headered rom: 94e9a109170b6b835b73e6e24220ed97
Unheadered rom: 67905b989b00046db06df3434ed79f04

Both of those roms are the original 1.5mb snes roms.

Necro post.  Trying to modify a slight bit of a level in MMX2 and no matter what I do, even if I just open the ROM and save on any specific level, it completely corrupts that one specific level or the entire ROM.  Is X2 able to be viewed but NOT edited?  Maybe I have the wrong ROM, but it seems to load all the data up properly.

Edit: It might actually 'just' be Overdrive Ostrich's level that corrupts.  I tried saving generally on a few other levels, just fine, but ODO's level just instantly causes it to bug out and break.

Edit 2: Seems modifying most levels will cause numerous issues depending.  Morph Moth's level will have some pretty weird palette issues on the ladder section if you save there.

I've been trying to debug this problem with the Overdrive Ostrich level. I've messed around with a few variables and haven't figured out why it's loading incorrectly yet. There's more than 20 vital variables that are used in each class function, so debugging is a bit tedious, especially since there's no comments in the declaration/header section. Although, I noticed if you use the EXPAND ROM feature in the program and save on the OO level, even after editing the layout/scenes/blocks, etc. it will finally save correctly. Saving at 2.5mb instead of 1.5mb doesn't seem like too bad of a solution. And I tested other levels of the rom they all seem to work fine as far as I know.

I also ran the Morph Moth level, after editing several features and saving and wasn't able to recreate your bug.

I looked at Ostrich Overdrive level. I loaded both MMX2 with and without headers. The level/map seems to be loading incorrectly on both versions unfortunately. I checked through each level on all 4 games supported (mmx1-3 and rockman and forte). Seems to be the most damaged level. Most levels are loaded pretty standardly without too many if/else statements for exceptions. It's most likely a corruption in the rom that doesn't follow the rules (perhaps the level before used more memory than typical so the pointers are off). I wasn't able to get around to fixing the problem though since there's thousands of lines of code to look through.

I'm still learning how to try and manage this huge project more efficiently and have tried to understand Visual Studio better in general so tried to learn how to use the debugger to step through the code. You know the stuff where you can see variable values change etc., so you know where to go. I was able to use the program to do just something really simple. I wanted to add a minimize button next to the exit button for example on the dialog boxes/windows. So instead of reading through each line of code, like I typically do, I just clicked through the menu in the GUI and clicked an option to allow minimize boxes. I wish coding was always this easy.

Honestly, I'm trying to take my time learning all the hard stuff- vram, hex, asm, etc. If you try and learn everything in a day or two you will burn out and probably punch your computer screen never to return haha. I've programmed in assembly before (x86, NASM) so I'm familiar with it, although I'd never use it preferably. (Notice today how games are all 10gigs I doubt most students are using it also). I found a good wiki to learn some great stuff about the instructions SNES uses since it's different than other stuff. If you have any info on it, or tips that you think would be helpful feel free to message me about them. Looks like MMX3 is pretty well-documented, but few others are.

I've saved some videos on youtube about MFC and QT. Saw a really good example of how to edit a rom using a hex editor. I actually got into the program today and messed around with some things. I just added a menu item, but I was able to get it working properly so that's a big boost to working further on it. I've got a few additions I'd like to make, so I'll try working on it some more. BTW, there's a megaman x randomizer github online, not sure if you know that or if somehow you use the scv4 to randomize mm levels.

I believe the open-source of SMILE (super metroid) is available to look at. That will help at least me understand game-specific editing a little more. Where did you go to understand how to deal with Visual Basic and C++ GUI handling, such as how to attach a function to a button, open a window, close a window, etc.?

I was able to do some minor tweaking to the level design, such as change the colors of the enemies using offset values which was kind of neat. I remember trying to use the palette or tile editor before and grabbing my hair. My ultimate goal when trying to get Lucciano to release the source was to create a super user-friendly game editor. Even possibly being able to just drag and drop enemies, or palettes/tiles to change the design of the level. Only messing around for just an hour I was able to completely screw up one scene and then completely undo my mistakes manually. Just adding an Undo button, probably wouldn't be too difficult, you see it even in Windows paint, probably wouldn't take too long once I figure out the libraries.

I agree it really is a shame that you didn't comment the code (#1 rule in programming). However, I don't want to criticize you too much because I'm pretty rookie when it comes to dealing with the GUI, and I majored in computer science, yet focused on mainly web programming, not game or graphic design. The x2/x3 and internal emulation was pretty neat. Again if you could point me to some free guide online on how to program the GUI in C++ that would be great. I have VB 2015.

Just a side note. MM has mainly been ignored in the gaming community, for more popular games, yet even super metroid snes had major overhauls. I think it didn't become popular on the SNES because it completely avoided save games, and then on the N64 it looked really ugly. They haven't even had any recent remakes of the games, despite releasing some collections for the ps3 and the wii. Nintendo has mainly dumped MM, possibly because Capcom cross-platformed onto the Playstation quickly who knows. I've seen many rom hacks for the NES I'm really surprised only a few people have tried tweaking the 16-bit version. Once this project becomes an amazing utility that is very user-friendly there could be several new hacks in the next 5 years or so. I just watched a trailer for Megaman X Corrupted earlier. The developers are making the game on Adobe Flash I believe. Ridiculous. The project has been in the works for a few years now. It may even get abandoned before completion without releasing any beta files.

I've been tirelessly reading through the last 4 pages of forum threads, where I last left off getting the source code for the project. I'm recently unemployed so have quite a bit of free time to fiddle around with the source code. Hopefully, RedGuy has commented the source code well. Problem with Luciano's C++ was that he didn't explain how he interacted with assembly, hex, and linked the different files together in the GUI. I will try re-reading these replies since 90% of it went over my head. Particularly interesting is this event editor working with the sprites. Right now the windows pop up in those tiny little boxes. I'll have to change my screen resolution to try and get a better view of the blocks, level, sprites, etc.

Is the latest working executable in the github source, or should I try clicking on one of the many links and using those?

Thanks. Appreciate all the hard work.

Luciano (ie Xeeynamo) has been kind enough to release the source code as freeware via github:

I've volunteered to help out with this project. I have no experience rom hacking, but I'm familiar with C++, assembly, and hexadecimal so reading some guides to get a better understanding of making this level editor work the best. I've talked to a few people and gotten SMILE so that may unlock the secrets to getting it work. I'm also looking a lunar magic as a comparison, but I haven't seen any location where they have source code available.

Pages: 1 ... 9 10 11 12 13 [14]