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.

Topics - ShadyRounds

Pages: [1]
ROM Hacking Discussion / PS1 No$PSX Romhack Tutorial (Megaman Legends)
« on: April 25, 2018, 09:38:14 am »
Made videos demonstrating my methods to romhack Megaman Legends for the PS1, using CheatEngine, ePSXe1925, No$PSX, and others listed in video. Hope it helps startup projects.

I won't lie, don't know if/how to embed these.

UPDATE: This post has a link to a download to patch your rom with the changes I've made, to show the progress of my work on this obscure little gem! (Helping Hands or Instructions still Welcome via PM)

DOWNLOAD Patch - Playable Beta2:
[DOWNLOAD is .ups patch for Legends.img "SLUS_006.03", other forms available upon request]
DOWNLOAD Patch - FasterPlayerCameraTurnSpeed:

I am making a Megaman Legends Remix. I hope the work may oneday turn into a randomizer, and I do want to include various features beside just item location move/shuffle.

Megaman Legends 1 Remix (Playable Patch)
  • I actually started with "lowering starting value for morality in newgame", you're closer to turning "dark megaman" at the gamestart.
  • I have shuffled the script the chests/npcs call on to grant items. Very rudimentary for now but it does in fact replace the given item and the bugs aren't yet apparent.
  • Game's first SpecWep, is treated as a "key item". If gotten later, will not give weapon. Whatever is given in it's place, still gives original weapon. SOLUTION: No "physical" item is rewarded by junkstore (is now "implied" gotten and used by Roll), and Roll now provides weapon (speech removed and text changed)
  • Buster Parts have been rebalanced to favor +Atk less, as well as reduce max-statting (min-maxing stats) significantly in endgame.
  • Some special weapons require slightly adjusted and different items to develop now.
  • Wiring the "Difficulty" at Main Menu, to "always be present" rather than "after game completion".
->Saves will not allow some changes between vanilla and different mod-versions. Specifically, busterpart changes and supportcar changes, as those are always-loaded and a save injects what was already-loaded.
->SpecWeps requiring changed items to develop, do not list them correctly after creation.
->Some text is otherwise bugged.
->Junkstore reward is hacky, but should work and progress without fatal error
As far as I know, changed chests were for sure changed, but in the event they weren't, this is what SHOULD have been changed:
Zetsabre > Arm Supporter > Guidance Unit > Joint Plug > Helmet > Grenades > Ancient Book > Zenny

PenLight > Zenny

"Missile Cycler" > Marlwolf Shell > JunkstoreBox

Cannon Kit  > Boatstore Box > Old Launcher > Cannon Kit...

PoweredBuster = CannonKit + ArmSupporter
SpreadBuster = OldLauncher + AncientBook
ActiveBuster = GuidanceUnit + MissileCycler

Marlwolf Shell =>= "Barrier Generator"

As the first step, i'll be hand-placing items at new locations and listing possible additional features.

Planned So Far:
  • Idea: Wiring original japanese soundtracks back in (they are present on english roms, unhooked)
  • Idea: Adding original japanese version's option of kicking paprika rather than shooing (so far I tried and failed to do this so...)
  • Idea: A randomizer to shuffle the pool of items between all available locations for endless playthroughs.
  • Idea: Find how to move/change enemy spawns (including mimics, cloaked-skirks, ect).
  • Idea: Make a dense-fog version of the patch (especially fun in OldCity and LakeJynn)
  • Idea: Adding a version with harder difficulty, such as faster enemy projectiles, faster enemy rate of fire, more shots per attack by enemies, higher health for enemies, possibly adding copies of bosses in the same room together, removing player's hit-invincibility, ect.
  • Idea: Optional "difficulty choice" to reduce starting buster slots, from 2 to 1. (one less buster slot than normal, at any given time)
  • Idea: No promises, but there are unused "normal items". New consumables, or components for something?
Megaman Legends 2 Remix (Planning Stage)
  • Planning most of same changes as in MML1 Remix
  • No roadblock of keyitem specweps, all are developed and can be shuffled same way
  • No plot-breaking weapons like drill-walls or such, so all weapons can be shuffled into same pool
  • Specifically pertaining to the MML2 Pokte Village Trivia, instead of whatever insane shit they stuffed into the english version's trivia about history and math and bugs and stuff, we need a hundred question trivia based on the MEGAMAN SERIES! Classic, X, behind-the-scenes development, ect.
MML2 QuizSchool MMTrivia Patch/Savestate: Reposting...

Open to any feedback, ideas, or advice, from the community, both RomHacker and LegendsFan alike. Would liked to have gotten a working playable version with at least the base-features done by the 20th Legends Anniversary (Dec.19), but as of this new year, Jan4th, I now have a playable version of my work-in-progress, with any luck completely playable and no gamebreaking bugs! (just broken text)

