static void s98timer(NEVENTITEM item) { if (s98log.fh != FILEH_INVALID) { sets98event(NEVENT_RELATIVE); } (void)item; }
BRESULT S98_open(const OEMCHAR *filename) { UINT i; S98HDR hdr; // ファイルのオープン s98log.fh = file_create(filename); if (s98log.fh == FILEH_INVALID) { return(FAILURE); } // 初期化 s98log.clock = pccore.realclock / 1000; s98log.p = 0; // ヘッダの保存 ZeroMemory(&hdr, sizeof(hdr)); hdr.magic[0] = 'S'; hdr.magic[1] = '9'; hdr.magic[2] = '8'; hdr.formatversion = '1'; STOREINTELDWORD(hdr.timerinfo, 1); STOREINTELDWORD(hdr.offset, offsetof(S98HDR, title)); STOREINTELDWORD(hdr.dumpdata, sizeof(S98HDR)); for (i=0; i<sizeof(hdr); i++) { S98_putc(*(((UINT8 *)&hdr) + i)); } #if 1 // FM for (i = 0x30; i < 0xb8; i++) { if ((i & 3) != 3) { S98_putc(NORMAL2608); S98_putc((REG8)i); S98_putc(g_opna[0].s.reg[i]); S98_putc(EXTEND2608); S98_putc((REG8)i); S98_putc(g_opna[0].s.reg[i+0x100]); } } // PSG for (i = 0x00; i < 0x0e; i++) { S98_putc(NORMAL2608); S98_putc((REG8)i); S98_putc(g_opna[0].s.reg[i]); } #endif // 一応パディング s98log.intcount = 10; sets98event(NEVENT_ABSOLUTE); return(SUCCESS); }