Recent Posts

Pages: [1] 2 3 ... 10
1
Core / Re: Two games that will not be excepted in Rom Browser
« Last post by RadeonUser on April 25, 2021, 04:13:57 am »
I think this was fixed long ago in an internal build.
Next bit of work will be to release a semi-stable version that we can all use to compare things.
2
Cheat Development / Cheat History and Undo
« Last post by RadeonUser on October 08, 2020, 02:31:44 am »
Cheats are something that have always plagued us in PJ64.
I know I'll get a nasty look from Gent for that but it's simply true.

We have had countless users on the forums complaining about how unstable the emulator is or that it stops working at a certain point.
Rarely do we find it's a problem in the emulation but rather a cheat that was turned on and whose value needs to be set (manually, mind you) to a different value to make forward progress.

The "Always Remember Cheats" option is insufficient for this purpose and it is my belief the option has no reason to exist.
Instead what I propose is to keep track of what cheats have been enabled and what values are being changed on a per game basis.

In order to accomplish this we will be adding an additional file to static and native saves.
This file will keep track of enabled cheats, the format will be something like
Cheat Name
Command
Address
Value
Previous Written Value

So, for example Infinite Lives 80053204 04 03
Currently that would be saved as Infinite Lives=True
That method is not sufficient because enabled cheats must travel with the save itself, regardless if they exist within the cheat file or not.
Unticking that cheat would set memory address 053204 to 03 and the cheat would disappear if it is not within the cheat menu.

Now the problem I foresee is having to keep track of the memory address before and after things are executed, to note when the game itself was setting a value and not when the cheat was being set.
In the example I provided we activated Infinite Lives when we had only 3 but the cheat sets it to 4.
If you gain another life the game would try to write a 4 and then the cheat would write over it with a 4.
I would like to keep track of when the game is trying to do things, it's important for a proper undo.

The reason I want that is for a more proper cheat undo.
This is the scenario.
You turned on a cheat to gain an upgraded item.
You did this at the start when you had the regular item.
A simple cheat undo would leave you with the regular item.
However, what if you advanced enough into the story that you should have an intermediate version of the item?
It would be nice to be able to instead "undo" the cheat and be left with the item the game should have given you from the story advancement.

Obviously this is only the case when the item shares the same memory address and only the value differentiates the upgrade.
Maybe I'm thinking too much into this and a normal undo (Set the value before the cheat was enabled) would be sufficient.

What are your thoughts Gent?

Also, I may have missed typing everything out... I had to get up and my mind wandered off several times when writing this.
As does my will to stay awake.
3
Cheat Development / Exclusive Cheats
« Last post by RadeonUser on October 08, 2020, 02:00:22 am »
Gent and I talked about the need of this feature earlier and felt the need to post before I forgot the majority of what we talked about (This has happened all too often)

The reason behind this feature is simple.
There exists cheats that should not be enabled together.

Enabling the cheats together will trigger something bad, either a soft lock or undefined behavior.

Therefore another format will be added to better control these cheats.
Enabling one of these exclusive group cheats will disable the enabled cheat within the same group.

I was thinking of Cheat_E0 as the format to go with, where E0 is the group name (Exclusive Group 0)
This will also have an additional underscore and number to follow the cheat numbering scheme we currently have.

Yes that will get wordy but it's necessary because we need some way to note things are grouped and we will need to have a unique way of identifying cheats (Since they may have options, notes, etc...)

