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


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Site › dolphin-emu.org articles v
1 2 3 Next »

Game Modification: 60 FPS Hacks and Patches
View New Posts | View Today's Posts

Pages (84): « Previous 1 ... 35 36 37 38 39 ... 84 Next »
Jump to page 
Thread Rating:
  • 3 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Modes
Game Modification: 60 FPS Hacks and Patches
10-23-2016, 04:31 PM
#361
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
Here is a quick video to show a few things:
  • 60 Hz Input
  • Bombs having correct movement speed
  • Link being able to equip Iron Boots
Also the fix I did that made the Iron Boots equip properly also made the Boomerang model stop becoming permanently attached to Link's hand until turning off the game, a glitch I don't think I ever mentioned or showed before. However, that's not in the video.
Find
Reply
10-23-2016, 05:47 PM
#362
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Awesome;D!
Find
Reply
10-23-2016, 07:50 PM
#363
JMC47 Offline
Content Producer
*******
Content Creators (Moderators)
Posts: 6,544
Threads: 29
Joined: Feb 2013
It looks so pretty when it is working <3
Find
Reply
10-23-2016, 08:43 PM (This post was last modified: 10-23-2016, 08:44 PM by Meowmaritus.)
#364
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
Sometime in the future I'm going to put the mod's ASM on GitHub with some kind of open source license because I'm not sure if I can finish this mod alone. I still haven't decided when that will be, but I'll create the thread at that time.

And for those interested, I'm thinking about live streaming me working on the mod (with commentary) on hitbox. Anyways I just posted this on my phone from in bed. Let me know what you think of these ideas while I sleep really late because I'm weird.
Find
Reply
10-23-2016, 08:59 PM
#365
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Question, how do you use cmpwi to compare two registers, instead of a register with a set value?

As for ASM on Github, if you feel like that is the way to go later on, it's completely up to you.
I personally don't "care" if you close or open the codes and info. You are the one working on it, it's your rightsSmile

As for the Live Stream, i don't again, personally watch streams, but i would probably find it quite interesting to watch now and then at the side.
Just cause i try this stuff out myself and could really learn stuffSmile
Find
Reply
10-24-2016, 12:19 AM (This post was last modified: 10-24-2016, 12:25 AM by Meowmaritus.)
#366
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-23-2016, 08:59 PM)Zerowalker Wrote: Question, how do you use cmpwi to compare two registers, instead of a register with a set value?

As for ASM on Github, if you feel like that is the way to go later on, it's completely up to you.
I personally don't "care" if you close or open the codes and info. You are the one working on it, it's your rightsSmile

As for the Live Stream, i don't again, personally watch streams, but i would probably find it quite interesting to watch now and then at the side.
Just cause i try this stuff out myself and could really learn stuffSmile

cmpwi stands for compare word immediate (immediate on any function = constant value). What you're looking for is just compare word: cmpw rA, rB

