void LoadStateV5(SPUFreeze_t * pF) { int i;SPUOSSFreeze_t * pFO; pFO=(SPUOSSFreeze_t *)(pF+1); spuIrq = pFO->spuIrq; if(pFO->pSpuIrq) pSpuIrq = pFO->pSpuIrq+spuMemC; else pSpuIrq=NULL; if(pFO->spuAddr) { spuAddr = pFO->spuAddr; if (spuAddr == 0xbaadf00d) spuAddr = 0; } dwNewChannel=0; dwChannelOn=0; for(i=0;i<MAXCHAN;i++) { load_channel(&s_chan[i],&pFO->s_chan[i],i); s_chan[i].pStart+=(unsigned long)spuMemC; s_chan[i].pCurr+=(unsigned long)spuMemC; s_chan[i].pLoop+=(unsigned long)spuMemC; } }
static void load_inkname(stp_mxml_node_t *node, stp_mxml_node_t *root, inkname_t *inl, inklist_t *ikl) { const char *name; stp_mxml_node_t *child = node->child; int channel_count = 0; int aux_channel_count = 0; while (child) { if (child->type == STP_MXML_ELEMENT) { if (!strcmp(child->value.element.name, "Channels")) { stp_mxml_node_t *cchild = child->child; while (cchild) { if (cchild->type == STP_MXML_ELEMENT && !strcmp(cchild->value.element.name, "channel")) { name = stp_mxmlElementGetAttr(cchild, "index"); if (name) { unsigned idx = stp_xmlstrtoul(name); if (idx + 1 > channel_count) channel_count = idx + 1; } } cchild = cchild->next; } } else if (!strcmp(child->value.element.name, "AuxChannels")) { stp_mxml_node_t *cchild = child->child; while (cchild) { if (cchild->type == STP_MXML_ELEMENT && !strcmp(cchild->value.element.name, "channel")) { name = stp_mxmlElementGetAttr(cchild, "index"); if (name) { unsigned idx = stp_xmlstrtoul(name); if (idx + 1 > aux_channel_count) aux_channel_count = idx + 1; } } cchild = cchild->next; } } } child = child->next; } inl->channel_count = channel_count; if (channel_count > 0) inl->channels = stp_zalloc(sizeof(ink_channel_t) * channel_count); inl->aux_channel_count = aux_channel_count; if (aux_channel_count > 0) inl->aux_channels = stp_zalloc(sizeof(ink_channel_t) * aux_channel_count); name = stp_mxmlElementGetAttr(node, "name"); if (name) inl->name = stp_strdup(name); name = stp_mxmlElementGetAttr(node, "text"); if (name) inl->text = stp_strdup(name); name = stp_mxmlElementGetAttr(node, "InkID"); if (name) { if (!strcmp(name, "CMYK")) inl->inkset = INKSET_CMYK; else if (!strcmp(name, "CcMmYK")) inl->inkset = INKSET_CcMmYK; else if (!strcmp(name, "CcMmYyK")) inl->inkset = INKSET_CcMmYyK; else if (!strcmp(name, "CcMmYKk")) inl->inkset = INKSET_CcMmYKk; else if (!strcmp(name, "Quadtone")) inl->inkset = INKSET_QUADTONE; else if (!strcmp(name, "Hextone")) inl->inkset = INKSET_HEXTONE; else if (!strcmp(name, "OTHER")) inl->inkset = INKSET_OTHER; else if (!strcmp(name, "Extended")) inl->inkset = INKSET_EXTENDED; } channel_count = 0; aux_channel_count = 0; child = node->child; while (child) { if (child->type == STP_MXML_ELEMENT) { if (!strcmp(child->value.element.name, "Channels")) { stp_mxml_node_t *cchild = child->child; while (cchild) { if (cchild->type == STP_MXML_ELEMENT && !strcmp(cchild->value.element.name, "channel")) { name = stp_mxmlElementGetAttr(cchild, "index"); if (name) { unsigned idx = stp_xmlstrtoul(name); load_channel(cchild, root, &(inl->channels[idx])); } } cchild = cchild->next; } } else if (!strcmp(child->value.element.name, "AuxChannels")) { stp_mxml_node_t *cchild = child->child; while (cchild) { if (cchild->type == STP_MXML_ELEMENT && !strcmp(cchild->value.element.name, "channel")) { name = stp_mxmlElementGetAttr(cchild, "index"); if (name) { unsigned idx = stp_xmlstrtoul(name); load_channel(cchild, root, &(inl->aux_channels[idx])); } } cchild = cchild->next; } } else if (!strcmp(child->value.element.name, "initSequence") && child->child && child->child->type == STP_MXML_TEXT) ikl->init_sequence = stp_xmlstrtoraw(child->child->value.text.string); else if (!strcmp(child->value.element.name, "deinitSequence") && child->child && child->child->type == STP_MXML_TEXT) ikl->deinit_sequence = stp_xmlstrtoraw(child->child->value.text.string); } child = child->next; } }