Unfortunately we cannot hobble something together and keep backwards compatibility.
This has to be a change that breaks from the previous convention because of the way 1.6 and 2.X handle cheat searches (Namely, they start at 0 and increment until it fails to read a cheat at a number.... so if Cheat10 is not inside the file it will stop counting up)
At least that's been my impression so far with what I've touched, if I'm wrong and we can keep some semblance of compatibility it would be fantastic but I am by no means going to purposefully maintain compatibility.
4
Cheat Development / Re: Cheat Option Grouping for Multiple lines.
« Last post by Gent on October 07, 2020, 04:32:00 pm »
Looking at this cheat: Asteroids Hyper 64 (U)
Code: [Select]
[D1F7D8AB-293B0446-C:45]
Name=Asteroids Hyper 64 (U)
Cheat0="Extra Lives",8007F90E 0063
Cheat0_N=Not to be used with CLassic Mode, or it will freeze
Cheat1="Extra Points",8107F8FE FFFF
Cheat1_N=Not to be used with CLassic Mode, or it will freeze
Cheat2="Infinite Armageddon",8107F892 0001
Cheat2_N=Not to be used with CLassic Mode, or it will freeze
Cheat3="Infinite Items On Pickup",8107F8A2 270F
Cheat3_N=Not to be used with CLassic Mode, or it will freeze
Cheat4="Unlock Classic Asteroids",8106DF5A 0001
Cheat5="Infinite Lives (Classic Asteroids)",8007F90F 0009
It is also clear that it would be nice to be able to group notes as the above cheat shows there is no Option to link the note to that share the same note like below

Code: [Select]
[D1F7D8AB-293B0446-C:45]
Name=Asteroids Hyper 64 (U)
Cheat0="Extra Lives",8007F90E 0063
Cheat0_N=Not to be used with CLassic Mode, or it will freeze
Cheat1="Extra Points",8107F8FE FFFF
Cheat1_N=Cheat0_N
Cheat2="Infinite Armageddon",8107F892 0001
Cheat2_N=Cheat0_N
Cheat3="Infinite Items On Pickup",8107F8A2 270F
Cheat3_N=Cheat0_N
Cheat4="Unlock Classic Asteroids",8106DF5A 0001
Cheat5="Infinite Lives (Classic Asteroids)",8007F90F 0009
5
Cheat Development / Re: Cheat Search Results Panel Crash Recorvery
« Last post by Gent on October 04, 2020, 01:22:48 pm »
If you want the cheat creation save I should be able to do that, though...
Would you want it to be deleted when the Cheat Search window is closed or would this be something to keep around until manually removed?
Note that this wouldn't reactivate them, the cheats would be stored "deactivated", simply the memory address and the value that was last played with would be reloaded.
Yes this is something i have given some thought to.
I think it would be beneficial to have this kind of maintain in Cheat Creation even when dialog is closed, and on reload of dialog to be in a disabled state. This way we get to keep cheats we have already tested and not saved yet from a crash recovery or even after dialog close. But the benefit of on reload having them disabled so it does not keep crashing so to speak.
6
Cheat Development / Re: Cheat Search Results Panel Crash Recorvery
« Last post by RadeonUser on October 04, 2020, 04:01:50 am »
A full recovery would involve a save state with some additional information saved for the cheat window.

A recovery of the items in the Cheat creation should be simple enough, I can just write that out to file on creation and reload that when Cheat Search is opened.
It shouldn't be too complicated, I'll just have to find a unique name to attach it to (The file name should do nicely, I think)

If you're after a full recovery that's going to take a bit of thought.
I'm not sure what place would be best to do that, nor have I given thought to what would be necessary to save from the cheat search window.

If you want the cheat creation save I should be able to do that, though...
Would you want it to be deleted when the Cheat Search window is closed or would this be something to keep around until manually removed?
Note that this wouldn't reactivate them, the cheats would be stored "deactivated", simply the memory address and the value that was last played with would be reloaded.
7
Cheat Development / Cheat Interface Redesign
« Last post by RadeonUser on October 04, 2020, 03:53:52 am »
This will be going on the to-do/wish list.

I am not satisfied with the way we choose cheats.
I rarely use the cheat system so I didn't realize how bulky it is.

The goal will be to get rid of the extra window for the newer address replacement and the old value replacement (Code Extensions)
If this can be accomplished by also getting rid of the edit window I'll also look into doing that.

