emukidid / swiss-gc

Swiss - The swiss army knife of GameCube homebrew
GNU General Public License v2.0
1.23k stars 93 forks source link

Create separate entrypoint logic for in-game invoked mode #765

Open emukidid opened 1 year ago

emukidid commented 1 year ago

Describe the feature

Create a struct, something like:

struct {
    u32 swissMagic, -- something to make it obvious when we're passed this.
    void* readDevice, -- optional
    void* writeDevice, -- optional
    void* screenData, -- ptr to screen dump, more info can be pulled from viRegs perhaps or stored somewhere
    void* reservedAreaBase -- ptr to all our in-game stuff
} swissGlue

Add it as an optional arg to argv, when found, Swiss can skip traditional init and work in a bare-bones mode more akin to an in-game menu of sorts. This could be a separately built version of Swiss or just a separate code path invoked via IGR, it'd have a menu to:

This would all be much easier on something like the Wii though where we'd just use spare MEM2 to move/mirror the state in.

Add screenshots

No response