rockvoulnutto
Mirumijee
"Roll are you alright?Can hear me?"
Posts: 12
|
Post by rockvoulnutto on Dec 23, 2007 16:16:01 GMT -5
Thank for the model codes,Musashi ;D
|
|
|
Post by Musashi on Dec 24, 2007 13:07:49 GMT -5
Don't thank me, thank UGR!
(And trevoronryan for posting that tutorial to hold us over!)
|
|
|
Post by profnes on Feb 14, 2021 16:57:41 GMT -5
Justifying a major necrobump (and indeed justifying registering here at all) since This Very Thread appears to be the end-all-be-all source that The Cutting Room Floor links in their section indicating the availability of cut playable characters. The older how-to video link is now dead, and some significant portion of the internet seems to concur with my experience that the UGR codes, as stated and copypasta'd everywhere, don't entirely quite work out of the box on current emulators. I've spent most of the weekend diving into memory edits and reverse-engineering both the UGR codes and earlier how-to posts on this thread and, summarily, sussing out the raw table of actual numbers for all(?) available character models, a few more complete/flexible/direct code sets, and, IN THEORY, one big quality of life improvement which on a real GameShark ought I think to allow (a) quick re/application of models & textures during gameplay and (b) elegantly allowing (fixed sets of) normal gear to be used on the overridden character models during gameplay. Long version: particularly sheets 2 and 4 of docs.google.com/spreadsheets/d/1gVF23vgZfU-dW7S0lQCk_LlAsnlB7p5yQmXeQBEWfKQ/edit?usp=sharingShort version (requires GameShark v2.2+; DOES NOT WORK IN EMULATORS I'VE TRIED because none of them seem to support D0 conditional execution (also an issue with the E3 conditionals in the UGR codes)): D009BEF8 0009 ("If Start is held...", that is, "enter or exit the menu normally, or tap Select just before a fade transition in order to...") + one of 8008C252 0000 (load MegaMan unequipped model) 8008C252 1200 (load Roll model) 8008C252 1300 (load Tron model) 8008C252 1400 (load Apron MegaMan model) 8008C252 1500 (load Matilda model) 8008C252 1600 (load Glyde model) 8008C252 1700 (load Gatz model) 8008C252 1800 (load Bon-Bonne model) + D009BEF8 0001 ("If Start+Select is held...", that is, "hold Start while exiting the menu in order to...") + one of 8008C252 F800 (load MegaMan palette) 8008C252 F900 (load Roll palette) 8008C252 FA00 (load Tron palette) 8008C252 FB00 (load Apron Megaman palette) 8008C252 FC00 (load Matilda palette) 8008C252 FD00 (load Glyde palette) 8008C252 FE00 (load Gatz palette) 8008C252 FF00 (load Bon-Bonne palette) + D009BEF8 2000 ("If Circle button held", that is, "any time you'd be engaging your shoes anyway, or interacting with anything outside the menu...") 8008C252 sshh (set normal equipment for normal gameplay effects) where ss= 00 - Nothing 01 - Jet Skates 02 - Hydrojets 03 - Asbestos Shoes 04 - Cleated Shoes 05 - Hover Shoes hh = 00 - Nothing 01 - Normal Helmet 02 - Padded Helmet So basically, set up 6 codes above, then, during gameplay, menu/hold-Start/exit to swap model, menu/exit to swap texture, then tap Circle to set normal functioning gear of your choice.
Now, as alluded to, many emulators are fine with the memory set codes (80xxxxxx vvvv), but do not correctly handle the sequential conditional execution codes (D0xxxxxx vvvv), meaning they effectively try to apply all model/texture/gear codes at once, which Simply Does Not Work. (in honestly, I don't have a real GameShark, so the control codes are as of this posting completely unproven; that's another part of why I want to get this out in the world so maybe folks on real hardware can try).
BizHawk, however, allows Lua scripting, and I have tested that this Luafication of the GameShark control flow works: while true do emu.frameadvance();
--[[ Close the menu while holding Start to force a model swap by hacking your helmet/shoes. (hack activates when Start and Select are held; model loads when menu closes) memory_write data values: Rock: 0x0000 Roll: 0x1200 Tron: 0x1300 Apron Rock: 0x1400 Matilda: 0x1500 Glyde: 0x1600 Gatz: 0x1700 Bon-Bonne: 0x1800 --]] if memory.read_u16_le(0x0009bef8) == 0x0001 then memory.write_u16_le(0x0008c252,0x1200) end
--[[ Menu normally to force a texture swap by hacking your helmet/shoes. (hack activates when Select is held; texture-model loads when menu closes) memory_write data values: Rock: 0xF800 Roll: 0xF900 Tron: 0xFA00 Apron Rock: 0xFB00 Matilda: 0xFC00 Glyde: 0xFD00 Gatz: 0xFE00 Bon-Bonne: 0xFF00 --]] if memory.read_u16_le(0x0009bef8) == 0x0009 then memory.write_u16_le(0x0008c252,0xF900) end
--[[ Press Circle to hack helmet/shoes to a gearset with normal in-game effects. (hack activates when Circle is held; affects gameplay immediately while outside menu) memory_write data values: Nothing Normal Helmet Padded Helmet Nothing 0x0000 0x0001 0x0002 Jet Skates 0x0100 0x0101 0x0102 Hydrojets 0x0200 0x0201 0x0202 Asbestos Shoes 0x0300 0x0301 0x0302 Cleated Shoes 0x0400 0x0401 0x0402 Hover Shoes 0x0500 0x0501 0x0502 --]] if memory.read_u16_le(0x0009bef8) == 0x2000 then memory.write_u16_le(0x0008c252,0x0101) end
end Whether you use the UGR codes, my new codes, or the Lua script, KEEP THEM DISABLED UNTIL YOU'VE LOADED OR NEW'D YOUR GAME otherwise you may get a crash. Also, BE SURE TO DISABLE THEM and SWITCH BACK TO NORMAL GEAR from the Equipment menu to load back the MegaMan model before changing weapons in the Development Room (really, it may be safest to save and then do a full soft reset with codes off), otherwise you'll probably get a crash when you leave! Update: testing shows that the new codes make Dev Room and Continue safe, probably even New Game. Since your "normal" gear is applied whenever you engage with anything, the game can apply the arm tweaks to the model without game-breaking issues. You'll just be garbage-MegaMan from whenever you exit Dev until you menu again. Also, just tap Select before any fade transitions start to preserve your model between load zones (elevators, etc.).So... heh. That's it for now, I guess. And while I didn't test more than 2 or 3 model indices each way after encountering exception crashes, I'd be pretty surprised if there are any actual valid model IDs between 0x19 and 0xF7. So, sorry, very probably no more directly playable models by this route. That said, I would imagine these model indices are used to read a lookup table somewhere, and if we can get our hands on THAT, it may be possible to use rather larger codes to more permanently set what model the game finds/loads, allowing equipment to be used normally while preserving character skins... Edit: codes updates to switch the functions of Select-only and Select+Start. Turns out that when using Circle for normal gear, the game reloads your model every fade-transition, and it's far faster to menu/exit to restore model (or just tap Select after activating the door/elevator but before the fade starts) then to do the full Select+Start menu dance. Also... Very Soon expect an even more sophisticated Lua code, and if I can find a couple bytes of unused RAM, a GameShark (newest versions only) code to actually let you use the equipment menu kinda normally and apply your equipment menu gear with Circle!
|
|
|
Post by Dashe on Feb 15, 2021 23:42:27 GMT -5
Hey, thanks for stopping by with the update! I'll let the Discord server know about it; all of this is over my head but if they haven't come up with a workaround themselves yet, they'll be glad you popped in.
|
|
|
Post by profnes on Feb 17, 2021 23:02:55 GMT -5
Update: I was just about to post the promised update here... there are new codes in the google doc, but... digging a little deeper, it looks like the space I found to theoretically cache your normal equipment menu gear might be idle only because it's technically kernel memory, and possibly even a vector table (list of critical addresses for things like boot/reset), meaning it could easily be Very Bad to touch, or if it's not Very Bad to touch, it may also be where GameShark copies its own logic to run from. I'll probably hold off on a tl;dr digest here until I find addresses I'm a little more comfortable with. The equivalent Lua script update has been holding up pretty well, tho. The actual clean character data indices, and building new GS codes from them, are not rocket science, so I wouldn't be surprised if it's fundamentally already known info, but most Google hits on the subject these days seem to be "where can I get the codes?", copypasta of the UGR codes, or "these codes don't work" reports, so if this thread is where a leading archive on the existence of the data is pointing, I figure it's fair to get current knowledge here in some form.
Mixed news on general playability: because this codeset/approach does not CONSTANTLY force the equipment to a model data set, you CAN safely use the Development Room to change weapons (as long as you entered it by pressing circle, your "normal" gear will be loaded, and the game will be fine doing whatever it does for the arm model), you'll just be garbage-MegaMan on exit until you menu to reload the mesh data. The flip side is that, since the game reloads the character model during every major/fade transition, you'll be garbageMan after every door you open with Circle or cutscene NPC you engage with Circle, unless you quickly tap Select before the transition fade starts (it seems to cache what model it should load VERY early in the transitions). Still, tapping Select every transition is a small price to pay for beauty with Jet Skates ^_^
|
|
|
Post by profnes on Mar 24, 2021 21:36:52 GMT -5
Ok. After a casual most% completion, I'm very confident in the Lua scripting, and fairly confident in my chosen RAM location for the RAM version Lua script and GameShark codes. Still don't have a real GameShark to test on, tho. BizHawk scripts with full instruction in the comments; only need to change 1 line to set the character: * www.psychsoftware.org/portfolio/software/scripting/Mega_Man_Legends_2_(USA)_-_CharacterSwapEZ.lua - cache gear in Lua; 100% safe against corrupting game content, but will unequip your helm/shoes if you change characters mid-game * www.psychsoftware.org/portfolio/software/scripting/Mega_Man_Legends_2_(USA)_-_CharacterSwapEZ_RAM.lua - cache gear in Playstation RAM; equivalent to the GameShark approach, gear should stay across character changes / script-reloads, but v small chance the address I found IS used by something else in game and may break under untested corner-cases "Final" GameShark codeset (again, these use syntax that DOES NOT WORK IN EMULATORS as of this posting): D009BEF8 0009 ("If Start is held...", that is, "enter or exit the menu normally, or tap Select just before a fade transition in order to...") + one of 8008C252 0000 (load MegaMan unequipped model) 8008C252 1200 (load Roll model) 8008C252 1300 (load Tron model) 8008C252 1400 (load Apron MegaMan model) 8008C252 1500 (load Matilda model) 8008C252 1600 (load Glyde model) 8008C252 1700 (load Gatz model) 8008C252 1800 (load Bon-Bonne model) + D009BEF8 0001 ("If Start+Select is held...", that is, "hold Start while exiting the menu in order to...") + one of 8008C252 F800 (load MegaMan palette) 8008C252 F900 (load Roll palette) 8008C252 FA00 (load Tron palette) 8008C252 FB00 (load Apron Megaman palette) 8008C252 FC00 (load Matilda palette) 8008C252 FD00 (load Glyde palette) 8008C252 FE00 (load Gatz palette) 8008C252 FF00 (load Bon-Bonne palette) + E208C253 0006 (If any normal Shoe is equipped,) C208C252 0002 (copy the current shoe+helm...) 801FFFE0 0000 (...into an unused RAM location.) D009BEF8 2000 (If Circle alone is held,) C21FFFE0 0002 (copy the shoe+helm from before...) 8008C252 0000 (...back into the regular equipment slots.)
Regardless, usage in a nutshell: - Menu/exit with Select to apply chosen character model - Menu with Select, hold Start, exit with Select to apply chosen character texture - When you enter the Equipment menu, tap Circle to swap in your normal gear. Use the equipment menu normally, exit menu with Select to be sure you get your character model back. - Tap Circle at any time during gameplay to apply/refresh the effects of your normal equipment. - OPTIONALLY: tap Select before the fade during any elevator/cutscene/etc. load transition to have your chosen character model on the far side of the load (be sure to tap Circle on the other side to reapply your normal gear effects) - EXPECT that some transitions will unavoidably load back the normal MegaMan character model and/or texture; specifically, don't try to force the custom model on the way out of the weapon Development Room. Just menu as above to reapply as needed.
|
|