mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Decompile padmgr.c (#1246)
* Decompile padmgr.c * Format * Enum names * Update namefixer * Suggested changes Co-authored-by: Anghelo Carvajal <angheloalf95@gmail.com> * Suggested changes, improve motor.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Further suggested changes * Format * Fix `controller.h` comment Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> --------- Co-authored-by: Anghelo Carvajal <angheloalf95@gmail.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
co-authored by
Anghelo Carvajal
Derek Hensley
engineer124
parent
22af2bb8fe
commit
6d20839ab0
+2
-30
@@ -328,7 +328,7 @@ OSTime osGetTime(void);
|
||||
void guRotateF(float m[4][4], f32 a, f32 x, f32 y, f32 z);
|
||||
void guRotate(Mtx* m, f32 a, f32 x, f32 y, f32 z);
|
||||
void __osSetGlobalIntMask(u32 mask);
|
||||
// void osVoiceInit(void);
|
||||
s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* handle, s32 channel);
|
||||
s32 __osContChannelReset(OSMesgQueue* mq, s32 channel);
|
||||
// void __osVoiceSetADConverter(void);
|
||||
s32 osAiSetFrequency(u32 frequency);
|
||||
@@ -2098,34 +2098,6 @@ ListAlloc* ListAlloc_Init(ListAlloc* this);
|
||||
// void ListAlloc_Free(void);
|
||||
void ListAlloc_FreeAll(ListAlloc* this);
|
||||
void Main(void* arg);
|
||||
u32 Padmgr_GetControllerBitmask(void);
|
||||
void func_80174F24(void (*arg0)(void*), void* arg1);
|
||||
void func_80174F44(void (*arg0)(void*), void* arg1);
|
||||
void func_80174F7C(void (*arg0)(s32), void* arg1);
|
||||
void func_80174F9C(void (*arg0)(s32), void* arg1);
|
||||
// OSMesgQueue* Padmgr_GetEventCallback(void);
|
||||
// void func_80175008(void);
|
||||
void Padmgr_SetEventCallback(OSMesg pvParm1);
|
||||
// void func_8017506C(void);
|
||||
// void Padmgr_Lock(void);
|
||||
// void Padmgr_Unlock(void);
|
||||
// void func_801750FC(void);
|
||||
// void func_80175364(void);
|
||||
void func_80175434(void);
|
||||
void func_8017544C(s32 port, s32 rumbleOn);
|
||||
void PadMgr_RumbleSet(u8 rumbleEnabled[MAXCONTROLLERS]);
|
||||
s32 PadMgr_ControllerHasRumblePak(s32 port);
|
||||
void Padmgr_CalcStickEdges(Input* input);
|
||||
// void Padmgr_ParseState(void);
|
||||
// void func_801759BC(void);
|
||||
// void func_80175AE0(void);
|
||||
// void Padmgr_Update(void);
|
||||
// void Padmgr_Stop(void);
|
||||
void func_80175E68(Input* input, s32 param_2);
|
||||
void Padmgr_GetInput(Input* input, s32 param_2);
|
||||
void Padmgr_GetInput2(Input* input, s32 param_2);
|
||||
void Padmgr_ThreadEntry(PadMgr* padmgr);
|
||||
void PadMgr_Init(OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack);
|
||||
void Sched_SwapFramebuffer(CfbInfo* cfbInfo);
|
||||
void Sched_RetraceUpdateFramebuffer(SchedContext* sched, CfbInfo* cfbInfo);
|
||||
void Sched_HandleReset(SchedContext* sched);
|
||||
@@ -2614,7 +2586,7 @@ void Audio_ResetForAudioHeapStep3(void);
|
||||
void Audio_ResetForAudioHeapStep2(void);
|
||||
void Audio_ResetForAudioHeapStep1(s32 specId);
|
||||
|
||||
// void func_801A4EB0(void);
|
||||
void func_801A4EB0(void);
|
||||
// void func_801A4EB8(void);
|
||||
void func_801A4FD8(void);
|
||||
void func_801A5080(u16 arg0);
|
||||
|
||||
+69
-11
@@ -35,10 +35,6 @@
|
||||
#define CONT_CMD_WRITE_EEPROM_RX 1
|
||||
#define CONT_CMD_RESET_RX 3
|
||||
|
||||
#define CONT_CMD_NOP 0xFF
|
||||
#define CONT_CMD_END 0xFE // Indicates end of a command
|
||||
#define CONT_CMD_EXE 1 // Set pif ram status byte to this to do a command
|
||||
|
||||
#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */
|
||||
#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */
|
||||
#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */
|
||||
@@ -48,6 +44,52 @@
|
||||
#define CONT_ERR_VOICE_WORD 14
|
||||
#define CONT_ERR_VOICE_NO_RESPONSE 15
|
||||
|
||||
// Joybus commands
|
||||
#define CONT_CMD_REQUEST_STATUS 0
|
||||
#define CONT_CMD_READ_BUTTON 1
|
||||
#define CONT_CMD_READ_PAK 2
|
||||
#define CONT_CMD_WRITE_PAK 3
|
||||
#define CONT_CMD_READ_EEPROM 4
|
||||
#define CONT_CMD_WRITE_EEPROM 5
|
||||
#define CONT_CMD_READ36_VOICE 9
|
||||
#define CONT_CMD_WRITE20_VOICE 10
|
||||
#define CONT_CMD_READ2_VOICE 11
|
||||
#define CONT_CMD_WRITE4_VOICE 12
|
||||
#define CONT_CMD_SWRITE_VOICE 13
|
||||
#define CONT_CMD_CHANNEL_RESET 0xFD
|
||||
#define CONT_CMD_RESET 0xFF
|
||||
|
||||
// Bytes transmitted for each joybus command
|
||||
#define CONT_CMD_REQUEST_STATUS_TX 1
|
||||
#define CONT_CMD_READ_BUTTON_TX 1
|
||||
#define CONT_CMD_READ_PAK_TX 3
|
||||
#define CONT_CMD_WRITE_PAK_TX 35
|
||||
#define CONT_CMD_READ_EEPROM_TX 2
|
||||
#define CONT_CMD_WRITE_EEPROM_TX 10
|
||||
#define CONT_CMD_READ36_VOICE_TX 3
|
||||
#define CONT_CMD_WRITE20_VOICE_TX 23
|
||||
#define CONT_CMD_READ2_VOICE_TX 3
|
||||
#define CONT_CMD_WRITE4_VOICE_TX 7
|
||||
#define CONT_CMD_SWRITE_VOICE_TX 3
|
||||
#define CONT_CMD_RESET_TX 1
|
||||
|
||||
// Bytes received for each joybus command
|
||||
#define CONT_CMD_REQUEST_STATUS_RX 3
|
||||
#define CONT_CMD_READ_BUTTON_RX 4
|
||||
#define CONT_CMD_READ_PAK_RX 33
|
||||
#define CONT_CMD_WRITE_PAK_RX 1
|
||||
#define CONT_CMD_READ_EEPROM_RX 8
|
||||
#define CONT_CMD_WRITE_EEPROM_RX 1
|
||||
#define CONT_CMD_READ36_VOICE_RX 37
|
||||
#define CONT_CMD_WRITE20_VOICE_RX 1
|
||||
#define CONT_CMD_READ2_VOICE_RX 3
|
||||
#define CONT_CMD_WRITE4_VOICE_RX 1
|
||||
#define CONT_CMD_SWRITE_VOICE_RX 1
|
||||
#define CONT_CMD_RESET_RX 3
|
||||
|
||||
#define CONT_CMD_NOP 0xFF
|
||||
#define CONT_CMD_END 0xFE // Indicates end of a command
|
||||
#define CONT_CMD_EXE 1 // Set pif ram status byte to this to do a command
|
||||
|
||||
#define DIR_STATUS_EMPTY 0
|
||||
#define DIR_STATUS_UNKNOWN 1
|
||||
@@ -81,6 +123,26 @@
|
||||
#define CONT_ADDR_CRC_ER 0x04
|
||||
#define CONT_EEPROM_BUSY 0x80
|
||||
|
||||
// Accessory detection
|
||||
#define CONT_ADDR_DETECT 0x8000
|
||||
// Rumble
|
||||
#define CONT_ADDR_RUMBLE 0xC000
|
||||
// Controller Pak
|
||||
// Transfer Pak
|
||||
#define CONT_ADDR_GB_POWER 0x8000 // Same as the detection address, but semantically different
|
||||
#define CONT_ADDR_GB_BANK 0xA000
|
||||
#define CONT_ADDR_GB_STATUS 0xB000
|
||||
|
||||
// Addresses sent to controller accessories are in blocks, not bytes
|
||||
#define CONT_BLOCKS(x) ((x) / BLOCKSIZE)
|
||||
|
||||
// Block addresses of the above
|
||||
#define CONT_BLOCK_DETECT CONT_BLOCKS(CONT_ADDR_DETECT)
|
||||
#define CONT_BLOCK_RUMBLE CONT_BLOCKS(CONT_ADDR_RUMBLE)
|
||||
#define CONT_BLOCK_GB_POWER CONT_BLOCKS(CONT_ADDR_GB_POWER)
|
||||
#define CONT_BLOCK_GB_BANK CONT_BLOCKS(CONT_ADDR_GB_BANK)
|
||||
#define CONT_BLOCK_GB_STATUS CONT_BLOCKS(CONT_ADDR_GB_STATUS)
|
||||
|
||||
/* Buttons */
|
||||
#define BTN_CRIGHT 0x0001
|
||||
#define BTN_CLEFT 0x0002
|
||||
@@ -88,6 +150,7 @@
|
||||
#define BTN_CUP 0x0008
|
||||
#define BTN_R 0x0010
|
||||
#define BTN_L 0x0020
|
||||
#define BTN_RESET 0x0080
|
||||
#define BTN_DRIGHT 0x0100
|
||||
#define BTN_DLEFT 0x0200
|
||||
#define BTN_DDOWN 0x0400
|
||||
@@ -146,6 +209,8 @@ typedef struct {
|
||||
/* 0x26 */ u8 datacrc;
|
||||
} __OSContRamReadFormat;
|
||||
|
||||
#define READFORMAT(ptr) ((__OSContRamReadFormat*)(ptr))
|
||||
|
||||
extern OSPifRam __osContPifRam;
|
||||
// extern UNK_TYPE1 D_8009CF0C;
|
||||
extern u8 __osContLastPoll;
|
||||
@@ -153,11 +218,4 @@ extern u8 __osMaxControllers;
|
||||
// extern OSMesgQueue D_8009CF38;
|
||||
// extern OSMesg D_8009CF50;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSContPad cur;
|
||||
/* 0x06 */ OSContPad prev;
|
||||
/* 0x0C */ OSContPad press; // X/Y store delta from last frame
|
||||
/* 0x12 */ OSContPad rel; // X/Y store adjusted
|
||||
} Input; // size = 0x18
|
||||
|
||||
#endif
|
||||
|
||||
+7
-2
@@ -1,9 +1,14 @@
|
||||
#ifndef IRQMGR_H
|
||||
#define IRQMGR_H
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
#include "PR/sched.h"
|
||||
#include "ultra64/message.h"
|
||||
#include "os.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_DONE_MSG 2
|
||||
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
|
||||
#define OS_SC_PRE_NMI_MSG 4
|
||||
|
||||
typedef struct IrqMgrClient {
|
||||
/* 0x0 */ struct IrqMgrClient* next;
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
#ifndef PADMGR_H
|
||||
#define PADMGR_H
|
||||
|
||||
#include "libc/stdbool.h"
|
||||
#include "io/controller.h"
|
||||
#include "irqmgr.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSContPad cur;
|
||||
/* 0x06 */ OSContPad prev;
|
||||
/* 0x0C */ OSContPad press; // X/Y store delta from last frame
|
||||
/* 0x12 */ OSContPad rel; // X/Y store adjusted
|
||||
} Input; // size = 0x18
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PADMGR_CONT_NONE,
|
||||
/* 1 */ PADMGR_CONT_NORMAL,
|
||||
/* 3 */ PADMGR_CONT_MOUSE = 3,
|
||||
/* 4 */ PADMGR_CONT_VOICE_PLUGGED, // VRU plugged but not initialized
|
||||
/* 5 */ PADMGR_CONT_VOICE,
|
||||
/* -1 */ PADMGR_CONT_UNK = 0xFF
|
||||
} ControllerDeviceType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ CONT_PAK_NONE,
|
||||
/* 1 */ CONT_PAK_RUMBLE,
|
||||
/* 2 */ CONT_PAK_OTHER
|
||||
} ControllerPakType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 validCtrlrsMask;
|
||||
/* 0x004 */ void (*rumbleRetraceCallback)(void*);
|
||||
/* 0x008 */ void* rumbleRetraceArg;
|
||||
/* 0x00C */ void (*inputRetraceCallback)(void*);
|
||||
/* 0x010 */ void* inputRetraceArg;
|
||||
/* 0x014 */ OSContStatus padStatus[MAXCONTROLLERS];
|
||||
/* 0x024 */ OSMesg serialMsg;
|
||||
/* 0x028 */ OSMesg lockMsg;
|
||||
/* 0x02C */ OSMesg interruptMsgBuf[8];
|
||||
/* 0x04C */ OSMesgQueue serialLockQueue;
|
||||
/* 0x064 */ OSMesgQueue lockQueue;
|
||||
/* 0x07C */ OSMesgQueue interruptQueue;
|
||||
/* 0x094 */ IrqMgrClient irqClient;
|
||||
/* 0x09C */ IrqMgr* irqMgr;
|
||||
/* 0x0A0 */ OSThread thread;
|
||||
/* 0x250 */ Input inputs[MAXCONTROLLERS];
|
||||
/* 0x2B0 */ OSContPad pads[MAXCONTROLLERS];
|
||||
/* 0x2C8 */ u8 nControllers;
|
||||
/* 0x2C9 */ u8 ctrlrType[MAXCONTROLLERS]; // type of controller currently connected to each port
|
||||
/* 0x2CD */ u8 pakType[MAXCONTROLLERS]; // type of controller pak for each port (if applicable)
|
||||
/* 0x2D1 */ u8 rumbleEnable[MAXCONTROLLERS]; // whether rumble is active for each port
|
||||
/* 0x2D5 */ u8 rumbleTimer[MAXCONTROLLERS];
|
||||
/* 0x2DC */ OSPfs rumblePfs[MAXCONTROLLERS];
|
||||
/* 0x47C */ vu8 rumbleOffTimer; // amount of VI retraces to not rumble for, takes priority over rumbleOnTimer
|
||||
/* 0x47D */ vu8 rumbleOnTimer; // amount of VI retraces to rumble for
|
||||
/* 0x47E */ u8 isResetting;
|
||||
} PadMgr; // size = 0x480
|
||||
|
||||
extern PadMgr gPadMgr;
|
||||
|
||||
// Initialization
|
||||
|
||||
s32 PadSetup_Init(OSMesgQueue* mq, u8* outMask, OSContStatus* status);
|
||||
void PadMgr_Init(OSMesgQueue* siEvtQ, IrqMgr* irqMgr, OSId threadId, OSPri pri, void* stack);
|
||||
|
||||
// Fetching inputs
|
||||
|
||||
void PadMgr_GetInputNoLock(Input* inputs, s32 gameRequest);
|
||||
void PadMgr_GetInput(Input* inputs, s32 gameRequest);
|
||||
void PadMgr_GetInput2(Input* inputs, s32 gameRequest);
|
||||
|
||||
// Callbacks
|
||||
|
||||
void PadMgr_SetRumbleRetraceCallback(void (*callback)(void*), void* arg);
|
||||
void PadMgr_UnsetRumbleRetraceCallback(void (*callback)(void*), void* arg);
|
||||
|
||||
void PadMgr_SetInputRetraceCallback(void (*callback)(void*), void* arg);
|
||||
void PadMgr_UnsetInputRetraceCallback(void (*callback)(void*), void* arg);
|
||||
|
||||
// Valid controllers
|
||||
|
||||
u8 PadMgr_GetValidControllersMask(void);
|
||||
|
||||
// Voice queue
|
||||
|
||||
OSMesgQueue* PadMgr_VoiceAcquireSerialEventQueue(void);
|
||||
void PadMgr_VoiceReleaseSerialEventQueue(OSMesgQueue* serialEventQueue);
|
||||
|
||||
// Rumble
|
||||
|
||||
void PadMgr_RumbleStop(void);
|
||||
void PadMgr_RumblePause(void);
|
||||
void PadMgr_RumbleSetSingle(s32 port, s32 enable);
|
||||
void PadMgr_RumbleSet(u8 enable[MAXCONTROLLERS]);
|
||||
s32 PadMgr_ControllerHasRumblePak(s32 port);
|
||||
|
||||
#endif
|
||||
@@ -5,13 +5,14 @@
|
||||
#include "PR/pfs.h"
|
||||
#include "ultra64/message.h"
|
||||
|
||||
#define MOTOR_START 1
|
||||
#define MOTOR_STOP 0
|
||||
#define MOTOR_START 1
|
||||
#define MOTOR_STOP 0
|
||||
|
||||
#define osMotorStart(x) __osMotorAccess((x), MOTOR_START)
|
||||
#define osMotorStop(x) __osMotorAccess((x), MOTOR_STOP)
|
||||
#define osMotorStart(x) __osMotorAccess((x), MOTOR_START)
|
||||
#define osMotorStop(x) __osMotorAccess((x), MOTOR_STOP)
|
||||
|
||||
s32 __osMotorAccess(OSPfs* pfs, u32 vibrate);
|
||||
s32 osMotorInit(OSMesgQueue* ctrlrqueue, OSPfs* pfs, s32 channel);
|
||||
s32 __osMotorAccess(OSPfs* pfs, s32 flag);
|
||||
|
||||
s32 osMotorInit(OSMesgQueue* mq, OSPfs* pfs, s32 channel);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -11,4 +11,12 @@
|
||||
#define DEVICE_TYPE_SRAM 3 /* SRAM */
|
||||
#define DEVICE_TYPE_INIT 7 /* initial value */
|
||||
|
||||
|
||||
#define CHNL_ERR_NORESP 0x80 /* Bit 7 (Rx): No response error */
|
||||
#define CHNL_ERR_OVERRUN 0x40 /* Bit 6 (Rx): Overrun error */
|
||||
#define CHNL_ERR_FRAME 0x80 /* Bit 7 (Tx): Frame error */
|
||||
#define CHNL_ERR_COLLISION 0x40 /* Bit 6 (Tx): Collision error */
|
||||
|
||||
#define CHNL_ERR_MASK 0xC0 /* Bit 6-7: channel errors */
|
||||
|
||||
#endif
|
||||
|
||||
+1
-5
@@ -795,9 +795,6 @@ extern u32 cfbIdx[3];
|
||||
extern s32 gScreenWidth;
|
||||
extern s32 gScreenHeight;
|
||||
extern u32 startHeapSize;
|
||||
extern PadMgr* padmgrContext;
|
||||
// extern UNK_TYPE4 controllerInputsCaptured;
|
||||
// extern UNK_TYPE4 D_801D1538;
|
||||
extern UNK_PTR D_801D1540;
|
||||
// extern f32 sFactorialTbl[13];
|
||||
extern Vec3f gZeroVec3f;
|
||||
@@ -2410,7 +2407,6 @@ extern u32 gSegments[NUM_SEGMENTS];
|
||||
extern SchedContext gSchedContext;
|
||||
|
||||
extern OSThread gGraphThread;
|
||||
extern PadMgr gPadMgr;
|
||||
|
||||
extern FaultClient sSchedFaultClient;
|
||||
extern OSTime sRSPGFXStartTime;
|
||||
@@ -2616,7 +2612,7 @@ extern s32 D_801FD120;
|
||||
// extern UNK_TYPE1 D_801FD598;
|
||||
// extern UNK_TYPE1 D_801FD5A0;
|
||||
// extern UNK_TYPE1 D_801FD5A4;
|
||||
// extern UNK_TYPE1 D_801FD5B8;
|
||||
extern OSVoiceHandle gVoiceHandle;
|
||||
// extern UNK_TYPE1 D_801FD5C4;
|
||||
// extern UNK_TYPE1 D_801FD5C8;
|
||||
// extern UNK_TYPE1 D_801FD5E8;
|
||||
|
||||
+3
-30
@@ -14,6 +14,7 @@
|
||||
#include "osint.h"
|
||||
#include "os.h"
|
||||
#include "irqmgr.h"
|
||||
#include "padmgr.h"
|
||||
#include "scheduler.h"
|
||||
#include "xstdio.h"
|
||||
|
||||
@@ -481,7 +482,7 @@ typedef struct {
|
||||
/* 0x7D8 */ FaultClient* clients;
|
||||
/* 0x7DC */ FaultAddrConvClient* addrConvClients;
|
||||
/* 0x7E0 */ UNK_TYPE1 pad7E0[0x4];
|
||||
/* 0x7E4 */ Input padInput[4];
|
||||
/* 0x7E4 */ Input padInput[MAXCONTROLLERS];
|
||||
/* 0x844 */ void* fb;
|
||||
} FaultThreadStruct; // size = 0x848
|
||||
|
||||
@@ -522,7 +523,7 @@ typedef struct GameState {
|
||||
/* 0x08 */ GameStateFunc destroy;
|
||||
/* 0x0C */ GameStateFunc init; // Usually the current game state's init, though after stopping, the graph thread will look here to determine the next game state to load.
|
||||
/* 0x10 */ size_t size;
|
||||
/* 0x14 */ Input input[4];
|
||||
/* 0x14 */ Input input[MAXCONTROLLERS];
|
||||
/* 0x74 */ TwoHeadArena heap;
|
||||
/* 0x84 */ GameAlloc alloc;
|
||||
/* 0x98 */ UNK_TYPE1 pad98[0x3];
|
||||
@@ -541,34 +542,6 @@ typedef void (*ColChkApplyFunc)(struct PlayState*, CollisionCheckContext*, Colli
|
||||
typedef void (*ColChkVsFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Collider*);
|
||||
typedef s32 (*ColChkLineFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 controllers; // bit 0 is set if controller 1 is plugged in, etc.
|
||||
/* 0x001 */ UNK_TYPE1 pad1[0x13];
|
||||
/* 0x014 */ OSContStatus statuses[4];
|
||||
/* 0x024 */ UNK_TYPE4 unk24;
|
||||
/* 0x028 */ OSMesg lockMesg[1];
|
||||
/* 0x02C */ OSMesg interrupts[8];
|
||||
/* 0x04C */ OSMesgQueue sSiIntMsgQ;
|
||||
/* 0x064 */ OSMesgQueue lock;
|
||||
/* 0x07C */ OSMesgQueue irqmgrCallbackQueue;
|
||||
/* 0x094 */ IrqMgrClient irqmgrCallbackQueueNode;
|
||||
/* 0x09C */ IrqMgr* irqmgr;
|
||||
/* 0x0A0 */ OSThread thread;
|
||||
/* 0x250 */ Input input[4];
|
||||
/* 0x2B0 */ OSContPad controllerState1[4];
|
||||
/* 0x2C8 */ u8 maxNumControllers;
|
||||
/* 0x2C9 */ UNK_TYPE1 pad2C9[0x1B3];
|
||||
/* 0x47C */ u8 unk47C;
|
||||
/* 0x47D */ u8 unk47D;
|
||||
/* 0x47E */ u8 hasStopped;
|
||||
/* 0x47F */ UNK_TYPE1 pad47F[0x1];
|
||||
} PadMgr; // size = 0x480
|
||||
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_DONE_MSG 2
|
||||
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
|
||||
#define OS_SC_PRE_NMI_MSG 4
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ IrqMgr* irqMgr;
|
||||
/* 0x004 */ SchedContext* sched;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#ifndef Z64FRAMEADVANCE_H
|
||||
#define Z64FRAMEADVANCE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "io/controller.h"
|
||||
#include "padmgr.h"
|
||||
|
||||
typedef struct FrameAdvanceContext {
|
||||
/* 0x0 */ s32 enabled;
|
||||
|
||||
Reference in New Issue
Block a user