Just so that it's understood the goal is not to create one gigantic window with most of it going unused the majority of the time.
For this goal I'll do small edits along the way, such as streamlining the options by getting rid of the leading part ($00 for example, this is entirely unnecessary for choosing an option)
8
Cheat Development / Re: Cheat Option Grouping for Multiple lines.
« Last post by RadeonUser on October 01, 2020, 07:08:41 am »
Proof of concept, loads the options on double click and right click edit also shows the appropriate options.
This should work for loading the cheats but I have not tested anything.

Edit is currently not saving properly, I tried to do a last minute addition of code but it didn't go well.
So do not update cheat right now.

Let me know if it works otherwise.
Also, I know that saving is borked...
The sorting I did does not seem to take the numbers into consideration (It will do Cheat1 then Cheat10 instead of following to Cheat2, also I noticed you're using Name and not Good Name so Name is being moved to the very bottom)
I'll fix that later (Soon, but later)

I tested this with Rockman Dash, I added this cheat
Cheat44="Buster Parts Slot Select\Slot 33 Copy",8020CEF3 00??
Cheat44_O=Cheat43_O

The options came up just fine but I didn't verify it actually activated the cheat.
9
Cheat Development / Re: Cheat Option Grouping for Multiple lines.
« Last post by RadeonUser on October 01, 2020, 06:04:41 am »
Just posting this together as an update with https://project64.emulation64.com/forum/cheat-development/cheat-special-option-wish

I'm currently looking at cheats to get a better understanding and see where I need to modify these.

This will not be taking the route of "Cheat0_L=Group1" because that would cause priority problems (If there is a Cheat0_O already do you pay attention to it first or not? Cheat0_L may end up being meaningless then)
So it will still have to be "Cheat0_O="

Now, from what I can tell all options start with $ so this format is always followed:
CheatX_O=$Number Name(,$Number Name) with ( ) being repeated up to the max GS entries times.

So if I don't read a $ after the Cheat0_O= I can just take whatever follows as the "group" name
In other words, this will be supported as:

Cheat8="Equipped Buster Parts\Slot 01",80204E00 00??
Cheat8_O=Group1
Group1=$00 Nothing,$01 Blaster Unit Omega,$02 Sniper Unit Omega,$03 Laser,$04 Sniper Range,$05 Turbo Battery,$06 Power Raiser Omega,$07 Range Booster Omega,$08 Turbo Charger Omega,$09 Blast Unit,$0A Sniper Unit,$0B Power Raiser Alpha,$0C Range Booster Alpha,$0D Turbo Charger Alpha,$0E Power Raiser,$0F Range Booster,$10 Turbo Charger,$11 Buster Max,$12 Power Stream,$13 Blaster Unit R,$14 Buster Unit Omega,$15 Omni-Unit Omega,$16 Auto Battery,$17 Sniper Scope,$18 Rapid Striker,$19 Gatlin Gun,$1A Omni-Unit,$1B Power Blaster R,$1C Power Blaster L,$1D Machine Gun,$1E Triple Access,$1F Buster Unit,$20 Rapid Fire,$21 Helmet

Really, you could replace Group1 with anything as I'll just read everything between the = and the end of the line as the name
So, you could say instead of Group1 do Buster Parts
Just to keep the naming scheme more sensible and all you'd have to do is keep the same name between the group name and the group name options
10
Cheat Development / Re: Cheat Special Option Wish
« Last post by RadeonUser on October 01, 2020, 05:41:44 am »
Leaving this here so there's a "permanent" account.

I've been looking at this, actually commented a good bit of the code because I was following it along.
This will require some modification to the cheat graphical interface.
I don't believe it will be too much work, I'll likely just do a copy and paste of the code extensions and rename to command extensions.

I'll sporadically be taking a look into adding this in, unfortunately I'm not concentrating too much on programming at the moment so this may take a while to implement.

The look I took at the cheat file leads me to believe it'll be a helpful addition.
Pages: [1] 2 3 ... 10