• 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 ... 40 41 42 43 44 ... 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-29-2016, 01:42 AM
#411
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-28-2016, 11:24 PM)Zerowalker Wrote: i don't even know what the hell G2G is, but i will assume it means Good 2 Go!

It's that thing that I keep mentioning over and over again.

What is this, a Zelda game?
Find
Reply
10-29-2016, 01:50 AM
#412
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Now that's awesome, that will really speed things up for me (As i do so much testing of code over and over and it takes much time to have to copy paste, rewrite all the time cause of this limitation.

Oh so G2G is a library, then i get it.

Confused, so i need those in order to run the thing you set before?
Shouldn't it be like an exe file?

Will look at it later and see if i can figure this wizard art out!

Wait, do you write yout code in Sublime Text (i notice you used that during your stream),
isn't that like Notepad++, just a, well notepad more or less?

Aren't we supposed to write the code within your app, or perhaps it's connected somehow?
Find
Reply
10-29-2016, 02:05 AM (This post was last modified: 10-29-2016, 02:08 AM by Meowmaritus.)
#413
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-29-2016, 01:50 AM)Zerowalker Wrote: Now that's awesome, that will really speed things up for me (As i do so much testing of code over and over and it takes much time to have to copy paste, rewrite all the time cause of this limitation.

Oh so G2G is a library, then i get it.

Confused, so i need those in order to run the thing you set before?
Shouldn't it be like an exe file?

Will look at it later and see if i can figure this wizard art out!

Wait, do you write yout code in Sublime Text (i notice you used that during your stream),
isn't that like Notepad++, just a, well notepad more or less?

Aren't we supposed to write the code within your app, or perhaps it's connected somehow?

G2G is a library, which is made available for if someone wants to use it for a fancy code editor GUI they're making or something like that.

Yes Sublime Text is just a text editor. I used to use it to edit all the ASM files for WWFH (Wind Waker Framerate Hack; remember this acronym because im tired of typing the whole name), load them into CodeWrite with File -> Open, then hit convert, then copy the Gecko codes, paste them into GZLE01.ini, and then save it.

Along with the G2G library I'm releasing a console app that you just double click or whatever to compile ALL *.g2g files (the fancy ASM files G2G uses) in a directory into ONE list of Gecko codes. Additionally, as a bonus feature, I'm making it where you can specify a game's INI file (i.e "My Documents\Dolphin Emulator\GameSettings\GZLE01.ini") and the program will automatically add all the newly generated Gecko codes under the [Gecko] section (or if codes already exist with the same name, it will just change them to the new codes).

With that said, here's the NEW way of doing ASM stuff I'm hoping to introduce with G2G and its accompanying apps:
  1. Edit and save your .g2g files in a nice text editor with syntax highlighting (Sublime Text and Visual Studio Code are my recommendations, which look nice for PPC ASM on Ruby syntax mode, as I said before)
  2. Run a batch file with these contents:
    G2G_CMD.exe "Path\To\G2G\Input\Files" "Path\To\Game\INI"
  3. Open the Cheat Editor in Dolphin
  4. Enable any new-ly added codes
  5. Hit Apply

Now all you have to do once you make a change to a code is:
  1. Press Ctrl+S in the text editor to save the G2G file.
  2. Double click the batch file.
  3. Hit "Apply" in Dolphin's Cheat Editor
Find
Reply
10-29-2016, 02:16 AM
#414
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Wow, that sounds Veeery bothersome, i write in Codewrite directly,
then again i do not have a mindset on what i am supposed to do and how to write it,
if you ahve a clear picture i can easily see that as being less bothersome than i would be for me haha xd

Oh that's very neat (Adding to the game.ini), impressive stuff;O

Ah, that process seems fairly straightforward, does Sublime or Visual Studio have some kind of, ASM check?
(like code spell check thingy), cause that is kinda useful at times for me in CodeWrite, though not really necessary, more like, a neat thing at times.

Appreciate your work and enthusiasmSmile
Find
Reply
10-29-2016, 04:00 AM (This post was last modified: 10-29-2016, 04:09 AM by Meowmaritus.)
#415
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-29-2016, 02:16 AM)Zerowalker Wrote: Wow, that sounds Veeery bothersome, i write in Codewrite directly,
then again i do not have a mindset on what i am supposed to do and how to write it,
if you ahve a clear picture i can easily see that as being less bothersome than i would be for me haha xd

Oh that's very neat (Adding to the game.ini), impressive stuff;O

Ah, that process seems fairly straightforward, does Sublime or Visual Studio have some kind of, ASM check?
(like code spell check thingy), cause that is kinda useful at times for me in CodeWrite, though not really necessary, more like, a neat thing at times.

Appreciate your work and enthusiasm:)

G2G uses the exact same assembler executable as CodeWrite and will spit out the same shitty non-informative errors directly from the EXE such as everyone's favorite "Error: Junk at end of line:7". 

When the G2G command line tool (G2G_CMD.exe) runs into assembler errors it displays the following information for each error:
  • Which *.G2G file the error is in.
  • Which Gecko Directive (the named sections of code enclosed in the {curly braces} and preceded by a @something thing) the error is in.
  • The actual error message encountered:
    • Only if including straight Gecko codes in the Gecko Directive via "@include": How many lines down the invalid Gecko code is in the list (exact line number rather than "how many codes" down will be implemented in the future, as it can get annoying if including a lot of long codes).
    • Only if inserting ASM in the Gecko Directive via "@insert" OR if executing ASM in the Gecko Directive via "@execute": The error returned by the assembler executable (note that any line numbers displayed in the assembler error start from the beginning of the ASM code in that directive and has nothing to do with the line number within the *.G2G file as a whole).