Special thanks to the LegendsStation for RamHack documentation specifically for Legends, and to community for all the general PS1 documentation that helped me get here! :beer:, so that I can furnish the Legends fandom with some much needed expansion content since the cancellation of MML3  :'(

*Skip to End for Question:
Background: I am a Megaman Legends fan. I want to create content for the kinsmen of my fandom to enjoy, and extend the content-hours of my beloved game series, and possibly by the deadline of the Dec. 19th 20-year anniversary of Megaman Legends.

Goal: I have ideas in mind to implement, endgoal being a variety of patches for gameplay, including item shuffling, restoring some japanese-only functionality like kicking-paprika, the music track "another sun" which exists in eng-rom but isn't hooked to play, and restoring functionality of the developer ingame-debug-menu... but to run, you must first walk, and to walk, you must first crawl, but before you do that, you must learn how to breathe upon entering the world for the first time. I have my work step-by-step laid out, but in order to make yuge things, I must first learn how to do very stupid basic things with the game code.

Progress: 1) I had started this project with a loose association with the LegendsStation community, and a few of it's members that had pioneered ram-hacks for the game. 2) I found a massive amount of documentation on romhacking, a lot from this site so I already owe this place a place in my credits txt. So I began with documentation on Zelda OOT and felt that Megaman64 was a crummy port but by far the best chance I had at compiling a romhack. As I progressed, I found an actual romhack hosted here for Megaman Legends PS1, originally created more than six years ago! It has more than enough documentation to know how to modify text and pack ips patches, so now I'm working with intent to romhack the PS1 version. Gathered as many hex editors, debuggers, and assembly code programs as I could. So far I'm using LemAsm for rom assembly, PSX1.13 and No$PSX for debugging, HxD for hex editing and searching, Transhextion for thingy-tables to read and handle in-game text, FrHed for comparing differences, and am working with MegamanLegends (eng) and RockmanDASH (jap) disc files.

Progress (Cont.): 3) I have found the location of various text in rom (inside of ST00 bins for location-specific, in rockneo.exe for always-loaded assets like menus and items). The LegendsStation chums have some time in the last 11 years found things ranging from Health, Ammo, Morality (easy values), to the HUD, Camera Control, Stand and Walk when In Mid Air, Which Location a Door Takes You (Tau, Megaman Legends Abridged), to things like NPC Health/Script/Spawn for all 16 npcs that the game can load for one area (Trege). I'm trying to both bridge these ram-hacks into physical rom-hacks, which is apparently a new angle to the current crew at LegendsStation, but it's becoming an idea respected at an equal level to work that members have been working on for years (which is exciting and appreciated).

Problems: Something I figured was a really simple test of "doing something profound", was changing the value of the "starting morality" in the rom. This is the value that the game tracks in-game, that loads darker texture for armor, loads different dialogue variants of how townsfolk depict Megaman, and this value starts at 128 (x80) at game start and increases naturally but decreases when doing "bad" things like kicking trash at the baker or vandalizing vending machines or keeping money from a bank robbery or shooting a civilian news airship.

To find the value, I scanned for it, kicked vending machine, scanned for decreasing value, kicked vendi... wash rinse repeat until I got it. The ram value is located at 0C1B70 (fun fact Trege discovered, the ePSXe1.9.25 retains the same memory location every time it loads a game, it doesn't shift around unlike other versions, so it's useful when using CheatEngine where morality's value is always B4D210). Well, monitoring the value on CE, I found that toward the end of the black "loading..." screen at game startup, the address byte fills to 80 (the value one starts with). I figured I could trace this, search nearby byte strings, ect, to find it in ram... and have ran into problems with this seemginly soft-test.

Problem1) When starting, PCSXTrace was considered a top-tier tracer, and PCSX1.5 w Amego was another highly rated program. After much trouble getting the right old-plugins to get them to work, it turns out they're very crash-happy, but specifically do not run MegamanLegends for neither love nor money (or RockmanDASH or any prototype builds). Does anyone here know how to make them run... better?

-When using No$PSX, the debugger says "huh?" every time I do anything, and even though I eventually get it to work it also doesn't use the same opcode syntax (mov instead of lui and stuff). Why do they call the same operations different things?
-So I use PSX1.13 r3000 debugger, to create a break on the loading-screen that fills the value at start. It breaks, but the emulator cannot resume from that point once it breaks, you can read the debugger but the emulator will crash upon refocus so it's a restart from there. Is that even normal for PSX1.13 to crash every time it performs a debugger break?
-The PSX1,13 break specifies a certain instruction from 664BC, and I go to it in rom. It's blank, 00 not 80. I reload the game, turns out that value is also filled to 80 during the load. It was supposed to be a simple read from rom, wth Capcom?
-Well, I create a break for 664BC now, but it won't break on either debugger on write. It writes from 00 to 80, while the break is watching it, and never breaks. Am I missing something?

 :woot!: Thanks for any replies, sorry for all text catching up to where I'm at, and if this makes any breakthroughs I could ask a few more things about other problems too.

Pages: [1]