Previous 199869 Revisions Next

r17954 Monday 17th September, 2012 at 02:08:58 UTC by Angelo Salese
Further notes, nw
[src/mame/machine]seicop.c

trunk/src/mame/machine/seicop.c
r17953r17954
147714770x1a0  0x00    0x6f
147814780x1c0  0x00    0x71
147914790x1e0  0x00    0x72
1480
14801481*/
14811482
14821483#include "emu.h"
r17953r17954
22272228
22282229            offs = (offset & 3) * 4;
22292230
2230            space->write_dword(cop_register[0] + 4 + offs, space->read_dword(cop_register[0] + 4 + offs) + space->read_dword(cop_register[0] + 16 + offs));
2231            /* TODO: 0x1c operation? */
2232
2233            space->write_dword(cop_register[0] + 0x04 + offs, space->read_dword(cop_register[0] + 0x04 + offs) + space->read_dword(cop_register[0] + 0x10 + offs));
22312234            return;
22322235         }
22332236
r17953r17954
22382241
22392242            offs = (offset & 3) * 4;
22402243
2241            //popmessage("%d %d",space->read_dword(cop_register[0] + 0x2c + 0),space->read_dword(cop_register[0] + 0x2c + 4));
2244            /* read 0x28 + offs */
2245            /* add 0x10 + offs */
2246            /* write 0x10 + offs */
22422247
2243            space->write_dword(cop_register[0] + 16 + offs, space->read_dword(cop_register[0] + 16 + offs) + space->read_dword(cop_register[0] + 0x28 + offs));
2248            space->write_dword(cop_register[0] + 0x10 + offs, space->read_dword(cop_register[0] + 0x10 + offs) + space->read_dword(cop_register[0] + 0x28 + offs));
22442249            return;
22452250         }
22462251
r17953r17954
22692274
22702275            res = int(amp*sin(angle)) << cop_scale;
22712276
2272            space->write_dword(cop_register[0] + 16, res);
2277            space->write_dword(cop_register[0] + 0x10, res);
22732278            return;
22742279         }
22752280
r17953r17954
23212326            //printf("%d %d %f %04x\n",dx,dy,atan(double(dy)/double(dx)) * 128 / M_PI,cop_angle);
23222327
23232328            if(cop_mcu_ram[offset] & 0x80)
2324               space->write_byte(cop_register[0]+(0x34^3), cop_angle);
2329               space->write_word(cop_register[0]+(0x34^2), cop_angle);
23252330            return;
23262331         }
23272332
r17953r17954
23462351            r1 = dx;
23472352
23482353            if(cop_mcu_ram[offset] & 0x80)
2349               space->write_byte(cop_register[0]+(0x34^3), cop_angle);
2354               space->write_word(cop_register[0]+(0x34^2), cop_angle);
23502355            return;
23512356         }
23522357
r17953r17954
23672372            dy = dy >> 16;
23682373            cop_dist = sqrt((double)(dx*dx+dy*dy));
23692374
2370            /* TODO: bit 7 of macro command says if we have to write on work RAM */
2371            space->write_word(cop_register[0]+(0x38^2), cop_dist);
2375            if(cop_mcu_ram[offset] & 0x80)
2376               space->write_word(cop_register[0]+(0x38^2), cop_dist);
23722377            return;
23732378         }
23742379
r17953r17954
25032508            int div;
25042509//              INT16 offs_val;
25052510
2511            /* TODO: [4-7] could be mirrors of [0-3] (this is the only command so far that uses 4-7 actually)*/
2512            /* 0 + [4] */
2513            /* 4 + [5] */
2514            /* 8 + [4] */
2515            /* 4 + [6] */
2516
25062517            //printf("%08x %08x %08x %08x %08x %08x %08x\n",cop_register[0],cop_register[1],cop_register[2],cop_register[3],cop_register[4],cop_register[5],cop_register[6]);
25072518
25082519            offs = (offset & 3) * 4;
r17953r17954
25222533         {
25232534            INT8 cur_angle;
25242535
2536            /* 0 [1] */
2537            /* 0xc [1] */
2538            /* 0 [0] */
2539            /* 0 [1] */
2540            /* 0xc [1] */
2541
25252542            cur_angle = space->read_byte(cop_register[1] + (0xc ^ 3));
25262543            space->write_byte(cop_register[1] + (0^3),space->read_byte(cop_register[1] + (0^3)) & 0xfb); //correct?
25272544

Previous 199869 Revisions Next


© 1997-2024 The MAME Team