mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-28 10:20:52 -04:00
124 lines
3.7 KiB
C++
124 lines
3.7 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: JASCmdStack.cpp
|
|
//
|
|
|
|
#include "JSystem/JAudio/JASCmdStack.h"
|
|
#include "JSystem/JAudio/JASCallback.h"
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
#include "dolphin/types.h"
|
|
|
|
/* 8027D6F4-8027D70C .text __ct__Q38JASystem6Kernel8TPortCmdFv */
|
|
JASystem::Kernel::TPortCmd::TPortCmd() {
|
|
field_0x0 = NULL;
|
|
field_0x4 = NULL;
|
|
field_0x8 = NULL;
|
|
field_0xc = NULL;
|
|
}
|
|
|
|
JASystem::Kernel::TPortHead cmd_once;
|
|
|
|
/* 8027D70C-8027D730 .text addPortCmdOnce__Q38JASystem6Kernel8TPortCmdFv */
|
|
bool JASystem::Kernel::TPortCmd::addPortCmdOnce() {
|
|
return addPortCmd(&cmd_once);
|
|
}
|
|
|
|
/* 8027D730-8027D7E8 .text setPortCmd__Q38JASystem6Kernel8TPortCmdFPFPQ38JASystem6Kernel9TPortArgs_vPQ38JASystem6Kernel9TPortArgs */
|
|
bool JASystem::Kernel::TPortCmd::setPortCmd(void (*func)(JASystem::Kernel::TPortArgs*), JASystem::Kernel::TPortArgs* pargs) {
|
|
JUT_ASSERT(83, func != 0);
|
|
JUT_ASSERT(84, pargs != 0);
|
|
field_0x8 = func;
|
|
field_0xc = pargs;
|
|
field_0x0 = NULL;
|
|
return 1;
|
|
}
|
|
|
|
/* 8027D7E8-8027D8A4 .text addPortCmd__Q38JASystem6Kernel8TPortCmdFPQ38JASystem6Kernel9TPortHead */
|
|
bool JASystem::Kernel::TPortCmd::addPortCmd(JASystem::Kernel::TPortHead* phead) {
|
|
/* Nonmatching */
|
|
JUT_ASSERT(105, phead != 0);
|
|
BOOL enable = OSDisableInterrupts();
|
|
if (field_0x0) {
|
|
OSRestoreInterrupts(enable);
|
|
return false;
|
|
}
|
|
if (phead->field_0x4) {
|
|
phead->field_0x4->field_0x4 = this;
|
|
} else {
|
|
phead->field_0x0 = this;
|
|
}
|
|
phead->field_0x4 = this;
|
|
field_0x4 = NULL;
|
|
field_0x0 = phead;
|
|
OSRestoreInterrupts(enable);
|
|
return true;
|
|
}
|
|
|
|
/* 8027D8A4-8027D924 .text portCmdProcOnce__Q28JASystem6KernelFPQ38JASystem6Kernel9TPortHead */
|
|
void JASystem::Kernel::portCmdProcOnce(JASystem::Kernel::TPortHead* phead) {
|
|
JUT_ASSERT(223, phead != 0);
|
|
while (true) {
|
|
TPortCmd* cmd = getPortCmd(phead);
|
|
if (!cmd) {
|
|
break;
|
|
}
|
|
cmd->field_0x8(cmd->field_0xc);
|
|
}
|
|
}
|
|
|
|
/* 8027D924-8027D9A4 .text portCmdProcStay__Q28JASystem6KernelFPQ38JASystem6Kernel9TPortHead */
|
|
void JASystem::Kernel::portCmdProcStay(JASystem::Kernel::TPortHead* phead) {
|
|
JUT_ASSERT(245, phead != 0);
|
|
TPortCmd* cmd = phead->field_0x0;
|
|
while (true) {
|
|
if (!cmd) {
|
|
break;
|
|
}
|
|
cmd->field_0x8(cmd->field_0xc);
|
|
cmd = cmd->field_0x4;
|
|
}
|
|
}
|
|
|
|
/* 8027D9A4-8027DA0C .text portHeadInit__Q28JASystem6KernelFPQ38JASystem6Kernel9TPortHead */
|
|
void JASystem::Kernel::portHeadInit(JASystem::Kernel::TPortHead* phead) {
|
|
JUT_ASSERT(267, phead != 0);
|
|
phead->field_0x0 = NULL;
|
|
phead->field_0x4 = NULL;
|
|
}
|
|
|
|
JASystem::Kernel::TPortHead cmd_stay;
|
|
|
|
/* 8027DA0C-8027DA48 .text portCmdInit__Q28JASystem6KernelFv */
|
|
void JASystem::Kernel::portCmdInit() {
|
|
portHeadInit(&cmd_once);
|
|
portHeadInit(&cmd_stay);
|
|
registerDspCallback(portCmdMain, NULL);
|
|
}
|
|
|
|
/* 8027DA48-8027DB08 .text getPortCmd__Q28JASystem6KernelFPQ38JASystem6Kernel9TPortHead */
|
|
JASystem::Kernel::TPortCmd* JASystem::Kernel::getPortCmd(JASystem::Kernel::TPortHead* phead) {
|
|
TPortCmd* r31;
|
|
TPortCmd* r30 = NULL;
|
|
JUT_ASSERT(311, phead != 0);
|
|
r31 = phead->field_0x0;
|
|
if (r31) {
|
|
r30 = r31;
|
|
phead->field_0x0 = r31->field_0x4;
|
|
if (!phead->field_0x0) {
|
|
phead->field_0x4 = NULL;
|
|
}
|
|
if (phead != r31->field_0x0) {
|
|
OSReport("[JASKernel::getPortCmd] 不正な登録データブロックです。\n");
|
|
}
|
|
r31->field_0x0 = NULL;
|
|
}
|
|
return r30;
|
|
}
|
|
|
|
/* 8027DB08-8027DB38 .text portCmdMain__Q28JASystem6KernelFPv */
|
|
s32 JASystem::Kernel::portCmdMain(void*) {
|
|
portCmdProcOnce(&cmd_once);
|
|
portCmdProcStay(&cmd_stay);
|
|
return 0;
|
|
}
|