| version 1.6, 2004/08/13 06:49:31 | version 1.7, 2004/08/20 08:41:41 | 
| Line 18  static const UINT8 dattbl[] = { 3, 0, 0, | Line 18  static const UINT8 dattbl[] = { 3, 0, 0, | 
 |  |  | 
 | void neitem_scpu(UINT id) { | void neitem_scpu(UINT id) { | 
 |  |  | 
 |  | BRESULT intr; | 
 |  |  | 
 | nevent_repeat(id); | nevent_repeat(id); | 
 |  | intr = FALSE; | 
 |  | // こうすると同時押しが判定できないのでキーバッファを持つべし | 
 | if (keystat.req_int) { | if (keystat.req_int) { | 
 | keystat.req_int = 0; | keystat.req_int = 0; | 
 |  | intr = TRUE; | 
 |  | } | 
 |  | else if (subcpu.keydata) { | 
 |  | subcpu.keycount++; | 
 |  | if (subcpu.keycount >= subcpu.keycountrep) { | 
 |  | subcpu.keycount = 0; | 
 |  | intr = TRUE; | 
 |  | } | 
 |  | } | 
 |  | if (intr) { | 
 | ievent_set(IEVENT_SUBCPU); | ievent_set(IEVENT_SUBCPU); | 
 | } | } | 
 | } | } | 
| Line 28  void neitem_scpu(UINT id) { | Line 42  void neitem_scpu(UINT id) { | 
 | BRESULT ieitem_scpu(UINT id) { | BRESULT ieitem_scpu(UINT id) { | 
 |  |  | 
 | UINT    key; | UINT    key; | 
 |  | UINT8   keydata; | 
 |  |  | 
 | if ((subcpu.cmdcnt) || (subcpu.datacnt)) { | if ((subcpu.cmdcnt) || (subcpu.datacnt)) { | 
 | keystat.req_int = 1;                    // 再送しる | keystat.req_int = 1;                    // 再送しる | 
| Line 36  BRESULT ieitem_scpu(UINT id) { | Line 51  BRESULT ieitem_scpu(UINT id) { | 
 | if (!subcpu.Ex[4][0]) {                         // 割り込み不要だったら捨てる | if (!subcpu.Ex[4][0]) {                         // 割り込み不要だったら捨てる | 
 | return(FALSE); | return(FALSE); | 
 | } | } | 
| if (keystat.shift & 0x40) {                                     // キーが押された場合 | key = keystat_getflag(); | 
| key = keystat_getflag(); | keydata = (UINT8)(key >> 8); | 
| subcpu.Ex[0x06][0] = (UINT8)(key >> 0); | if (subcpu.keydata != keydata) { | 
| subcpu.Ex[0x06][1] = (UINT8)(key >> 8); | subcpu.keydata = keydata; | 
| if (!subcpu.Ex[0x06][1]) {              // 無効なキーだったら捨てる | subcpu.keycount = 0; | 
| return(FALSE); | subcpu.keycountrep = 480; | 
| } |  | 
| subcpu.INT_SW = 1; |  | 
 | } | } | 
 | else { | else { | 
| if (!subcpu.INT_SW) {                   // 何も押されてなかったら割り込まない | if (keydata == 0) { | 
 | return(FALSE); | return(FALSE); | 
 | } | } | 
| subcpu.INT_SW = 0; | key = key & (~0x20);                    // rep | 
| key = keystat_getflag(); | subcpu.keycountrep = 96; | 
| subcpu.Ex[0x06][0] = (UINT8)(key >> 0); |  | 
| subcpu.Ex[0x06][1] = (UINT8)(key >> 8); |  | 
 | } | } | 
 |  | subcpu.Ex[0x06][0] = (UINT8)key; | 
 |  | subcpu.Ex[0x06][1] = keydata; | 
 | subcpu.mode = 0xe6; | subcpu.mode = 0xe6; | 
 | subcpu.cmdcnt = 0; | subcpu.cmdcnt = 0; | 
 | subcpu.datacnt = 2; | subcpu.datacnt = 2; |