Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GameCube #2

Open
john-peterson opened this issue Jun 30, 2013 · 2 comments
Open

GameCube #2

john-peterson opened this issue Jun 30, 2013 · 2 comments

Comments

@john-peterson
Copy link
Owner

No description provided.

@john-peterson
Copy link
Owner Author

F-Zero GX [GFZE01]

Reference

Code

This code is located by me

Comment

These abbreviations are used in the code comment

  • dl: digital pad left
  • dr: digital pad right

Shared credit

"infinite energy" has a shared credit because it's a merge of two codes to one

Test

  • Grand Prix, Novice
  • Story Mode, Chapter 1, [Novice, Very Hard]

Variable memory map

This game complicate patching because it loads the .rel code to different address depending on f.e.

  • the story mode difficulty

A story mode address patches in the code in the topic "Code" has been observed at these addresses

80c9d620
80c9d720
80c9d800
80c9d820

The complication is limited to require one pointer because

  • the same offset (as in the code above) apply to all code and memory

Pointers

This table contain pointers use to compensate for the variable memory map described in the topic "Variable memory map"

The order is from lower to higher address because

  • in gneral the pointer to the lowest address is best because it can be used to patch all addresses because
            menu        gp          story
801b7574    00000001
            801a66b4
800030c8    801ba880
801a66e8*   801bb590
801b617c    00000000                80c9cb5c
801b61ac    00000000    803e330e
                        80c4663c
801a66dc    802728a4

The pointer marked with "*" isn't previously published, the other code is in the topic "Reference"

The pointer address 801ba880 is low enough to

  • patch all .rel code and memory

because

  • a po lower than the code address is required because the type 0 code don't allow a negative offset

Location

The pointer address 801a66e8 is located by

  • looking at the memory around the published address 801a66dc and observing other pointers

Stop time

Behavior

The time is 1 instead of 0 because

  • if time is 0 when the lap change the message "Time is up..." is displayed

Motivation

The motivation for creating

a stop time patch is

  • it's difficult to progress past story mode chapter 1 very hard

Selected mode

The selected mode address is useful because

  • it allow combining codes that are previously separate depending on mode

It's not previously published

Location

The code is located in ArtMoney by

  • finding the main menu selection variable
  • searching for an address that has the corresponding values when different modes are selected

Tools

These tools are used to locate the address

@john-peterson
Copy link
Owner Author

Lap time

Reference

This reference contain examples of lap time cheats that patch the code rather than only the variable

Code patch

This is the

benefit with patching the code that update the lap time variable (rather than only the time variable)

  • if the finish time read a function return value instead of a variable it's necessary to patch code
  • if the code writes the current time rather than increment the variable the finish time is uncertain
  • it's distracting that the lap time change constantly between the value written by the code and the patch engine

disadvantage

  • more changed code and variables on average mean a higher probability of an unintended effect when the game area is changed so that the same memory location is used for another purpose

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant