• Login
  • Register
  • Dolphin Forums
  • Home
  • FAQ
  • Download
  • Wiki
  • Code


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Emulator Discussion and Support › Development Discussion v
« Previous 1 ... 6 7 8 9 10 ... 117 Next »

Suggestions from a Pikmin hacker
View New Posts | View Today's Posts

Thread Closed 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Modes
Suggestions from a Pikmin hacker
07-13-2019, 06:26 PM
#1
Minty Meeo
Unregistered
 
Lightbulb 
While reading the Dolphin Emulator website, I learned that this section of the forums existed.  I hack Pikmin 1 & Pikmin 2 as a hobby.  Recently, our community has had an explosion of people learning about assembly editing, myself included.  From my time using Dolphin's debugging tools, I have some suggestions for new features and improvements that will positively effect virtually all GC/Wii modding communities!

There are three ideas that I have thought of so far.

Anti-Breakpoints
This is a basic tool that would speed up my workflow tremendously.  It goes like this:
If a Memory/Register Breakpoint is tripped, Dolphin then checks to see if the processor instruction responsible has an Anti-Breakpoint.  If it does, emulation will continue as normal.
If a Processor Breakpoint is tripped that interacts with memory/registers, Dolphin then checks to see if the memory range/registers has an Anti-Breakpoint.  If it does, emulation will continue as normal.
For the former example, this would be incredibly useful when a particular memory address (usually static data) is accessed multiple times in an irrelevant loop.  Sure, there are messy configurations one could create to push past the annoying loop, but that's no good.  For one, Dolphin's breakpoints are already hard to keep track of and a messy configuration would compound that.  For two, repeat experiments are difficult depending on how you do the configuration.  Having this basic yet powerful tool would save so much time.
For the latter example, I actually am not sure how useful it would be, but I'm sure having Anti-Breakpoints work both ways will be better in the long-run.  I don't know everything, after all.

Emulated Memory Override
While exploring the internet, I learned about a leaked build of Metroid Prime 3 exists for the GameCube, and that the only reasonable way to run it is via a modified build of Dolphin Emulator that allocates more emulated RAM to simulate a NPDP-GDEV unit.  The commit that added this feature to the master branch to be optionally changed upon compiling is here.

This feature has always piqued my interest, but now that I am into game modding, even more so.  You see, Pikmin 2 is pretty starved for free memory, which leads to custom course models being a pain to make.  However, when running in a build of Dolphin with more emulated RAM, Pikmin 2's MEM heap / CPU bar actually recognizes the extended memory range!
[Image: lAvkDmc.png]
If our community could solve how to expand the OSArena(?) to create a larger heap, we could make new content that would be impossible on the original hardware!  (Think like how Project 64 can have its memory expanded and how the SM64 community uses that very often.)  This would also make using Dolphin Emulator to test game prototypes like the Metroid Prime 3 one much easier to do on recent revisions.

So here's how I visualize it; a slider just like the Emulated CPU Override one in pretty much the same menu.  On it are clearly marked intervals for retail GameCube, retail Wii, NPDP-GDEV, etc.  (I am unfamiliar with Wii dev units; did they have even more RAM?).  I suppose emulating less RAM ought to be possible as well, but I cannot see many reasons why one would want that.  Essentially, take what is normally a feature exclusive to dirty builds of Dolphin Emulator (not friendly for sharing game mods), and make it easily configurable for anyone on the latest revision of Dolphin (which, btw, is so loaded with awesome tools for hacking.  I want to take a moment to thank you guys.)  How neat would that be?
This slider would obviously only be configurable while no emulation instance is running.  Hopefully this is an easy feature to implement?

Better Annotation in Code Dumps
My final request is a smaller one (I think).  I find it odd that Dolphin's live disassembly in the code window can tell you exactly what function a branch instruction jumps to, yet code maps that can be generated under Symbols > Save Code only mentions the memory offset.
[Image: DoH5zVZ.png]
Can the code maps have the feature implemented to them that the live disassembly already has?  Perhaps omit the function name for in-function jumps, as that would be a bit redundant.



I apologize for the high volume of requests I have made.  I would love to help implement them myself, but as good as I am at hacking Pikmin games, I am still hopeless when it comes to C++.  I can only hope that these additions are as easy to implement in practice as I think they should be.
02-04-2021, 03:44 PM (This post was last modified: 02-04-2021, 03:44 PM by Entergroot.)
#2
Entergroot Offline
Junior Member
**
Posts: 26
Threads: 3
Joined: Aug 2019
(07-13-2019, 06:26 PM)Minty Meeo Wrote: While reading the Dolphin Emulator website, I learned that this section of the forums existed.  I hack Pikmin 1 & Pikmin 2 as a hobby.  Recently, our community has had an explosion of people learning about assembly editing, myself included.  From my time using Dolphin's debugging tools, I have some suggestions for new features and improvements that will positively effect virtually all GC/Wii modding communities!