(I didn't sleep very late at all)
Find
Reply
10-24-2016, 01:36 AM (This post was last modified: 10-24-2016, 01:37 AM by Zerowalker.)
#367
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Oh, that's what immediate stood for.

Thanks as always!

And well Sleep, i was awake like 24+ hours some days ago, sleep is overratedWink
Find
Reply
10-24-2016, 05:46 AM
#368
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
Currently Rendering a 30 minute video that goes from the Nintendo logo appearing all the way until out half way through Forsaken Fortress, showing the Wind Waker Framerate Hack in its current state.
Find
Reply
10-24-2016, 09:26 AM (This post was last modified: 10-24-2016, 09:42 AM by Meowmaritus. Edit Reason: Clicked Comic Sans instead of Courier New lol )
#369
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
So when I make the Wind Waker Framerate Hack open source (see my post from earlier), I'm also going to be releasing some open source apps I'm developing to go in the Framerate Hack's repository along side it:

My open source ASMWiiRD compilation manager thing, called Gekko2Gecko *cough*and Broadway*cough*.

G2G.exe is a lightweight console app which has 2 usages:
  1. Running EXE with no args: Compiles all ASM files within ".\ASM\" into Gecko codes, which are then written to the creatively-named output file "Output.gecko".
  2. Running the EXE with all the ASM files to compile as args: Compiles those ASM files and outputs them to Output.gecko.

Meowmaritus.G2G is a .NET assembly which G2G.exe uses. Referencing this assembly within your own .NET application allows you to access all of the internal functions of G2G and do custom compilation operations from there.

My most favorite feature that I'm adding is the ability to have multiple offsets within a single ASM file. Any time you want some code to be injected starting at one specific offset (and thereby creating one individual Gecko code), you specify the offset with #pragma gecko insert <Address> <CodeName> (syntax not final).
This means the following ASM file (in the current syntax which may change):
FPSHack_Link.asm: (Show Spoiler)

   #pragma gecko insert 801094BC SlowGravity

   ####ORIGINAL####
   lfs f0, 0x0258 (r30)    #[Link's Gravity Acceleration] --> f0
   ################
   lis r17, 0x817F
   lfs f17, 0x0004 (r17)   #Load FloatSlowdown

   fmuls f0, f0, f17       #Multiply f0 by FloatSlowdown

   #([Link's Y-Velocity] + f0) --> [Link's Pending Y-Velocity]

   /*
       The reason this works properly is because we don't ever overwrite
       the actual value of [Link's Gravity Acceleration]; we just change
       The amount by which it modifies [Link's Pending Y-Velocity]. The reason
       this matters is because in different parts of Link's various update
       functions, some values are compared against the actual value of
       [Link's Gravity Acceleration] or use it as a reference point,
       so we can't mess with it. The previous implementation of modding
       the actual stored value caused Link's vertical velocity while
       jumping to mess up due to using the stored value as a reference point
       and it caused Link to go to the falling state too soon after doing a
       hop over a short ledge due to comparing Link's vertical velocity
       to the stored [Link's Gravity Acceleration] value.
   */

#pragma gecko insert 8012207C SlowAllVelocity

   lis r17, 0x817F
   lfs f17, 0x0004 (r17)   #Load FloatSlowdown

   #[Link's Pending Velocity] addresses = X:(r31|0x0220), Y:(r31|0x0224), Z:(r31|0x0228)
   #[Link's Pending Position] addresses = X:(r31|0x01F8), Y:(r31|0x01FC), Z:(r31|0x0120)

   ##X-Axis##
   lfs f18, 0x0220 (r31)   #Load [Link's Pending Velocity]
   lfs f19, 0x01F8 (r31)   #Load [Link's Pending Position]
   fsubs f19, f19, f18     #Subtract [Link's Pending Velocity] from [Link's Pending Position] (which has already had [Link's Pending Velocity] added to it)
   fmuls f18, f18, f17     #Slow that velocity by FloatSlowdown
   fadds f19, f19, f18     #Add the slowed velocity to [Link's Pending Position]
   stfs f19, 0x01F8 (r31)  #Overwrite [Link's Pending Position] but don't modify the original [Link's Pending Velocity] value.

   ##Y-Axis##
   lfs f18, 0x0224 (r31)   #Load [Link's Pending Velocity]
   lfs f19, 0x01FC (r31)   #Load [Link's Pending Position]
   fsubs f19, f19, f18     #Subtract [Link's Pending Velocity] from [Link's Pending Position] (which has already had [Link's Pending Velocity] added to it)
   fmuls f18, f18, f17     #Slow that velocity by FloatSlowdown
   fadds f19, f19, f18     #Add the slowed velocity to [Link's Pending Position]
   stfs f19, 0x01FC (r31)  #Overwrite [Link's Pending Position] but don't modify the original [Link's Pending Velocity] value.

   ##Z-Axis##
   lfs f18, 0x0228 (r31)   #Load [Link's Pending Velocity]
   lfs f19, 0x0200 (r31)   #Load [Link's Pending Position]
   fsubs f19, f19, f18     #Subtract [Link's Pending Velocity] from [Link's Pending Position] (which has already had [Link's Pending Velocity] added to it)
   fmuls f18, f18, f17     #Slow that velocity by FloatSlowdown
   fadds f19, f19, f18     #Add the slowed velocity to [Link's Pending Position]
   stfs f19, 0x0200 (r31)  #Overwrite [Link's Pending Position] but don't modify the original [Link's Pending Velocity] value.

   ####ORIGINAL####
   lfs f0, 0x0220 (r31)
   ################

   #[Link's Pending Velocity] -->--> [Link's New Velocity]
   #[Link's Pending Position] -->--> [Link's New Position]


would get turned into the following Gecko codes:
Gecko Codes: (Show Spoiler)

$FPSHack_Link::SlowGravity
C21094BC 00000003
C01E0258 3E20817F
C2310004 EC000472
60000000 00000000

$FPSHack_Link::SlowAllVelocity
C212207C 0000000B
3E20817F C2310004
C25F0220 C27F01F8
EE739028 EE520472
EE73902A D27F01F8
C25F0224 C27F01FC
EE739028 EE520472
EE73902A D27F01FC
C25F0228 C27F0200
EE739028 EE520472
EE73902A D27F0200
C01F0220 00000000


You may have noticed that #pragma <whatever> looks like a comment. In order to comment out a pragma line you must do ##pragma <whatever>.

A small console app that simply updates "Dolphin Emulator\GameSettings\GZLE01.ini" to have all the Gecko codes generated by G2G.


The binaries of these open source apps will be included the Wind Waker Framerate Hack's repository but their sources will be in their own repositories.





Anyways that's all for now; I've been writing this post for like 2 hours lol
Find
Reply
10-24-2016, 09:31 AM
#370
theboy181 Offline
Member
***
Posts: 60
Threads: 6
Joined: Feb 2015
(10-24-2016, 09:26 AM)Meowmaritus Wrote: So when I make the Wind Waker Framerate Hack open source (see my post from earlier), I'm also going to be releasing some open source apps I'm developing to go in the Framerate Hack's repository along side it:


My open source ASMWiiRD compilation manager thing, called Gekko2Gecko *cough*and Broadway*cough*.

G2G.exe is a lightweight console app which has 2 usages:

  1. Running EXE with no args: Compiles all ASM files within ".\ASM\" into Gecko codes, which are then written to the creatively-named output file "Output.gecko".
  2. Running the EXE with all the ASM files to compile as args: Compiles those ASM files and outputs them to Output.gecko.

Meowmaritus.G2G is a .NET assembly which G2G.exe uses. Referencing this assembly within your own .NET application allows you to access all of the internal functions of G2G and do custom compilation operations from there.

My most favorite feature that I'm adding is the ability to have multiple offsets within a single ASM file. Any time you want some code to be injected starting at one specific offset (and thereby creating one individual Gecko code), you specify the offset with #pragma gecko insert <Address> <CodeName> (syntax not final).
This means the following ASM file (in the current syntax which may change):
FPSHack_Link.asm: (Show Spoiler)

   #pragma gecko insert 801094BC SlowGravity

   ####ORIGINAL####
   lfs f0, 0x0258 (r30)    #[Link's Gravity Acceleration] --> f0
   ################
   lis r17, 0x817F
   lfs f17, 0x0004 (r17)   #Load FloatSlowdown

   fmuls f0, f0, f17       #Multiply f0 by FloatSlowdown

   #([Link's Y-Velocity] + f0) --> [Link's Pending Y-Velocity]

   /*
       The reason this works properly is because we don't ever overwrite
       the actual value of [Link's Gravity Acceleration]; we just change
       The amount by which it modifies [Link's Pending Y-Velocity]. The reason
       this matters is because in different parts of Link's various update
       functions, some values are compared against the actual value of
       [Link's Gravity Acceleration] or use it as a reference point,
       so we can't mess with it. The previous implementation of modding
       the actual stored value caused Link's vertical velocity while
       jumping to mess up due to using the stored value as a reference point
       and it caused Link to go to the falling state too soon after doing a
       hop over a short ledge due to comparing Link's vertical velocity
       to the stored [Link's Gravity Acceleration] value.
   */

#pragma gecko insert 8012207C SlowAllVelocity

   lis r17, 0x817F
   lfs f17, 0x0004 (r17)   #Load FloatSlowdown

   #[Link's Pending Velocity] addresses = XSadr31|0x0220), YSadr31|0x0224), ZSadr31|0x0228)
   #[Link's Pending Position] addresses = XSadr31|0x01F8), YSadr31|0x01FC), ZSadr31|0x0120)

   ##X-Axis##
   lfs f18, 0x0220 (r31)   #Load [Link's Pending Velocity]
   lfs f19, 0x01F8 (r31)   #Load [Link's Pending Position]
   fsubs f19, f19, f18     #Subtract [Link's Pending Velocity] from [Link's Pending Position] (which has already had [Link's Pending Velocity] added to it)
   fmuls f18, f18, f17     #Slow that velocity by FloatSlowdown
   fadds f19, f19, f18     #Add the slowed velocity to [Link's Pending Position]
   stfs f19, 0x01F8 (r31)  #Overwrite [Link's Pending Position] but don't modify the original [Link's Pending Velocity] value.

   ##Y-Axis##
   lfs f18, 0x0224 (r31)   #Load [Link's Pending Velocity]
   lfs f19, 0x01FC (r31)   #Load [Link's Pending Position]
   fsubs f19, f19, f18     #Subtract [Link's Pending Velocity] from [Link's Pending Position] (which has already had [Link's Pending Velocity] added to it)
   fmuls f18, f18, f17     #Slow that velocity by FloatSlowdown
   fadds f19, f19, f18     #Add the slowed velocity to [Link's Pending Position]
   stfs f19, 0x01FC (r31)  #Overwrite [Link's Pending Position] but don't modify the original [Link's Pending Velocity] value.

   ##Z-Axis##
   lfs f18, 0x0228 (r31)   #Load [Link's Pending Velocity]
   lfs f19, 0x0200 (r31)   #Load [Link's Pending Position]
   fsubs f19, f19, f18     #Subtract [Link's Pending Velocity] from [Link's Pending Position] (which has already had [Link's Pending Velocity] added to it)
   fmuls f18, f18, f17     #Slow that velocity by FloatSlowdown
   fadds f19, f19, f18     #Add the slowed velocity to [Link's Pending Position]
   stfs f19, 0x0200 (r31)  #Overwrite [Link's Pending Position] but don't modify the original [Link's Pending Velocity] value.

   ####ORIGINAL####
   lfs f0, 0x0220 (r31)
   ################

   #[Link's Pending Velocity] -->--> [Link's New Velocity]
   #[Link's Pending Position] -->--> [Link's New Position]


would get turned into the following Gecko codes:
Gecko Codes: (Show Spoiler)

$FPSHack_Link::SlowGravity
C21094BC 00000003
C01E0258 3E20817F
C2310004 EC000472
60000000 00000000

$FPSHack_Link::SlowAllVelocity
C212207C 0000000B
3E20817F C2310004
C25F0220 C27F01F8
EE739028 EE520472
EE73902A D27F01F8
C25F0224 C27F01FC
EE739028 EE520472
EE73902A D27F01FC
C25F0228 C27F0200
EE739028 EE520472
EE73902A D27F0200
C01F0220 00000000


You may have noticed that #pragma <whatever> looks like a comment. In order to comment out a pragma line you must do ##pragma <whatever>.


A small console app that simply updates "Dolphin Emulator\GameSettings\GZLE01.ini" to have all the Gecko codes generated by G2G.



The binaries of these open source apps will be included the Wind Waker Framerate Hack's repository but their sources will be in their own repositories.





Anyways that's all for now; I've been writing this post for like 2 hours lol

giving back to the community is appreciated! any word on your latest YouTube upload?
Find
Reply
« Next Oldest | Next Newest »
Pages (84): « Previous 1 ... 35 36 37 38 39 ... 84 Next »
Jump to page 


  • 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