Well, saying that it does that for each error is jumping the gun a bit, so to speak, since in the current version (note: I'M STILL UPDATING IT) it only displays the first error and then stops assembling code. In the future it will be a flag you can set in the command line args.

Regardless of how many of the errors it displays, if it encounters at least one error, it DOES NOT produce any output files, so you wont be overwriting anything with broken codes or accidentally messing something up in the game settings INI.

In case you're wondering: I, personally, for WWFRH I'm going to add a new build system to my Sublime Text config that simply runs G2G_CMD with a few command line arguments. That way, all I have to do to build the code is press Ctrl+B.


EDIT: I forgot to post this screenshot of what a *.G2G file looks like with Ruby language syntax in Sublime Text (using Solarized Light color theme). Yes I know it's not perfect, with some random stuff getting highlighted, but it's good enough for me.
Tall image.: (Show Spoiler)
[Image: 1a323e34fce92cee3c144adec91229a9.png]

Whatever color scheme you have, the point is those things will be colored differently, 'ya know?
Find
Reply
10-29-2016, 07:05 AM
#416
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Ah i kinda get the grasp of it.
I am not picky about the errors themselves, but just as well it might be good Knowing that something is wrong haha xd

And that text does indeed look good, will take awhile until i get the formatting in mind probably (coding), but it looks neat never the less, looking forward to it when it's "more complete"!

Oh might as well ask if you have a hint on a way to approach an issue i have, i can kinda make out some but none it worth it.


So, imagine this.

You have cutscenes that are being run, 3 different ones.

Two of them are at 30fps, one of them is in 60fps.

All use the same function but different Multipliers (Different addresses in which it's stored (this MIGHT be static for the 30fps ones).

One approach (which i would prefer) is to alter the function to just divide stuff by 2, that way it's short ASM code and it's universal.
However, it will make the 60fps one run at "120fps" if you will.

Now the easy way would be in theory to just make it say "if it's the 60fps one, don't divide".
Sadly, i don't know what i could compare with as no value is actually the same.
I Could maybe use the static addresses for the first 2 and if they don't contain the value i expect then ignore it,
however that would make a Very weird If statement (as both use separate addresses), and it would kinda defeat the purpose of making more code.

The other Approach which i currently use is just to modify the multiplier addresses directly (the value is 1.0 so i change it to 0.5 before it obtains it with "lfs").

Hope what i wrote made any sense at all, if not, well, sucks to be me ;P
Find
Reply
10-29-2016, 09:12 AM
#417
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-29-2016, 07:05 AM)Zerowalker Wrote: Ah i kinda get the grasp of it.
I am not picky about the errors themselves, but just as well it might be good Knowing that something is wrong haha xd

And that text does indeed look good, will take awhile until i get the formatting in mind probably (coding), but it looks neat never the less, looking forward to it when it's "more complete"!

Oh might as well ask if you have a hint on a way to approach an issue i have, i can kinda make out some but none it worth it.


So, imagine this.

You have cutscenes that are being run, 3 different ones.

Two of them are at 30fps, one of them is in 60fps.

All use the same function but different Multipliers (Different addresses in which it's stored (this MIGHT be static for the 30fps ones).

One approach (which i would prefer) is to alter the function to just divide stuff by 2, that way it's short ASM code and it's universal.
However, it will make the 60fps one run at "120fps" if you will.

Now the easy way would be in theory to just make it say "if it's the 60fps one, don't divide".
Sadly, i don't know what i could compare with as no value is actually the same.
I Could maybe use the static addresses for the first 2 and if they don't contain the value i expect then ignore it,
however that would make a Very weird If statement (as both use separate addresses), and it would kinda defeat the purpose of making more code.

The other Approach which i currently use is just to modify the multiplier addresses directly (the value is 1.0 so i change it to 0.5 before it obtains it with "lfs").

Hope what i wrote made any sense at all, if not, well, sucks to be me ;P

But does that function get called from multiple places or the same place?
Find
Reply
10-29-2016, 09:19 AM (This post was last modified: 10-29-2016, 09:20 AM by Zerowalker.)
#418
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
The function is sadly a bit deep down a "tree", it has several function callers.
Though, if it helps, i think the Main caller (a bit above the tree) is different. But the caller above that actual function i think is the same sadly.

(Just started trying sublime, it's really neat, trying to fix my own syntax and autocomplete etc to ease things, thanks for the recommendation!)
Find
Reply
10-31-2016, 05:44 AM
#419
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Okay i think i May have a solution, took it from what you asked for.

I looked at the r1, and it Seems it May be the same when this animation is played, so i can used that.
Though haven't tested it 100% which will be bothersome, but for now it seems to work out.

I also notice how hard it can be to use registers for calculations and such,
cause if a register happens to be in use at some point, you will cause effects in the game.
This has happened to me several times and took awhile until i noticed what the hell was wrong.

So i try to use registers that are Always overwritten afterwards, that way i assume they should be safe to use.
Find
Reply
10-31-2016, 11:49 AM (This post was last modified: 10-31-2016, 11:49 AM by Meowmaritus.)
#420
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-31-2016, 05:44 AM)Zerowalker Wrote: So i try to use registers that are Always overwritten afterwards, that way i assume they should be safe to use.

Heh that's actually almost word for word what I recommended in one of my previous replies to you but you seemed to be so overwhelmed by the other stuff that you didn't notice ( ͡° ͜ʖ ͡°)
Find
Reply
« Next Oldest | Next Newest »
Pages (84): « Previous 1 ... 40 41 42 43 44 ... 84 Next »
Jump to page 


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


Users browsing this thread:



Powered By MyBB | Theme by Fragma

Linear Mode
Threaded Mode