There are three ideas that I have thought of so far.

Anti-Breakpoints
This is a basic tool that would speed up my workflow tremendously.  It goes like this:
If a Memory/Register Breakpoint is tripped, Dolphin then checks to see if the processor instruction responsible has an Anti-Breakpoint.  If it does, emulation will continue as normal.
If a Processor Breakpoint is tripped that interacts with memory/registers, Dolphin then checks to see if the memory range/registers has an Anti-Breakpoint.  If it does, emulation will continue as normal.
For the former example, this would be incredibly useful when a particular memory address (usually static data) is accessed multiple times in an irrelevant loop.  Sure, there are messy configurations one could create to push past the annoying loop, but that's no good.  For one, Dolphin's breakpoints are already hard to keep track of and a messy configuration would compound that.  For two, repeat experiments are difficult depending on how you do the configuration.  Having this basic yet powerful tool would save so much time.
For the latter example, I actually am not sure how useful it would be, but I'm sure having Anti-Breakpoints work both ways will be better in the long-run.  I don't know everything, after all.

Emulated Memory Override
While exploring the internet, I learned about a leaked build of Metroid Prime 3 exists for the GameCube, and that the only reasonable way to run it is via a modified build of Dolphin Emulator that allocates more emulated RAM to simulate a NPDP-GDEV unit.  The commit that added this feature to the master branch to be optionally changed upon compiling is here.

This feature has always piqued my interest, but now that I am into game modding, even more so.  You see, Pikmin 2 is pretty starved for free memory, which leads to custom course models being a pain to make.  However, when running in a build of Dolphin with more emulated RAM, Pikmin 2's MEM heap / CPU bar actually recognizes the extended memory range!
[Image: lAvkDmc.png]
If our community could solve how to expand the OSArena(?) to create a larger heap, we could make new content that would be impossible on the original hardware!  (Think like how Project 64 can have its memory expanded and how the SM64 community uses that very often.)  This would also make using Dolphin Emulator to test game prototypes like the Metroid Prime 3 one much easier to do on recent revisions.

So here's how I visualize it; a slider just like the Emulated CPU Override one in pretty much the same menu.  On it are clearly marked intervals for retail GameCube, retail Wii, NPDP-GDEV, etc.  (I am unfamiliar with Wii dev units; did they have even more RAM?).  I suppose emulating less RAM ought to be possible as well, but I cannot see many reasons why one would want that.  Essentially, take what is normally a feature exclusive to dirty builds of Dolphin Emulator (not friendly for sharing game mods), and make it easily configurable for anyone on the latest revision of Dolphin (which, btw, is so loaded with awesome tools for hacking.  I want to take a moment to thank you guys.)  How neat would that be?
This slider would obviously only be configurable while no emulation instance is running.  Hopefully this is an easy feature to implement?

Better Annotation in Code Dumps
My final request is a smaller one (I think).  I find it odd that Dolphin's live disassembly in the code window can tell you exactly what function a branch instruction jumps to, yet code maps that can be generated under Symbols > Save Code only mentions the memory offset.
[Image: DoH5zVZ.png]
Can the code maps have the feature implemented to them that the live disassembly already has?  Perhaps omit the function name for in-function jumps, as that would be a bit redundant.



I apologize for the high volume of requests I have made.  I would love to help implement them myself, but as good as I am at hacking Pikmin games, I am still hopeless when it comes to C++.  I can only hope that these additions are as easy to implement in practice as I think they should be.

Would you be able to make a 32:9 code for pikmin 2?? i have been trying for over a year, i found a 21:9 code:

C241A434 00000003
3DC03FE3 91C24000
C01F002C C2224000
EC110032 00000000
C23BB844 00000003
3DC03FE3 91C24000
C3C6002C C2224000
EFD107B2 00000000
C241AD98 00000004
3C803F12 90820000
C2220000 C0030000
EC110032 D0030000
38800000 00000000
C2434EBC 00000002
3DC03F0A 91DC00CC
60000000 00000000
Find
02-05-2021, 11:36 AM
#3
Shonumi Offline
Linux User/Tester
**********
Administrators
Posts: 6,513
Threads: 55
Joined: Dec 2011
Please see our rules about necroposting. Additionally, please don't hijack other user's threads. In this specific situation, you could have PMed Minty Keep about AR codes.
Website Find
« Next Oldest | Next Newest »
Thread Closed 


  • View a Printable Version
  • Subscribe to this thread
Forum Jump:


Users browsing this thread: 1 Guest(s)



Powered By MyBB | Theme by Fragma

Linear Mode
Threaded Mode